diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index bc454ac1..00000000 --- a/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -/dist -/.pnp.cjs -/.pnp.loader.mjs -/.yarn/ diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 2802a161..00000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -module.exports = { - parser: "@typescript-eslint/parser", - - parserOptions: { - ecmaVersion: 2020, - sourceType: "module", - }, - - env: { - browser: true, - }, - - extends: ["plugin:@typescript-eslint/recommended", "plugin:jest/recommended", "plugin:prettier/recommended"], - - plugins: ["@typescript-eslint", "jest"], - - rules: { - // Specify any specific ESLint rules. - }, - - overrides: [ - { - files: ["./*.cjs", "./*.js"], - rules: { - "@typescript-eslint/no-var-requires": "off", - }, - }, - ], -}; diff --git a/.gitea/ISSUE_TEMPLATE/bug_report.yaml b/.gitea/ISSUE_TEMPLATE/bug_report.yaml new file mode 100644 index 00000000..fc0fbaa0 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/bug_report.yaml @@ -0,0 +1,99 @@ +# SPDX-FileCopyrightText: 2023 Johannes Loher +# +# SPDX-License-Identifier: MIT + +name: Bug Report +about: File a bug report +labels: ["bug", "to be confirmed"] +body: + - type: markdown + attributes: + value: | + Your issue may already have been reported! Please search on the [issue tracker](https://git.f3l.de/dungeonslayers/ds4/issues) before submitting a new one. + + Thanks for taking the time to fill out this bug report! In order to make it effective, please provide the following information. + - type: markdown + attributes: + value: | + ## Issue Description + - type: textarea + id: expected + attributes: + label: Expected Behavior + description: What is the behavior that you expected? + validations: + required: true + - type: textarea + id: current + attributes: + label: Current Behavior + description: What is the current behavior, i.e., what happens actually? + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to Reproduce + description: What are the steps to reproduce the problem? + placeholder: | + 1. + 2. + 3. + 4. + validations: + required: true + - type: textarea + id: context + attributes: + label: Context + description: Please provide any additional context that might be helpful, e.g. log messages, screenshots, videos, or exports of problematic scenes or worlds. + validations: + required: false + - type: markdown + attributes: + value: | + ## Environment Details + - type: input + id: version + attributes: + label: Version + description: Which version(s) of DS4 are you seeing the problem on? + validations: + required: true + - type: input + id: foundry-version + attributes: + label: Foundry VTT Version + description: Which version(s) and build of Foundry VTT are you seeing the problem on? + validations: + required: true + - type: input + id: os + attributes: + label: Operating System + description: Which operating system are you using? (Windows, OS X, Linux (which distro)) + placeholder: Windows + validations: + required: true + - type: dropdown + id: browser + attributes: + label: Browser / App + description: Are you using a Browser or the native Electron application? (Select all that apply) + multiple: true + options: + - Native Electron App + - Chrome + - Firefox + - Microsoft Edge + - Safari + - Other + validations: + required: true + - type: input + id: modules + attributes: + label: Relevant Modules + description: Please list any other active modules (including their versions) that you think might be relevant. + validations: + required: false diff --git a/.gitea/ISSUE_TEMPLATE/config.yaml b/.gitea/ISSUE_TEMPLATE/config.yaml new file mode 100644 index 00000000..f1387a8f --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/config.yaml @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2023 Johannes Loher +# +# SPDX-License-Identifier: MIT + +blank_issues_enabled: false diff --git a/.gitea/ISSUE_TEMPLATE/feature_request.yaml b/.gitea/ISSUE_TEMPLATE/feature_request.yaml new file mode 100644 index 00000000..83816387 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/feature_request.yaml @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: 2023 Johannes Loher +# +# SPDX-License-Identifier: MIT + +name: Feature Request +description: Submit a feature request +labels: ["feature"] +body: + - type: markdown + attributes: + value: | + Your issue may already have been reported! Please search on the [issue tracker](https://git.f3l.de/dungeonslayers/ds4/issues) before submitting a new one. + + In order to submit an effective feature request, please provide the following information. + - type: textarea + id: description + attributes: + label: Description + description: Please describe the proposal in as much detail as you feel is necessary. + validations: + required: true + - type: textarea + id: context + attributes: + label: Context + description: Is there anything else you can add about the proposal? You might want to link to related issues here if you haven't already. + validations: + required: false diff --git a/.gitignore b/.gitignore index a45e3fd1..c13ce325 100644 --- a/.gitignore +++ b/.gitignore @@ -25,10 +25,8 @@ dist results.xml junit.xml -# yarn -.yarn/* -!.yarn/releases -!.yarn/plugins -!.yarn/sdks -!.yarn/versions -.pnp.* +# foundry +/client +/common + +.pnpm-store/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 41d69ac4..00000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,175 +0,0 @@ -# SPDX-FileCopyrightText: 2021 Johannes Loher -# SPDX-FileCopyrightText: 2021 Oliver Rümpelein -# -# SPDX-License-Identifier: MIT - -image: node:lts - -stages: - - test - - build - - prepare-release - - release - - publish - -cache: &global_cache - paths: - - .yarn/cache - -lint: - stage: test - before_script: - - yarn install --immutable - script: - - yarn lint - cache: - <<: *global_cache - -test: - stage: test - before_script: - - yarn install --immutable - script: - - yarn test:ci - cache: - <<: *global_cache - artifacts: - when: always - reports: - junit: - - junit.xml - -reuse: - stage: test - image: - name: fsfe/reuse:latest - entrypoint: [""] - script: - - reuse lint - -build: - stage: build - before_script: - - yarn install --immutable - - if [[ ! -z ${CI_COMMIT_TAG+x} ]]; then export NODE_ENV=production; fi - script: - - yarn build - - mv dist ds4 - cache: - <<: *global_cache - artifacts: - paths: - - ds4 - expire_in: 1 week - -publish-artifacts: - stage: prepare-release - image: alpine:latest - before_script: - - apk update - - apk add zip curl - script: | - zip -r ds4.zip ds4/* - curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4.zip "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/ds4.zip" - curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4/system.json "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/system.json" - rules: - - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/' - -changelog: - stage: prepare-release - before_script: - - yarn install --immutable - script: - - yarn changelog - cache: - <<: *global_cache - artifacts: - paths: - - CHANGELOG.md - rules: - - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/' - -.release-template: &release-template - stage: release - before_script: - - yarn install - - apt update - - apt install --yes jq - - REPOSITORY_URL=$(echo "${CI_REPOSITORY_URL}" | sed -e "s|gitlab-ci-token:.*@|${RELEASE_TOKEN}:${RELEASE_TOKEN_SECRET}@|g") - - git remote set-url origin $REPOSITORY_URL - - git config user.name $GITLAB_USER_LOGIN - - git config user.email $GITLAB_USER_EMAIL - - git branch -D ci-processing || true - - git checkout -b ci-processing - cache: - <<: *global_cache - script: | - yarn bump-version --release=${RELEASE_TYPE} - RELEASE_VERSION=$(jq -r '.version' < package.json) - git add package.json system.json - git --no-pager diff - git commit -m "chore(release): ${RELEASE_VERSION}" - git tag -f ${RELEASE_VERSION} - git push origin ci-processing:${CI_BUILD_REF_NAME} -o ci.skip - git push origin ${RELEASE_VERSION} - only: - - master - when: manual - -release-patch: - variables: - RELEASE_TYPE: patch - <<: *release-template - -release-minor: - variables: - RELEASE_TYPE: minor - <<: *release-template - -release-major: - variables: - RELEASE_TYPE: major - <<: *release-template - -release: - stage: release - image: registry.gitlab.com/gitlab-org/release-cli:latest - script: - - echo 'release job' - rules: - - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/' - release: - tag_name: $CI_COMMIT_TAG - description: "./CHANGELOG.md" - assets: - links: - - name: "ds4.zip" - url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/ds4.zip" - filepath: /ds4.zip - link_type: package - - name: "system.json" - url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/system.json" - filepath: /system.json - link_type: other - -publish-latest-manifest: - stage: publish - image: alpine:latest - before_script: - - apk update - - apk add zip curl - script: | - curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4/system.json "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/latest/system.json" - rules: - - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/' - -publish-to-foundry-admin: - stage: publish - image: johannesloher/foundry-publish - variables: - FVTT_MANIFEST_PATH: ds4/system.json - FVTT_MANIFEST_URL: ${CI_PROJECT_URL}/-/releases/${CI_COMMIT_TAG}/downloads/system.json - FVTT_DELETE_OBSOLETE_VERSIONS: "true" - script: foundry-publish - rules: - - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/' diff --git a/.gitlab/issue_templates/Bug Report.md b/.gitlab/issue_templates/Bug Report.md deleted file mode 100644 index f1679a25..00000000 --- a/.gitlab/issue_templates/Bug Report.md +++ /dev/null @@ -1,48 +0,0 @@ -Your issue may already have been reported! Please search on the issue tracker (https://git.f3l.de/dungeonslayers/ds4/-/issues) before submitting a new one. - -Thanks for taking the time to fill out this bug report! In order to make it effective, please provide the following information. - -# Issue Description - -## Expected Behavior - -(What is the behavior that you expected?) - -## Current Behavior - -(What is the current behavior, i.e., what happens actually?) - -## Steps to Reproduce - -(What are the steps to reproduce the problem?) - -1. ... -2. ... -3. ... - -## Context - -(Please provide any additional context that might be helpful, e.g. log messages, -screenshots, videos, or exports of problematic scenes or worlds.) - -# Environment Details - -## Version - -(Which version(s) of DS4 are you seeing the problem on?) - -## Foundry VTT Version - -(Which version(s) and build of Foundry VTT are you seeing the problem on?) - -## Operating System - -(Which operating system are you using? (Windows, OS X, Linux (which distro))) - -## Browser / App - -(Are you using a Browser or the native Electron application?) - -## Relevant Modules - -(Please list any active modules (including their versions) that you think might be relevant.) diff --git a/.gitlab/issue_templates/Feature Request.md b/.gitlab/issue_templates/Feature Request.md deleted file mode 100644 index 988264df..00000000 --- a/.gitlab/issue_templates/Feature Request.md +++ /dev/null @@ -1,11 +0,0 @@ -Your issue may already have been reported! Please search on the issue tracker (https://git.f3l.de/dungeonslayers/ds4/-/issues) before submitting a new one. - -In order to submit an effective feature request, please provide the following information. - -# Description - -(Please describe the proposal in as much detail as you feel is necessary.) - -# Context - -(Is there anything else you can add about the proposal? You might want to link to related issues here if you haven't already.) diff --git a/.gitlab/issue_templates/Feature Request.md.license b/.gitlab/issue_templates/Feature Request.md.license deleted file mode 100644 index caa655b8..00000000 --- a/.gitlab/issue_templates/Feature Request.md.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2022 Johannes Loher - -SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/.husky/.gitignore b/.husky/.gitignore deleted file mode 100644 index 31354ec1..00000000 --- a/.husky/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_ diff --git a/.husky/commit-msg b/.husky/commit-msg deleted file mode 100755 index 62fc16a9..00000000 --- a/.husky/commit-msg +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -# SPDX-FileCopyrightText: 2021 Johannes Loher -# -# SPDX-License-Identifier: MIT - -. "$(dirname "$0")/_/husky.sh" - -yarn run commitlint --edit "$1" diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100755 index c7f9668d..00000000 --- a/.husky/pre-commit +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -# SPDX-FileCopyrightText: 2021 Johannes Loher -# -# SPDX-License-Identifier: MIT - -. "$(dirname "$0")/_/husky.sh" - -yarn run lint-staged diff --git a/.nvmrc b/.nvmrc index b009dfb9..2bd5a0a9 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -lts/* +22 diff --git a/.prettierignore b/.prettierignore index 79cc5081..3c545cf4 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,11 @@ +# SPDX-FileCopyrightText: 2021 Johannes Loher +# +# SPDX-License-Identifier: MIT + /dist /package-lock.json -/.pnp.cjs -/.pnp.loader.mjs -/.yarn/ +/node_modules/ /.vscode/ +client +common +pnpm-lock.yaml diff --git a/.prettierignore.license b/.prettierignore.license deleted file mode 100644 index 31803f36..00000000 --- a/.prettierignore.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/.prettierrc.cjs b/.prettierrc.cjs deleted file mode 100644 index 2efcc32b..00000000 --- a/.prettierrc.cjs +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -module.exports = { - semi: true, - trailingComma: "all", - singleQuote: false, - printWidth: 120, - tabWidth: 4, -}; diff --git a/.reuse/dep5 b/.reuse/dep5 deleted file mode 100644 index 5e96de05..00000000 --- a/.reuse/dep5 +++ /dev/null @@ -1,52 +0,0 @@ -Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: ds4 -Upstream-Contact: Johannes Loher -Source: https://git.f3l.de/dungeonslayers/ds4 - -Files: .yarn/** -Copyright: Copyright (c) 2016-present, Yarn Contributors. All rights reserved. -License: BSD-2-Clause - -Files: assets/icons/official/* -Copyright: 2021 Johannes Loher -License: CC-BY-NC-SA-4.0 - -Files: assets/icons/game-icons/caro-asercion/* -Copyright: Caro Asercion -License: CC-BY-3.0 - -Files: assets/icons/game-icons/cathelineau/* -Copyright: Cathelineau -License: CC-BY-3.0 - -Files: assets/icons/game-icons/darkzaitev/* -Copyright: DarkZaitzev, http://darkzaitzev.deviantart.com/ -License: CC-BY-3.0 - -Files: assets/icons/game-icons/delapouite/* -Copyright: Delapouite, https://delapouite.com/ -License: CC-BY-3.0 - -Files: assets/icons/game-icons/heavenly-dog/* -Copyright: HeavenlyDog, http://www.gnomosygoblins.blogspot.com/ -License: CC-BY-3.0 - -Files: assets/icons/game-icons/lorc/* -Copyright: Lorc, http://lorcblog.blogspot.com/ -License: CC-BY-3.0 - -Files: assets/icons/game-icons/sbed/* -Copyright: Sbed, http://opengameart.org/content/95-game-icons -License: CC-BY-3.0 - -Files: assets/icons/game-icons/skoll/* -Copyright: Skoll -License: CC-BY-3.0 - -Files: assets/icons/game-icons/willdabeast/* -Copyright: Willdabeast, http://wjbstories.blogspot.com/ -License: CC-BY-3.0 - -Files: assets/tokens/devin-night/* -Copyright: Devin Night, https://immortalnights.com/ -License: LicenseRef-DevinNightTokenUsageRights diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 73bdf9f9..2d0f12b4 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,6 +2,5 @@ "recommendations": [ "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", - "arcanis.vscode-zipfs" ] -} +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 9371697e..370f6fec 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,12 +5,14 @@ "version": "0.2.0", "configurations": [ { - "type": "pwa-chrome", + "type": "chrome", "request": "launch", "runtimeExecutable": "/usr/bin/chromium", "name": "Launch Chrome against localhost", "url": "http://localhost:30000/game", - "webRoot": "${workspaceFolder}/dist" + "pathMapping": { + "/systems/ds4": "${workspaceFolder}/dist" + } } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 62787842..bb762981 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,10 +1,20 @@ { - "search.exclude": { - "**/.yarn": true, - "**/.pnp.*": true + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true, + "eslint.useFlatConfig": true, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[yaml]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" }, - "eslint.nodePath": ".yarn/sdks", - "prettier.prettierPath": ".yarn/sdks/prettier/index.js", - "typescript.tsdk": ".yarn/sdks/typescript/lib", - "typescript.enablePromptUseWorkspaceTsdk": true } diff --git a/.woodpecker/checks.yaml b/.woodpecker/checks.yaml new file mode 100644 index 00000000..bf3e1cdf --- /dev/null +++ b/.woodpecker/checks.yaml @@ -0,0 +1,70 @@ +# SPDX-FileCopyrightText: 2023 Johannes Loher +# +# SPDX-License-Identifier: MIT + +$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json + +variables: + - &node_image node:22 + - &enable_pnpm + - corepack enable + - corepack prepare pnpm@latest --activate + +when: + - event: push + branch: ${CI_REPO_DEFAULT_BRANCH} + - event: pull_request + - event: tag + - event: manual + +steps: + install: + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm install --frozen-lockfile + lint: + depends_on: install + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm lint + formatcheck: + depends_on: install + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm format:check + typecheck: + depends_on: install + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm typecheck + test: + depends_on: install + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm test + reuse: + depends_on: install + image: fsfe/reuse:latest + commands: + - reuse lint + commitlint: + depends_on: install + image: *node_image + commands: + - <<: *enable_pnpm + - git fetch origin ${CI_COMMIT_TARGET_BRANCH} + - pnpm exec commitlint --from origin/${CI_COMMIT_TARGET_BRANCH} + when: + event: pull_request + build: + depends_on: [lint, formatcheck, typecheck, test, reuse] + image: *node_image + commands: + - export APPDATA=$(pwd) + - <<: *enable_pnpm + - pnpm build diff --git a/.woodpecker/publish.yaml b/.woodpecker/publish.yaml new file mode 100644 index 00000000..5cdef92e --- /dev/null +++ b/.woodpecker/publish.yaml @@ -0,0 +1,132 @@ +# SPDX-FileCopyrightText: 2023 Johannes Loher +# +# SPDX-License-Identifier: MIT + +$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json + +variables: + - &node_image node:22 + - &enable_pnpm + - corepack enable + - corepack prepare pnpm@latest --activate + - &is_latest_channel + evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$" + - &is_beta_channel + evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+-[0-9]+$" + - &release_plugin woodpeckerci/plugin-gitea-release + - &release_base_settings + base_url: ${CI_FORGE_URL} + title: ${CI_COMMIT_TAG} + note: CHANGELOG.md + files: + - ${CI_REPO_NAME}.zip + - ${CI_REPO_NAME}/system.json + api_key: + from_secret: forge_token + - &publish_manifest_base + image: alpine:latest + environment: + FORGE_TOKEN: + from_secret: forge_token + commands: + - apk update + - apk add curl + - export RELEASE_CHANNEL=$(cat .RELEASE_CHANNEL) + - 'curl --header "Authorization: token $${FORGE_TOKEN}" -X "DELETE" "${CI_FORGE_URL}/api/packages/${CI_REPO_OWNER}/generic/${CI_REPO_NAME}/$${RELEASE_CHANNEL}/system.json"' + - 'curl --fail --header "Authorization: token $${FORGE_TOKEN}" --upload-file ${CI_REPO_NAME}/system.json "${CI_FORGE_URL}/api/packages/${CI_REPO_OWNER}/generic/${CI_REPO_NAME}/$${RELEASE_CHANNEL}/system.json"' + +when: + event: tag + evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+(-[0-9]+)?$" + +depends_on: + - checks + +steps: + install: + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm install --frozen-lockfile + build: + depends_on: install + image: *node_image + environment: + NODE_ENV: production + commands: + - export APPDATA=$(pwd) + - <<: *enable_pnpm + - pnpm build + package: + depends_on: build + image: alpine:latest + commands: + - apk update + - apk add zip curl + - mv dist ${CI_REPO_NAME} + - zip -r ${CI_REPO_NAME}.zip ${CI_REPO_NAME}/* + changelog: + depends_on: build + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm changelog + choose-latest-channel: + depends_on: build + image: alpine:latest + commands: + - echo latest > .RELEASE_CHANNEL + when: + <<: *is_latest_channel + choose-beta-channel: + depends_on: build + image: alpine:latest + commands: + - echo beta > .RELEASE_CHANNEL + when: + <<: *is_beta_channel + release-latest: + depends_on: + - package + - changelog + - choose-latest-channel + image: *release_plugin + settings: + <<: *release_base_settings + when: + <<: *is_latest_channel + release-beta: + depends_on: + - package + - changelog + - choose-beta-channel + image: *release_plugin + settings: + <<: *release_base_settings + prerelease: true + when: + <<: *is_beta_channel + publish-manifest-latest: + <<: *publish_manifest_base + depends_on: release-latest + when: + <<: *is_latest_channel + publish-manifest-beta: + <<: *publish_manifest_base + depends_on: release-beta + when: + <<: *is_beta_channel + publish-to-foundry-admin: + depends_on: release-latest + image: johannesloher/foundry-publish:v4.0.0 + environment: + FVTT_PACKAGE_ID: + from_secret: fvtt_package_id + FVTT_TOKEN: + from_secret: fvtt_token + commands: + - export FVTT_MANIFEST_PATH=${CI_REPO_NAME}/system.json + - export FVTT_MANIFEST_URL=${CI_REPO_URL}/releases/download/${CI_COMMIT_TAG}/system.json + - foundry-publish + when: + <<: *is_latest_channel diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml new file mode 100644 index 00000000..17966857 --- /dev/null +++ b/.woodpecker/release.yaml @@ -0,0 +1,49 @@ +# SPDX-FileCopyrightText: 2023 Johannes Loher +# +# SPDX-License-Identifier: MIT + +$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json + +variables: + - &node_image node:22 + - &enable_pnpm + - corepack enable + - corepack prepare pnpm@latest --activate + +when: + event: manual + branch: ${CI_REPO_DEFAULT_BRANCH} + +depends_on: + - checks + +steps: + install: + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm install --frozen-lockfile + release: + image: *node_image + environment: + FORGE_TOKEN_NAME: + from_secret: forge_token_name + FORGE_TOKEN: + from_secret: forge_token + commands: + - <<: *enable_pnpm + - apt-get update + - apt-get install --yes jq + - export REPOSITORY_URL=$(echo "${CI_REPO_CLONE_URL}" | sed -e "s|://|://$${FORGE_TOKEN_NAME}:$${FORGE_TOKEN}@|g") + - git remote set-url origin $${REPOSITORY_URL} + - git config user.name woodpecker[bot] + - git config user.email woodpecker[bot]@${CI_SYSTEM_HOST} + - pnpm bump-version --release=${RELEASE_TYPE} + - pnpm exec prettier --write package.json system.json + - export RELEASE_VERSION=$(jq -r '.version' < package.json) + - git --no-pager diff + - git add package.json system.json + - 'git commit -m "chore(release): $${RELEASE_VERSION}"' + - git tag -f $${RELEASE_VERSION} + - git push origin ${CI_COMMIT_BRANCH} + - git push origin $${RELEASE_VERSION} diff --git a/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs b/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs deleted file mode 100644 index e64e6dda..00000000 --- a/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs +++ /dev/null @@ -1,77 +0,0 @@ -/* eslint-disable */ -module.exports = { -name: "@yarnpkg/plugin-interactive-tools", -factory: function (require) { -var plugin;plugin=(()=>{var __webpack_modules__={7560:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>K});function r(e,t,n,r){var i,o=arguments.length,u=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)u=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(u=(o<3?i(u):o>3?i(t,n,u):i(t,n))||u);return o>3&&u&&Object.defineProperty(t,n,u),u}const i=require("@yarnpkg/cli"),o=require("@yarnpkg/core");var u=n(9245),a=n(7382);const l=(0,a.memo)(({active:e})=>{const t=(0,a.useMemo)(()=>e?"◉":"◯",[e]),n=(0,a.useMemo)(()=>e?"green":"yellow",[e]);return a.createElement(u.Text,{color:n},t)});function s({active:e},t,n){const{stdin:r}=(0,u.useStdin)(),i=(0,a.useCallback)((e,n)=>t(e,n),n);(0,a.useEffect)(()=>{if(e&&r)return r.on("keypress",i),()=>{r.off("keypress",i)}},[e,i,r])}var c;!function(e){e.BEFORE="before",e.AFTER="after"}(c||(c={}));const f=function(e,t,{active:n,minus:r,plus:i,set:o,loop:u=!0}){s({active:n},(n,a)=>{const l=t.indexOf(e);switch(a.name){case r:{const e=l-1;if(u)return void o(t[(t.length+e)%t.length]);if(e<0)return;o(t[e])}break;case i:{const e=l+1;if(u)return void o(t[e%t.length]);if(e>=t.length)return;o(t[e])}}},[t,e,i,o,u])},d=({active:e=!0,children:t=[],radius:n=10,size:r=1,loop:i=!0,onFocusRequest:o,willReachEnd:l})=>{const d=a.Children.map(t,e=>(e=>{if(null===e.key)throw new Error("Expected all children to have a key");return e.key})(e)),p=d[0],[h,v]=(0,a.useState)(p),m=d.indexOf(h);(0,a.useEffect)(()=>{d.includes(h)||v(p)},[t]),(0,a.useEffect)(()=>{l&&m>=d.length-2&&l()},[m]),function({active:e},t,n){s({active:e},(e,n)=>{"tab"===n.name&&(n.shift?t(c.BEFORE):t(c.AFTER))},n)}({active:e&&!!o},e=>{null==o||o(e)},[o]),f(h,d,{active:e,minus:"up",plus:"down",set:v,loop:i});let g=m-n,y=m+n;y>d.length&&(g-=y-d.length,y=d.length),g<0&&(y+=-g,g=0),y>=d.length&&(y=d.length-1);const _=[];for(let n=g;n<=y;++n){const i=d[n],o=e&&i===h;_.push(a.createElement(u.Box,{key:i,height:r},a.createElement(u.Box,{marginLeft:1,marginRight:1},a.createElement(u.Text,null,o?a.createElement(u.Text,{color:"cyan",bold:!0},">"):" ")),a.createElement(u.Box,null,a.cloneElement(t[n],{active:o}))))}return a.createElement(u.Box,{flexDirection:"column",width:"100%"},_)},p=require("readline"),h=a.createContext(null),v=({children:e})=>{const{stdin:t,setRawMode:n}=(0,u.useStdin)();(0,a.useEffect)(()=>{n&&n(!0),t&&(0,p.emitKeypressEvents)(t)},[t,n]);const[r,i]=(0,a.useState)(new Map),o=(0,a.useMemo)(()=>({getAll:()=>r,get:e=>r.get(e),set:(e,t)=>i(new Map([...r,[e,t]]))}),[r,i]);return a.createElement(h.Provider,{value:o,children:e})};function m(e,t){const n=(0,a.useContext)(h);if(null===n)throw new Error("Expected this hook to run with a ministore context attached");if(void 0===e)return n.getAll();const r=(0,a.useCallback)(t=>{n.set(e,t)},[e,n.set]);let i=n.get(e);return void 0===i&&(i=t),[i,r]}async function g(e,t){let n;const{waitUntilExit:r}=(0,u.render)(a.createElement(v,null,a.createElement(e,Object.assign({},t,{useSubmit:e=>{const{exit:t}=(0,u.useApp)();s({active:!0},(r,i)=>{"return"===i.name&&(n=e,t())},[t,e])}}))));return await r(),n}const y=require("clipanion");var _=n(7840),b=n(4410);const w={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},E=n.n(b)()(w.appId,w.apiKey).initIndex(w.indexName),D=async(e,t=0)=>await E.search(e,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:t,hitsPerPage:10}),S=["regular","dev","peer"];class C extends i.BaseCommand{async execute(){const e=await o.Configuration.find(this.context.cwd,this.context.plugins),t=()=>a.createElement(u.Box,{flexDirection:"row"},a.createElement(u.Box,{flexDirection:"column",width:48},a.createElement(u.Box,null,a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},""),"/",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to move between packages.")),a.createElement(u.Box,null,a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to select a package.")),a.createElement(u.Box,null,a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," again to change the target."))),a.createElement(u.Box,{flexDirection:"column"},a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to install the selected packages.")),a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to abort.")))),n=()=>a.createElement(a.Fragment,null,a.createElement(u.Box,{width:15},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Owner")),a.createElement(u.Box,{width:11},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Version")),a.createElement(u.Box,{width:10},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Downloads"))),r=()=>a.createElement(u.Box,{width:17},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Target")),i=({hit:t,active:n})=>{const[r,i]=m(t.name,null);s({active:n},(e,t)=>{if("space"!==t.name)return;if(!r)return void i(S[0]);const n=S.indexOf(r)+1;n===S.length?i(null):i(S[n])},[r,i]);const l=o.structUtils.parseIdent(t.name),c=o.structUtils.prettyIdent(e,l);return a.createElement(u.Box,null,a.createElement(u.Box,{width:45},a.createElement(u.Text,{bold:!0,wrap:"wrap"},c)),a.createElement(u.Box,{width:14,marginLeft:1},a.createElement(u.Text,{bold:!0,wrap:"truncate"},t.owner.name)),a.createElement(u.Box,{width:10,marginLeft:1},a.createElement(u.Text,{italic:!0,wrap:"truncate"},t.version)),a.createElement(u.Box,{width:16,marginLeft:1},a.createElement(u.Text,null,t.humanDownloadsLast30Days)))},c=({name:t,active:n})=>{const[r]=m(t,null),i=o.structUtils.parseIdent(t);return a.createElement(u.Box,null,a.createElement(u.Box,{width:47},a.createElement(u.Text,{bold:!0}," - ",o.structUtils.prettyIdent(e,i))),S.map(e=>a.createElement(u.Box,{key:e,width:14,marginLeft:1},a.createElement(u.Text,null," ",a.createElement(l,{active:r===e})," ",a.createElement(u.Text,{bold:!0},e)))))},f=()=>a.createElement(u.Box,{marginTop:1},a.createElement(u.Text,null,"Powered by Algolia.")),p=await g(({useSubmit:e})=>{const o=m();e(o);const l=Array.from(o.keys()).filter(e=>null!==o.get(e)),[s,p]=(0,a.useState)(""),[h,v]=(0,a.useState)(0),[g,y]=(0,a.useState)([]);return(0,a.useEffect)(()=>{s?(async()=>{v(0);const e=await D(s);e.query===s&&y(e.hits)})():y([])},[s]),a.createElement(u.Box,{flexDirection:"column"},a.createElement(t,null),a.createElement(u.Box,{flexDirection:"row",marginTop:1},a.createElement(u.Text,{bold:!0},"Search: "),a.createElement(u.Box,{width:41},a.createElement(_.ZP,{value:s,onChange:e=>{e.match(/\t| /)||p(e)},placeholder:"i.e. babel, webpack, react...",showCursor:!1})),a.createElement(n,null)),g.length?a.createElement(d,{radius:2,loop:!1,children:g.map(e=>a.createElement(i,{key:e.name,hit:e,active:!1})),willReachEnd:async()=>{const e=await D(s,h+1);e.query===s&&e.page-1===h&&(v(e.page),y([...g,...e.hits]))}}):a.createElement(u.Text,{color:"gray"},"Start typing..."),a.createElement(u.Box,{flexDirection:"row",marginTop:1},a.createElement(u.Box,{width:49},a.createElement(u.Text,{bold:!0},"Selected:")),a.createElement(r,null)),l.length?l.map(e=>a.createElement(c,{key:e,name:e,active:!1})):a.createElement(u.Text,{color:"gray"},"No selected packages..."),a.createElement(f,null))},{});if(void 0===p)return 1;const h=Array.from(p.keys()).filter(e=>"regular"===p.get(e)),v=Array.from(p.keys()).filter(e=>"dev"===p.get(e)),y=Array.from(p.keys()).filter(e=>"peer"===p.get(e));return h.length&&await this.cli.run(["add",...h]),v.length&&await this.cli.run(["add","--dev",...v]),y&&await this.cli.run(["add","--peer",...y]),0}}C.usage=y.Command.Usage({category:"Interactive commands",description:"open the search interface",details:"\n This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry.\n ",examples:[["Open the search window","yarn search"]]}),r([y.Command.Path("search")],C.prototype,"execute",null);var k=n(5882),T=n.n(k);const x=({length:e,active:t})=>{if(0===e)return null;const n=e>1?" "+T().underline(" ".repeat(e-1)):" ";return a.createElement(u.Text,{dimColor:!t},n)},A=function({active:e,skewer:t,options:n,value:r,onChange:i,sizes:o=[]}){const s=n.map(({value:e})=>e),c=s.indexOf(r);return f(r,s,{active:e,minus:"left",plus:"right",set:i}),a.createElement(a.Fragment,null,n.map(({label:n},r)=>{const i=r===c,s=o[r]-1||0,f=n.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),d=Math.max(0,s-f.length-2);return a.createElement(u.Box,{key:n,width:s,marginLeft:1},a.createElement(u.Text,{wrap:"truncate"},a.createElement(l,{active:i})," ",n),t?a.createElement(x,{active:e,length:d}):null)}))},O=require("@yarnpkg/plugin-essentials");function P(){}function I(e,t,n,r,i){for(var o=0,u=t.length,a=0,l=0;oe.length?n:e})),s.value=e.join(f)}else s.value=e.join(n.slice(a,a+s.count));a+=s.count,s.added||(l+=s.count)}}var d=t[u-1];return u>1&&"string"==typeof d.value&&(d.added||d.removed)&&e.equals("",d.value)&&(t[u-2].value+=d.value,t.pop()),t}function N(e){return{newPos:e.newPos,components:e.components.slice(0)}}P.prototype={diff:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.callback;"function"==typeof n&&(r=n,n={}),this.options=n;var i=this;function o(e){return r?(setTimeout((function(){r(void 0,e)}),0),!0):e}e=this.castInput(e),t=this.castInput(t),e=this.removeEmpty(this.tokenize(e));var u=(t=this.removeEmpty(this.tokenize(t))).length,a=e.length,l=1,s=u+a,c=[{newPos:-1,components:[]}],f=this.extractCommon(c[0],t,e,0);if(c[0].newPos+1>=u&&f+1>=a)return o([{value:this.join(t),count:t.length}]);function d(){for(var n=-1*l;n<=l;n+=2){var r=void 0,s=c[n-1],f=c[n+1],d=(f?f.newPos:0)-n;s&&(c[n-1]=void 0);var p=s&&s.newPos+1=u&&d+1>=a)return o(I(i,r.components,t,e,i.useLongestToken));c[n]=r}else c[n]=void 0}l++}if(r)!function e(){setTimeout((function(){if(l>s)return r();d()||e()}),0)}();else for(;l<=s;){var p=d();if(p)return p}},pushComponent:function(e,t,n){var r=e[e.length-1];r&&r.added===t&&r.removed===n?e[e.length-1]={count:r.count+1,added:t,removed:n}:e.push({count:1,added:t,removed:n})},extractCommon:function(e,t,n,r){for(var i=t.length,o=n.length,u=e.newPos,a=u-r,l=0;u+1=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/;class Y extends i.BaseCommand{async execute(){const e=await o.Configuration.find(this.context.cwd,this.context.plugins),{project:t,workspace:n}=await o.Project.find(e,this.context.cwd),r=await o.Cache.find(e);if(!n)throw new i.WorkspaceRequiredError(t.cwd,this.context.cwd);const l=(t,n)=>{const r=(i=t,u=n,a=M(a,{ignoreWhitespace:!0}),L.diff(i,u,a));var i,u,a;let l="";for(const t of r)t.added?l+=o.formatUtils.pretty(e,t.value,"green"):t.removed||(l+=t.value);return l},s=(t,n)=>{if(t===n)return n;const r=o.structUtils.parseRange(t),i=o.structUtils.parseRange(n),u=r.selector.match($),a=i.selector.match($);if(!u||!a)return l(t,n);const s=["gray","red","yellow","green","magenta"];let c=null,f="";for(let t=1;t{const u=await O.suggestUtils.fetchDescriptorFrom(e,o,{project:t,cache:r,preserveModifier:i,workspace:n});return null!==u?u.range:e.range},f=()=>a.createElement(u.Box,{flexDirection:"row"},a.createElement(u.Box,{flexDirection:"column",width:49},a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},""),"/",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to select packages.")),a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},""),"/",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to select versions."))),a.createElement(u.Box,{flexDirection:"column"},a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to install.")),a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to abort.")))),p=()=>a.createElement(u.Box,{flexDirection:"row",paddingTop:1,paddingBottom:1},a.createElement(u.Box,{width:50},a.createElement(u.Text,{bold:!0},a.createElement(u.Text,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),a.createElement(u.Box,{width:17},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Current")),a.createElement(u.Box,{width:17},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Range")),a.createElement(u.Box,{width:17},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Latest"))),h=({active:t,descriptor:n,suggestions:r})=>{const[i,l]=m(n.descriptorHash,null),s=o.structUtils.stringifyIdent(n),c=Math.max(0,45-s.length);return a.createElement(a.Fragment,null,a.createElement(u.Box,null,a.createElement(u.Box,{width:45},a.createElement(u.Text,{bold:!0},o.structUtils.prettyIdent(e,n)),a.createElement(x,{active:t,length:c})),null!==r?a.createElement(A,{active:t,options:r,value:i,skewer:!0,onChange:l,sizes:[17,17,17]}):a.createElement(u.Box,{marginLeft:2},a.createElement(u.Text,{color:"gray"},"Fetching suggestions..."))))},v=({dependencies:e})=>{const[t,n]=(0,a.useState)(null),r=(0,a.useRef)(!0);return(0,a.useEffect)(()=>()=>{r.current=!1}),(0,a.useEffect)(()=>{Promise.all(e.map(e=>(async e=>{const t=G().valid(e.range)?"^"+e.range:e.range,[n,r]=await Promise.all([c(e,e.range,t).catch(()=>null),c(e,e.range,"latest").catch(()=>null)]),i=[{value:null,label:e.range}];return n&&n!==e.range&&i.push({value:n,label:s(e.range,n)}),r&&r!==n&&r!==e.range&&i.push({value:r,label:s(e.range,r)}),i})(e))).then(t=>{const i=e.map((e,n)=>[e,t[n]]).filter(([e,t])=>t.length>1);r.current&&n(i)})},[]),t?t.length?a.createElement(d,{radius:10,children:t.map(([e,t])=>a.createElement(h,{key:e.descriptorHash,active:!1,descriptor:e,suggestions:t}))}):a.createElement(u.Text,null,"No upgrades found"):a.createElement(u.Text,null,"Fetching suggestions...")},y=await g(({useSubmit:e})=>{e(m());const n=new Map;for(const e of t.workspaces)for(const r of["dependencies","devDependencies"])for(const i of e.manifest[r].values())null===t.tryWorkspaceByDescriptor(i)&&n.set(i.descriptorHash,i);const r=o.miscUtils.sortMap(n.values(),e=>o.structUtils.stringifyDescriptor(e));return a.createElement(u.Box,{flexDirection:"column"},a.createElement(f,null),a.createElement(p,null),a.createElement(v,{dependencies:r}))},{});if(void 0===y)return 1;let _=!1;for(const e of t.workspaces)for(const t of["dependencies","devDependencies"]){const n=e.manifest[t];for(const e of n.values()){const t=y.get(e.descriptorHash);null!=t&&(n.set(e.identHash,o.structUtils.makeDescriptor(e,t)),_=!0)}}if(!_)return 0;return(await o.StreamReport.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async e=>{await t.install({cache:r,report:e})})).exitCode()}}Y.usage=y.Command.Usage({category:"Interactive commands",description:"open the upgrade interface",details:"\n This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.\n ",examples:[["Open the upgrade window","yarn upgrade-interactive"]]}),r([y.Command.Path("upgrade-interactive")],Y.prototype,"execute",null);const K={commands:[C,Y]}},7840:(e,t,n)=>{"use strict";const r=n(7382),i=n(7382),o=n(9245),u=n(1525),a=({value:e,placeholder:t="",focus:n=!0,mask:a,highlightPastedText:l=!1,showCursor:s=!0,onChange:c,onSubmit:f})=>{const[{cursorOffset:d,cursorWidth:p},h]=i.useState({cursorOffset:(e||"").length,cursorWidth:0});i.useEffect(()=>{h(t=>{if(!n||!s)return t;const r=e||"";return t.cursorOffset>r.length-1?{cursorOffset:r.length,cursorWidth:0}:t})},[e,n,s]);const v=l?p:0,m=a?a.repeat(e.length):e;let g=m,y=t?u.grey(t):void 0;if(s&&n){y=t.length>0?u.inverse(t[0])+u.grey(t.slice(1)):u.inverse(" "),g=m.length>0?"":u.inverse(" ");let e=0;for(const t of m)g+=e>=d-v&&e<=d?u.inverse(t):t,e++;m.length>0&&d===m.length&&(g+=u.inverse(" "))}return o.useInput((t,n)=>{if(n.upArrow||n.downArrow||n.ctrl&&"c"===t||n.tab||n.shift&&n.tab)return;if(n.return)return void(f&&f(e));let r=d,i=e,o=0;n.leftArrow?s&&r--:n.rightArrow?s&&r++:n.backspace||n.delete?d>0&&(i=e.slice(0,d-1)+e.slice(d,e.length),r--):(i=e.slice(0,d)+t+e.slice(d,e.length),r+=t.length,t.length>1&&(o=t.length)),d<0&&(r=0),d>e.length&&(r=e.length),h({cursorOffset:r,cursorWidth:o}),i!==e&&c(i)},{isActive:n}),r.createElement(o.Text,null,t?m.length>0?g:y:g)};t.ZP=a},9902:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(1525)),o=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,u=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,a=(e,t)=>"foreground"===t?e:"bg"+e[0].toUpperCase()+e.slice(1);t.default=(e,t,n)=>{if(!t)return e;if(t in i.default){const r=a(t,n);return i.default[r](e)}if(t.startsWith("#")){const r=a("hex",n);return i.default[r](t)(e)}if(t.startsWith("ansi")){const r=u.exec(t);if(!r)return e;const o=a(r[1],n),l=Number(r[2]);return i.default[o](l)(e)}if(t.startsWith("rgb")||t.startsWith("hsl")||t.startsWith("hsv")||t.startsWith("hwb")){const r=o.exec(t);if(!r)return e;const u=a(r[1],n),l=Number(r[2]),s=Number(r[3]),c=Number(r[4]);return i.default[u](l,s,c)(e)}return e}},2773:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=o(n(7382)),l=u(n(1696)),s=u(n(5512)),c=u(n(1489)),f=u(n(6834)),d=u(n(5001)),p=u(n(2560)),h=u(n(9052));class v extends a.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{const{stdin:t}=this.props;if(!this.isRawModeSupported())throw t===process.stdin?new Error("Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported"):new Error("Raw mode is not supported on the stdin provided to Ink.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported");if(t.setEncoding("utf8"),e)return 0===this.rawModeEnabledCount&&(t.addListener("data",this.handleInput),t.resume(),t.setRawMode(!0)),void this.rawModeEnabledCount++;0==--this.rawModeEnabledCount&&(t.setRawMode(!1),t.removeListener("data",this.handleInput),t.pause())},this.handleInput=e=>{""===e&&this.props.exitOnCtrlC&&this.handleExit(),""===e&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&("\t"===e&&this.focusNext(),""===e&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focusNext=()=>{this.setState(e=>{const t=e.focusables[0].id;return{activeFocusId:this.findNextFocusable(e)||t}})},this.focusPrevious=()=>{this.setState(e=>{const t=e.focusables[e.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(e)||t}})},this.addFocusable=(e,{autoFocus:t})=>{this.setState(n=>{let r=n.activeFocusId;return!r&&t&&(r=e),{activeFocusId:r,focusables:[...n.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(t=>({activeFocusId:t.activeFocusId===e?void 0:t.activeFocusId,focusables:t.focusables.filter(t=>t.id!==e)}))},this.activateFocusable=e=>{this.setState(t=>({focusables:t.focusables.map(t=>t.id!==e?t:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(t=>({activeFocusId:t.activeFocusId===e?void 0:t.activeFocusId,focusables:t.focusables.map(t=>t.id!==e?t:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{for(let t=e.focusables.findIndex(t=>t.id===e.activeFocusId)+1;t{for(let t=e.focusables.findIndex(t=>t.id===e.activeFocusId)-1;t>=0;t--)if(e.focusables[t].isActive)return e.focusables[t].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return a.default.createElement(s.default.Provider,{value:{exit:this.handleExit}},a.default.createElement(c.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},a.default.createElement(f.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},a.default.createElement(d.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},a.default.createElement(p.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious}},this.state.error?a.default.createElement(h.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){l.default.hide(this.props.stdout)}componentWillUnmount(){l.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}}t.default=v,v.displayName="InternalApp"},5512:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7382).createContext({exit:()=>{}});r.displayName="InternalAppContext",t.default=r},5277:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},u=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{var{children:n}=e,r=u(e,["children"]);const i=Object.assign(Object.assign({},r),{marginLeft:r.marginLeft||r.marginX||r.margin||0,marginRight:r.marginRight||r.marginX||r.margin||0,marginTop:r.marginTop||r.marginY||r.margin||0,marginBottom:r.marginBottom||r.marginY||r.margin||0,paddingLeft:r.paddingLeft||r.paddingX||r.padding||0,paddingRight:r.paddingRight||r.paddingX||r.padding||0,paddingTop:r.paddingTop||r.paddingY||r.padding||0,paddingBottom:r.paddingBottom||r.paddingY||r.padding||0});return a.default.createElement("ink-box",{ref:t,style:i},n)});l.displayName="Box",l.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1},t.default=l},9052:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=o(n(5747)),l=u(n(7382)),s=u(n(9796)),c=u(n(9908)),f=u(n(5277)),d=u(n(9146)),p=new s.default({cwd:process.cwd(),internals:s.default.nodeInternals()});t.default=({error:e})=>{const t=e.stack?e.stack.split("\n").slice(1):void 0,n=t?p.parseLine(t[0]):void 0;let r,i=0;if((null==n?void 0:n.file)&&(null==n?void 0:n.line)&&a.existsSync(n.file)){const e=a.readFileSync(n.file,"utf8");if(r=c.default(e,n.line),r)for(const{line:e}of r)i=Math.max(i,String(e).length)}return l.default.createElement(f.default,{flexDirection:"column",padding:1},l.default.createElement(f.default,null,l.default.createElement(d.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),l.default.createElement(d.default,null," ",e.message)),n&&l.default.createElement(f.default,{marginTop:1},l.default.createElement(d.default,{dimColor:!0},n.file,":",n.line,":",n.column)),n&&r&&l.default.createElement(f.default,{marginTop:1,flexDirection:"column"},r.map(({line:e,value:t})=>l.default.createElement(f.default,{key:e},l.default.createElement(f.default,{width:i+1},l.default.createElement(d.default,{dimColor:e!==n.line,backgroundColor:e===n.line?"red":void 0,color:e===n.line?"white":void 0},String(e).padStart(i," "),":")),l.default.createElement(d.default,{key:e,backgroundColor:e===n.line?"red":void 0,color:e===n.line?"white":void 0}," "+t)))),e.stack&&l.default.createElement(f.default,{marginTop:1,flexDirection:"column"},e.stack.split("\n").slice(1).map(e=>{const t=p.parseLine(e);return t?l.default.createElement(f.default,{key:e},l.default.createElement(d.default,{dimColor:!0},"- "),l.default.createElement(d.default,{dimColor:!0,bold:!0},t.function),l.default.createElement(d.default,{dimColor:!0,color:"gray"}," ","(",t.file,":",t.line,":",t.column,")")):l.default.createElement(f.default,{key:e},l.default.createElement(d.default,{dimColor:!0},"- "),l.default.createElement(d.default,{dimColor:!0,bold:!0},e))})))}},2560:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7382).createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});r.displayName="InternalFocusContext",t.default=r},8200:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(7382)),o=({count:e=1})=>i.default.createElement("ink-text",null,"\n".repeat(e));o.displayName="Newline",t.default=o},2198:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(7382)),o=r(n(5277)),u=()=>i.default.createElement(o.default,{flexGrow:1});u.displayName="Spacer",t.default=u},8915:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const u=o(n(7382)),a=e=>{const{items:t,children:n,style:r}=e,[i,o]=u.useState(0),a=u.useMemo(()=>t.slice(i),[t,i]);u.useLayoutEffect(()=>{o(t.length)},[t.length]);const l=a.map((e,t)=>n(e,i+t)),s=u.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},r),[r]);return u.default.createElement("ink-box",{internal_static:!0,style:s},l)};a.displayName="Static",t.default=a},5001:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7382).createContext({stderr:void 0,write:()=>{}});r.displayName="InternalStderrContext",t.default=r},1489:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7382).createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});r.displayName="InternalStdinContext",t.default=r},6834:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7382).createContext({stdout:void 0,write:()=>{}});r.displayName="InternalStdoutContext",t.default=r},9146:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(7382)),o=r(n(1525)),u=r(n(9902)),a=({color:e,backgroundColor:t,dimColor:n,bold:r,italic:a,underline:l,strikethrough:s,inverse:c,wrap:f,children:d})=>{if(null==d)return null;return i.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:f},internal_transform:i=>(n&&(i=o.default.dim(i)),e&&(i=u.default(i,e,"foreground")),t&&(i=u.default(i,t,"background")),r&&(i=o.default.bold(i)),a&&(i=o.default.italic(i)),l&&(i=o.default.underline(i)),s&&(i=o.default.strikethrough(i)),c&&(i=o.default.inverse(i)),i)},d)};a.displayName="Text",a.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"},t.default=a},4592:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(7382)),o=({children:e,transform:t})=>null==e?null:i.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:t},e);o.displayName="Transform",t.default=o},146:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(3296)),o=n(5187),u=global;u.WebSocket||(u.WebSocket=i.default),u.window||(u.window=global),u.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__=[{type:1,value:7,isEnabled:!0},{type:2,value:"InternalApp",isEnabled:!0,isValid:!0},{type:2,value:"InternalAppContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdoutContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStderrContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdinContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalFocusContext",isEnabled:!0,isValid:!0}],o.connectToDevTools()},9864:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.setTextNodeValue=t.createTextNode=t.setStyle=t.setAttribute=t.removeChildNode=t.insertBeforeNode=t.appendChildNode=t.createNode=t.TEXT_NAME=void 0;const i=r(n(6401)),o=r(n(8113)),u=r(n(5809)),a=r(n(2030)),l=r(n(9099));t.TEXT_NAME="#text",t.createNode=e=>{var t;const n={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:"ink-virtual-text"===e?void 0:i.default.Node.create()};return"ink-text"===e&&(null===(t=n.yogaNode)||void 0===t||t.setMeasureFunc(s.bind(null,n))),n},t.appendChildNode=(e,n)=>{var r;n.parentNode&&t.removeChildNode(n.parentNode,n),n.parentNode=e,e.childNodes.push(n),n.yogaNode&&(null===(r=e.yogaNode)||void 0===r||r.insertChild(n.yogaNode,e.yogaNode.getChildCount())),"ink-text"!==e.nodeName&&"ink-virtual-text"!==e.nodeName||f(e)},t.insertBeforeNode=(e,n,r)=>{var i,o;n.parentNode&&t.removeChildNode(n.parentNode,n),n.parentNode=e;const u=e.childNodes.indexOf(r);if(u>=0)return e.childNodes.splice(u,0,n),void(n.yogaNode&&(null===(i=e.yogaNode)||void 0===i||i.insertChild(n.yogaNode,u)));e.childNodes.push(n),n.yogaNode&&(null===(o=e.yogaNode)||void 0===o||o.insertChild(n.yogaNode,e.yogaNode.getChildCount())),"ink-text"!==e.nodeName&&"ink-virtual-text"!==e.nodeName||f(e)},t.removeChildNode=(e,t)=>{var n,r;t.yogaNode&&(null===(r=null===(n=t.parentNode)||void 0===n?void 0:n.yogaNode)||void 0===r||r.removeChild(t.yogaNode)),t.parentNode=null;const i=e.childNodes.indexOf(t);i>=0&&e.childNodes.splice(i,1),"ink-text"!==e.nodeName&&"ink-virtual-text"!==e.nodeName||f(e)},t.setAttribute=(e,t,n)=>{e.attributes[t]=n},t.setStyle=(e,t)=>{e.style=t,e.yogaNode&&u.default(e.yogaNode,t)},t.createTextNode=e=>{const n={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:null,style:{}};return t.setTextNodeValue(n,e),n};const s=function(e,t){var n,r;const i="#text"===e.nodeName?e.nodeValue:l.default(e),u=o.default(i);if(u.width<=t)return u;if(u.width>=1&&t>0&&t<1)return u;const s=null!==(r=null===(n=e.style)||void 0===n?void 0:n.textWrap)&&void 0!==r?r:"wrap",c=a.default(i,t,s);return o.default(c)},c=e=>{var t;if(e&&e.parentNode)return null!==(t=e.yogaNode)&&void 0!==t?t:c(e.parentNode)},f=e=>{const t=c(e);null==t||t.markDirty()};t.setTextNodeValue=(e,t)=>{"string"!=typeof t&&(t=String(t)),e.nodeValue=t,f(e)}},317:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(6401));t.default=e=>e.getComputedWidth()-e.getComputedPadding(i.default.EDGE_LEFT)-e.getComputedPadding(i.default.EDGE_RIGHT)-e.getComputedBorder(i.default.EDGE_LEFT)-e.getComputedBorder(i.default.EDGE_RIGHT)},4699:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(5512));t.default=()=>i.useContext(o.default)},5442:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(2560));t.default=()=>{const e=i.useContext(o.default);return{enableFocus:e.enableFocus,disableFocus:e.disableFocus,focusNext:e.focusNext,focusPrevious:e.focusPrevious}}},8230:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(2560)),u=r(n(1541));t.default=({isActive:e=!0,autoFocus:t=!1}={})=>{const{isRawModeSupported:n,setRawMode:r}=u.default(),{activeId:a,add:l,remove:s,activate:c,deactivate:f}=i.useContext(o.default),d=i.useMemo(()=>Math.random().toString().slice(2,7),[]);return i.useEffect(()=>(l(d,{autoFocus:t}),()=>{s(d)}),[d,t]),i.useEffect(()=>{e?c(d):f(d)},[e,d]),i.useEffect(()=>{if(n&&e)return r(!0),()=>{r(!1)}},[e]),{isFocused:Boolean(d)&&a===d}}},4495:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(1541));t.default=(e,t={})=>{const{stdin:n,setRawMode:r,internal_exitOnCtrlC:u}=o.default();i.useEffect(()=>{if(!1!==t.isActive)return r(!0),()=>{r(!1)}},[t.isActive,r]),i.useEffect(()=>{if(!1===t.isActive)return;const r=t=>{let n=String(t);const r={upArrow:""===n,downArrow:""===n,leftArrow:""===n,rightArrow:""===n,pageDown:"[6~"===n,pageUp:"[5~"===n,return:"\r"===n,escape:""===n,ctrl:!1,shift:!1,tab:"\t"===n||""===n,backspace:"\b"===n,delete:""===n||"[3~"===n,meta:!1};n<=""&&!r.return&&(n=String.fromCharCode(n.charCodeAt(0)+"a".charCodeAt(0)-1),r.ctrl=!0),n.startsWith("")&&(n=n.slice(1),r.meta=!0);const i=n>="A"&&n<="Z",o=n>="А"&&n<="Я";1===n.length&&(i||o)&&(r.shift=!0),r.tab&&"[Z"===n&&(r.shift=!0),(r.tab||r.backspace||r.delete)&&(n=""),"c"===n&&r.ctrl&&u||e(n,r)};return null==n||n.on("data",r),()=>{null==n||n.off("data",r)}},[t.isActive,n,u,e])}},1686:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(5001));t.default=()=>i.useContext(o.default)},1541:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(1489));t.default=()=>i.useContext(o.default)},9890:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(6834));t.default=()=>i.useContext(o.default)},9245:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9417);Object.defineProperty(t,"render",{enumerable:!0,get:function(){return r.default}});var i=n(5277);Object.defineProperty(t,"Box",{enumerable:!0,get:function(){return i.default}});var o=n(9146);Object.defineProperty(t,"Text",{enumerable:!0,get:function(){return o.default}});var u=n(8915);Object.defineProperty(t,"Static",{enumerable:!0,get:function(){return u.default}});var a=n(4592);Object.defineProperty(t,"Transform",{enumerable:!0,get:function(){return a.default}});var l=n(8200);Object.defineProperty(t,"Newline",{enumerable:!0,get:function(){return l.default}});var s=n(2198);Object.defineProperty(t,"Spacer",{enumerable:!0,get:function(){return s.default}});var c=n(4495);Object.defineProperty(t,"useInput",{enumerable:!0,get:function(){return c.default}});var f=n(4699);Object.defineProperty(t,"useApp",{enumerable:!0,get:function(){return f.default}});var d=n(1541);Object.defineProperty(t,"useStdin",{enumerable:!0,get:function(){return d.default}});var p=n(9890);Object.defineProperty(t,"useStdout",{enumerable:!0,get:function(){return p.default}});var h=n(1686);Object.defineProperty(t,"useStderr",{enumerable:!0,get:function(){return h.default}});var v=n(8230);Object.defineProperty(t,"useFocus",{enumerable:!0,get:function(){return v.default}});var m=n(5442);Object.defineProperty(t,"useFocusManager",{enumerable:!0,get:function(){return m.default}});var g=n(3887);Object.defineProperty(t,"measureElement",{enumerable:!0,get:function(){return g.default}})},3206:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=u(n(7382)),l=n(464),s=u(n(503)),c=u(n(7589)),f=u(n(2738)),d=u(n(2633)),p=u(n(5117)),h=u(n(5691)),v=u(n(6458)),m=u(n(8070)),g=o(n(9864)),y=u(n(9679)),_=u(n(2773)),b="false"!==process.env.CI&&f.default,w=()=>{};t.default=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;const{output:e,outputHeight:t,staticOutput:n}=h.default(this.rootNode,this.options.stdout.columns||80),r=n&&"\n"!==n;return this.options.debug?(r&&(this.fullStaticOutput+=n),void this.options.stdout.write(this.fullStaticOutput+e)):b?(r&&this.options.stdout.write(n),void(this.lastOutput=e)):(r&&(this.fullStaticOutput+=n),t>=this.options.stdout.rows?(this.options.stdout.write(c.default.clearTerminal+this.fullStaticOutput+e),void(this.lastOutput=e)):(r&&(this.log.clear(),this.options.stdout.write(n),this.log(e)),r||e===this.lastOutput||this.throttledLog(e),void(this.lastOutput=e)))},d.default(this),this.options=e,this.rootNode=g.createNode("ink-root"),this.rootNode.onRender=e.debug?this.onRender:l.throttle(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=s.default.create(e.stdout),this.throttledLog=e.debug?this.log:l.throttle(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=p.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=v.default(this.unmount,{alwaysLast:!1}),"true"===process.env.DEV&&p.default.injectIntoDevTools({bundleType:0,version:"16.13.1",rendererPackageName:"ink"}),e.patchConsole&&this.patchConsole(),b||(e.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{e.stdout.off("resize",this.onRender)})}render(e){const t=a.default.createElement(_.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);p.default.updateContainer(t,this.container,null,w)}writeToStdout(e){this.isUnmounted||(this.options.debug?this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput):b?this.options.stdout.write(e):(this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)))}writeToStderr(e){if(!this.isUnmounted)return this.options.debug?(this.options.stderr.write(e),void this.options.stdout.write(this.fullStaticOutput+this.lastOutput)):void(b?this.options.stderr.write(e):(this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)))}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),"function"==typeof this.restoreConsole&&this.restoreConsole(),"function"==typeof this.unsubscribeResize&&this.unsubscribeResize(),b?this.options.stdout.write(this.lastOutput+"\n"):this.options.debug||this.log.done(),this.isUnmounted=!0,p.default.updateContainer(null,this.container,null,w),y.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,t)=>{this.resolveExitPromise=e,this.rejectExitPromise=t})),this.exitPromise}clear(){b||this.options.debug||this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=m.default((e,t)=>{if("stdout"===e&&this.writeToStdout(t),"stderr"===e){t.startsWith("The above error occurred")||this.writeToStderr(t)}}))}}},9679:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=new WeakMap},503:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(7589)),o=r(n(1696));t.default={create:(e,{showCursor:t=!1}={})=>{let n=0,r="",u=!1;const a=a=>{t||u||(o.default.hide(),u=!0);const l=a+"\n";l!==r&&(r=l,e.write(i.default.eraseLines(n)+l),n=l.split("\n").length)};return a.clear=()=>{e.write(i.default.eraseLines(n)),r="",n=0},a.done=()=>{r="",n=0,t||(o.default.show(),u=!1)},a}}},3887:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{var t,n,r,i;return{width:null!==(n=null===(t=e.yogaNode)||void 0===t?void 0:t.getComputedWidth())&&void 0!==n?n:0,height:null!==(i=null===(r=e.yogaNode)||void 0===r?void 0:r.getComputedHeight())&&void 0!==i?i:0}}},8113:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(8949)),o={};t.default=e=>{if(0===e.length)return{width:0,height:0};if(o[e])return o[e];const t=i.default(e),n=e.split("\n").length;return o[e]={width:t,height:n},{width:t,height:n}}},4110:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(1566)),o=r(n(3262));t.default=class{constructor(e){this.writes=[];const{width:t,height:n}=e;this.width=t,this.height=n}write(e,t,n,r){const{transformers:i}=r;n&&this.writes.push({x:e,y:t,text:n,transformers:i})}get(){const e=[];for(let t=0;te.trimRight()).join("\n"),height:e.length}}}},5117:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7181),o=r(n(7714)),u=r(n(6401)),a=n(9864);"true"===process.env.DEV&&n(146);const l=e=>{null==e||e.unsetMeasureFunc(),null==e||e.freeRecursive()};t.default=o.default({schedulePassiveEffects:i.unstable_scheduleCallback,cancelPassiveEffects:i.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>{},resetAfterCommit:e=>{if(e.isStaticDirty)return e.isStaticDirty=!1,void("function"==typeof e.onImmediateRender&&e.onImmediateRender());"function"==typeof e.onRender&&e.onRender()},getChildHostContext:(e,t)=>{const n="ink-text"===t||"ink-virtual-text"===t;return e.isInsideText===n?e:{isInsideText:n}},shouldSetTextContent:()=>!1,createInstance:(e,t,n,r)=>{if(r.isInsideText&&"ink-box"===e)throw new Error(" can’t be nested inside component");const i="ink-text"===e&&r.isInsideText?"ink-virtual-text":e,o=a.createNode(i);for(const[e,n]of Object.entries(t))"children"!==e&&("style"===e?a.setStyle(o,n):"internal_transform"===e?o.internal_transform=n:"internal_static"===e?o.internal_static=!0:a.setAttribute(o,e,n));return o},createTextInstance:(e,t,n)=>{if(!n.isInsideText)throw new Error(`Text string "${e}" must be rendered inside component`);return a.createTextNode(e)},resetTextContent:()=>{},hideTextInstance:e=>{a.setTextNodeValue(e,"")},unhideTextInstance:(e,t)=>{a.setTextNodeValue(e,t)},getPublicInstance:e=>e,hideInstance:e=>{var t;null===(t=e.yogaNode)||void 0===t||t.setDisplay(u.default.DISPLAY_NONE)},unhideInstance:e=>{var t;null===(t=e.yogaNode)||void 0===t||t.setDisplay(u.default.DISPLAY_FLEX)},appendInitialChild:a.appendChildNode,appendChild:a.appendChildNode,insertBefore:a.insertBeforeNode,finalizeInitialChildren:(e,t,n,r)=>(e.internal_static&&(r.isStaticDirty=!0,r.staticNode=e),!1),supportsMutation:!0,appendChildToContainer:a.appendChildNode,insertInContainerBefore:a.insertBeforeNode,removeChildFromContainer:(e,t)=>{a.removeChildNode(e,t),l(t.yogaNode)},prepareUpdate:(e,t,n,r,i)=>{e.internal_static&&(i.isStaticDirty=!0);const o={},u=Object.keys(r);for(const e of u)if(r[e]!==n[e]){if("style"===e&&"object"==typeof r.style&&"object"==typeof n.style){const e=r.style,t=n.style,i=Object.keys(e);for(const n of i){if("borderStyle"===n||"borderColor"===n){if("object"!=typeof o.style){const e={};o.style=e}o.style.borderStyle=e.borderStyle,o.style.borderColor=e.borderColor}if(e[n]!==t[n]){if("object"!=typeof o.style){const e={};o.style=e}o.style[n]=e[n]}}continue}o[e]=r[e]}return o},commitUpdate:(e,t)=>{for(const[n,r]of Object.entries(t))"children"!==n&&("style"===n?a.setStyle(e,r):"internal_transform"===n?e.internal_transform=r:"internal_static"===n?e.internal_static=!0:a.setAttribute(e,n,r))},commitTextUpdate:(e,t,n)=>{a.setTextNodeValue(e,n)},removeChild:(e,t)=>{a.removeChildNode(e,t),l(t.yogaNode)}})},4907:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(4097)),o=r(n(9902));t.default=(e,t,n,r)=>{if("string"==typeof n.style.borderStyle){const u=n.yogaNode.getComputedWidth(),a=n.yogaNode.getComputedHeight(),l=n.style.borderColor,s=i.default[n.style.borderStyle],c=o.default(s.topLeft+s.horizontal.repeat(u-2)+s.topRight,l,"foreground"),f=(o.default(s.vertical,l,"foreground")+"\n").repeat(a-2),d=o.default(s.bottomLeft+s.horizontal.repeat(u-2)+s.bottomRight,l,"foreground");r.write(e,t,c,{transformers:[]}),r.write(e,t+1,f,{transformers:[]}),r.write(e+u-1,t+1,f,{transformers:[]}),r.write(e,t+a-1,d,{transformers:[]})}}},3782:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(6401)),o=r(n(8949)),u=r(n(9646)),a=r(n(2030)),l=r(n(317)),s=r(n(9099)),c=r(n(4907)),f=(e,t,n)=>{var r;const{offsetX:d=0,offsetY:p=0,transformers:h=[],skipStaticElements:v}=n;if(v&&e.internal_static)return;const{yogaNode:m}=e;if(m){if(m.getDisplay()===i.default.DISPLAY_NONE)return;const n=d+m.getComputedLeft(),g=p+m.getComputedTop();let y=h;if("function"==typeof e.internal_transform&&(y=[e.internal_transform,...h]),"ink-text"===e.nodeName){let i=s.default(e);if(i.length>0){const s=o.default(i),c=l.default(m);if(s>c){const t=null!==(r=e.style.textWrap)&&void 0!==r?r:"wrap";i=a.default(i,c,t)}i=((e,t)=>{var n;const r=null===(n=e.childNodes[0])||void 0===n?void 0:n.yogaNode;if(r){const e=r.getComputedLeft(),n=r.getComputedTop();t="\n".repeat(n)+u.default(t,e)}return t})(e,i),t.write(n,g,i,{transformers:y})}return}if("ink-box"===e.nodeName&&c.default(n,g,e,t),"ink-root"===e.nodeName||"ink-box"===e.nodeName)for(const r of e.childNodes)f(r,t,{offsetX:n,offsetY:g,transformers:y,skipStaticElements:v})}};t.default=f},9417:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(3206)),o=r(n(9679)),u=n(2413);t.default=(e,t)=>{const n=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},a(t)),r=l(n.stdout,()=>new i.default(n));return r.render(e),{rerender:r.render,unmount:()=>r.unmount(),waitUntilExit:r.waitUntilExit,cleanup:()=>o.default.delete(n.stdout),clear:r.clear}};const a=(e={})=>e instanceof u.Stream?{stdout:e,stdin:process.stdin}:e,l=(e,t)=>{let n;return o.default.has(e)?n=o.default.get(e):(n=t(),o.default.set(e,n)),n}},5691:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(6401)),o=r(n(3782)),u=r(n(4110));t.default=(e,t)=>{var n;if(e.yogaNode.setWidth(t),e.yogaNode){e.yogaNode.calculateLayout(void 0,void 0,i.default.DIRECTION_LTR);const t=new u.default({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});let r;o.default(e,t,{skipStaticElements:!0}),(null===(n=e.staticNode)||void 0===n?void 0:n.yogaNode)&&(r=new u.default({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),o.default(e.staticNode,r,{skipStaticElements:!1}));const{output:a,height:l}=t.get();return{output:a,outputHeight:l,staticOutput:r?r.get().output+"\n":""}}return{output:"",outputHeight:0,staticOutput:""}}},9099:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=e=>{let t="";if(e.childNodes.length>0)for(const r of e.childNodes){let e="";"#text"===r.nodeName?e=r.nodeValue:("ink-text"!==r.nodeName&&"ink-virtual-text"!==r.nodeName||(e=n(r)),e.length>0&&"function"==typeof r.internal_transform&&(e=r.internal_transform(e))),t+=e}return t};t.default=n},5809:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(6401));t.default=(e,t={})=>{((e,t)=>{"position"in t&&e.setPositionType("absolute"===t.position?i.default.POSITION_TYPE_ABSOLUTE:i.default.POSITION_TYPE_RELATIVE)})(e,t),((e,t)=>{"marginLeft"in t&&e.setMargin(i.default.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(i.default.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(i.default.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(i.default.EDGE_BOTTOM,t.marginBottom||0)})(e,t),((e,t)=>{"paddingLeft"in t&&e.setPadding(i.default.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(i.default.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(i.default.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(i.default.EDGE_BOTTOM,t.paddingBottom||0)})(e,t),((e,t)=>{var n;"flexGrow"in t&&e.setFlexGrow(null!==(n=t.flexGrow)&&void 0!==n?n:0),"flexShrink"in t&&e.setFlexShrink("number"==typeof t.flexShrink?t.flexShrink:1),"flexDirection"in t&&("row"===t.flexDirection&&e.setFlexDirection(i.default.FLEX_DIRECTION_ROW),"row-reverse"===t.flexDirection&&e.setFlexDirection(i.default.FLEX_DIRECTION_ROW_REVERSE),"column"===t.flexDirection&&e.setFlexDirection(i.default.FLEX_DIRECTION_COLUMN),"column-reverse"===t.flexDirection&&e.setFlexDirection(i.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&("number"==typeof t.flexBasis?e.setFlexBasis(t.flexBasis):"string"==typeof t.flexBasis?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(NaN)),"alignItems"in t&&("stretch"!==t.alignItems&&t.alignItems||e.setAlignItems(i.default.ALIGN_STRETCH),"flex-start"===t.alignItems&&e.setAlignItems(i.default.ALIGN_FLEX_START),"center"===t.alignItems&&e.setAlignItems(i.default.ALIGN_CENTER),"flex-end"===t.alignItems&&e.setAlignItems(i.default.ALIGN_FLEX_END)),"alignSelf"in t&&("auto"!==t.alignSelf&&t.alignSelf||e.setAlignSelf(i.default.ALIGN_AUTO),"flex-start"===t.alignSelf&&e.setAlignSelf(i.default.ALIGN_FLEX_START),"center"===t.alignSelf&&e.setAlignSelf(i.default.ALIGN_CENTER),"flex-end"===t.alignSelf&&e.setAlignSelf(i.default.ALIGN_FLEX_END)),"justifyContent"in t&&("flex-start"!==t.justifyContent&&t.justifyContent||e.setJustifyContent(i.default.JUSTIFY_FLEX_START),"center"===t.justifyContent&&e.setJustifyContent(i.default.JUSTIFY_CENTER),"flex-end"===t.justifyContent&&e.setJustifyContent(i.default.JUSTIFY_FLEX_END),"space-between"===t.justifyContent&&e.setJustifyContent(i.default.JUSTIFY_SPACE_BETWEEN),"space-around"===t.justifyContent&&e.setJustifyContent(i.default.JUSTIFY_SPACE_AROUND))})(e,t),((e,t)=>{var n,r;"width"in t&&("number"==typeof t.width?e.setWidth(t.width):"string"==typeof t.width?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&("number"==typeof t.height?e.setHeight(t.height):"string"==typeof t.height?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&("string"==typeof t.minWidth?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth(null!==(n=t.minWidth)&&void 0!==n?n:0)),"minHeight"in t&&("string"==typeof t.minHeight?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight(null!==(r=t.minHeight)&&void 0!==r?r:0))})(e,t),((e,t)=>{"display"in t&&e.setDisplay("flex"===t.display?i.default.DISPLAY_FLEX:i.default.DISPLAY_NONE)})(e,t),((e,t)=>{if("borderStyle"in t){const n="string"==typeof t.borderStyle?1:0;e.setBorder(i.default.EDGE_TOP,n),e.setBorder(i.default.EDGE_BOTTOM,n),e.setBorder(i.default.EDGE_LEFT,n),e.setBorder(i.default.EDGE_RIGHT,n)}})(e,t)}},2030:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(4332)),o=r(n(5301)),u={};t.default=(e,t,n)=>{const r=e+String(t)+String(n);if(u[r])return u[r];let a=e;if("wrap"===n&&(a=i.default(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let r="end";"truncate-middle"===n&&(r="middle"),"truncate-start"===n&&(r="start"),a=o.default(e,t,{position:r})}return u[r]=a,a}},5767:(e,t,n)=>{ -/** @license React v0.24.0 - * react-reconciler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -e.exports=function t(r){"use strict";var i=n(9381),o=n(7382),u=n(7181);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nOe||(e.current=Ae[Oe],Ae[Oe]=null,Oe--)}function Ie(e,t){Oe++,Ae[Oe]=e.current,e.current=t}var Ne={},Me={current:Ne},Re={current:!1},Fe=Ne;function Le(e,t){var n=e.type.contextTypes;if(!n)return Ne;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i,o={};for(i in n)o[i]=t[i];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Be(e){return null!=(e=e.childContextTypes)}function je(e){Pe(Re),Pe(Me)}function Ue(e){Pe(Re),Pe(Me)}function ze(e,t,n){if(Me.current!==Ne)throw Error(a(168));Ie(Me,t),Ie(Re,n)}function We(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(a(108,C(t)||"Unknown",o));return i({},n,{},r)}function He(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||Ne,Fe=Me.current,Ie(Me,t),Ie(Re,Re.current),!0}function Ve(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(t=We(e,t,Fe),r.__reactInternalMemoizedMergedChildContext=t,Pe(Re),Pe(Me),Ie(Me,t)):Pe(Re),Ie(Re,n)}var qe=u.unstable_runWithPriority,Ge=u.unstable_scheduleCallback,$e=u.unstable_cancelCallback,Ye=u.unstable_shouldYield,Ke=u.unstable_requestPaint,Xe=u.unstable_now,Qe=u.unstable_getCurrentPriorityLevel,Je=u.unstable_ImmediatePriority,Ze=u.unstable_UserBlockingPriority,et=u.unstable_NormalPriority,tt=u.unstable_LowPriority,nt=u.unstable_IdlePriority,rt={},it=void 0!==Ke?Ke:function(){},ot=null,ut=null,at=!1,lt=Xe(),st=1e4>lt?Xe:function(){return Xe()-lt};function ct(){switch(Qe()){case Je:return 99;case Ze:return 98;case et:return 97;case tt:return 96;case nt:return 95;default:throw Error(a(332))}}function ft(e){switch(e){case 99:return Je;case 98:return Ze;case 97:return et;case 96:return tt;case 95:return nt;default:throw Error(a(332))}}function dt(e,t){return e=ft(e),qe(e,t)}function pt(e,t,n){return e=ft(e),Ge(e,t,n)}function ht(e){return null===ot?(ot=[e],ut=Ge(Je,mt)):ot.push(e),rt}function vt(){if(null!==ut){var e=ut;ut=null,$e(e)}mt()}function mt(){if(!at&&null!==ot){at=!0;var e=0;try{var t=ot;dt(99,(function(){for(;e=t&&(dr=!0),e.firstContext=null)}function It(e,t){if(kt!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(kt=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ct){if(null===St)throw Error(a(308));Ct=t,St.dependencies={expirationTime:0,firstContext:t,responders:null}}else Ct=Ct.next=t;return q?e._currentValue:e._currentValue2}var Nt=!1;function Mt(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Rt(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Ft(e,t){return{expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Lt(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function Bt(e,t){var n=e.alternate;if(null===n){var r=e.updateQueue,i=null;null===r&&(r=e.updateQueue=Mt(e.memoizedState))}else r=e.updateQueue,i=n.updateQueue,null===r?null===i?(r=e.updateQueue=Mt(e.memoizedState),i=n.updateQueue=Mt(n.memoizedState)):r=e.updateQueue=Rt(i):null===i&&(i=n.updateQueue=Rt(r));null===i||r===i?Lt(r,t):null===r.lastUpdate||null===i.lastUpdate?(Lt(r,t),Lt(i,t)):(Lt(r,t),i.lastUpdate=t)}function jt(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=Mt(e.memoizedState):Ut(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function Ut(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=Rt(t)),t}function zt(e,t,n,r,o,u){switch(n.tag){case 1:return"function"==typeof(e=n.payload)?e.call(u,r,o):e;case 3:e.effectTag=-4097&e.effectTag|64;case 0:if(null==(o="function"==typeof(e=n.payload)?e.call(u,r,o):e))break;return i({},r,o);case 2:Nt=!0}return r}function Wt(e,t,n,r,i){Nt=!1;for(var o=(t=Ut(e,t)).baseState,u=null,a=0,l=t.firstUpdate,s=o;null!==l;){var c=l.expirationTime;cd?(p=f,f=null):p=f.sibling;var h=m(i,f,a[d],l);if(null===h){null===f&&(f=p);break}e&&f&&null===h.alternate&&t(i,f),u=o(h,u,d),null===c?s=h:c.sibling=h,c=h,f=p}if(d===a.length)return n(i,f),s;if(null===f){for(;dp?(h=d,d=null):h=d.sibling;var _=m(i,d,y.value,s);if(null===_){null===d&&(d=h);break}e&&d&&null===_.alternate&&t(i,d),u=o(_,u,p),null===f?c=_:f.sibling=_,f=_,d=h}if(y.done)return n(i,d),c;if(null===d){for(;!y.done;p++,y=l.next())null!==(y=v(i,y.value,s))&&(u=o(y,u,p),null===f?c=y:f.sibling=y,f=y);return c}for(d=r(i,d);!y.done;p++,y=l.next())null!==(y=g(d,i,p,y.value,s))&&(e&&null!==y.alternate&&d.delete(null===y.key?p:y.key),u=o(y,u,p),null===f?c=y:f.sibling=y,f=y);return e&&d.forEach((function(e){return t(i,e)})),c}return function(e,r,o,l){var s="object"==typeof o&&null!==o&&o.type===d&&null===o.key;s&&(o=o.props.children);var p="object"==typeof o&&null!==o;if(p)switch(o.$$typeof){case c:e:{for(p=o.key,s=r;null!==s;){if(s.key===p){if(7===s.tag?o.type===d:s.elementType===o.type){n(e,s.sibling),(r=i(s,o.type===d?o.props.children:o.props)).ref=en(e,s,o),r.return=e,e=r;break e}n(e,s);break}t(e,s),s=s.sibling}o.type===d?((r=so(o.props.children,e.mode,l,o.key)).return=e,e=r):((l=lo(o.type,o.key,o.props,null,e.mode,l)).ref=en(e,r,o),l.return=e,e=l)}return u(e);case f:e:{for(s=o.key;null!==r;){if(r.key===s){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=i(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=fo(o,e.mode,l)).return=e,e=r}return u(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=i(r,o)).return=e,e=r):(n(e,r),(r=co(o,e.mode,l)).return=e,e=r),u(e);if(Zt(o))return y(e,r,o,l);if(S(o))return _(e,r,o,l);if(p&&tn(e,o),void 0===o&&!s)switch(e.tag){case 1:case 0:throw e=e.type,Error(a(152,e.displayName||e.name||"Component"))}return n(e,r)}}var rn=nn(!0),on=nn(!1),un={},an={current:un},ln={current:un},sn={current:un};function cn(e){if(e===un)throw Error(a(174));return e}function fn(e,t){Ie(sn,t),Ie(ln,e),Ie(an,un),t=P(t),Pe(an),Ie(an,t)}function dn(e){Pe(an),Pe(ln),Pe(sn)}function pn(e){var t=cn(sn.current),n=cn(an.current);n!==(t=I(n,e.type,t))&&(Ie(ln,e),Ie(an,t))}function hn(e){ln.current===e&&(Pe(an),Pe(ln))}var vn={current:0};function mn(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||ye(n)||_e(n)))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function gn(e,t){return{responder:e,props:t}}var yn=l.ReactCurrentDispatcher,_n=l.ReactCurrentBatchConfig,bn=0,wn=null,En=null,Dn=null,Sn=null,Cn=null,kn=null,Tn=0,xn=null,An=0,On=!1,Pn=null,In=0;function Nn(){throw Error(a(321))}function Mn(e,t){if(null===t)return!1;for(var n=0;nTn&&zi(Tn=f)):(Ui(f,s.suspenseConfig),o=s.eagerReducer===e?s.eagerState:e(o,s.action)),u=s,s=s.next}while(null!==s&&s!==r);c||(l=u,i=o),_t(o,t.memoizedState)||(dr=!0),t.memoizedState=o,t.baseUpdate=l,t.baseState=i,n.lastRenderedState=o}return[t.memoizedState,n.dispatch]}function zn(e){var t=Ln();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:jn,lastRenderedState:e}).dispatch=Jn.bind(null,wn,e),[t.memoizedState,e]}function Wn(e){return Un(jn)}function Hn(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===xn?(xn={lastEffect:null}).lastEffect=e.next=e:null===(t=xn.lastEffect)?xn.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,xn.lastEffect=e),e}function Vn(e,t,n,r){var i=Ln();An|=e,i.memoizedState=Hn(t,n,void 0,void 0===r?null:r)}function qn(e,t,n,r){var i=Bn();r=void 0===r?null:r;var o=void 0;if(null!==En){var u=En.memoizedState;if(o=u.destroy,null!==r&&Mn(r,u.deps))return void Hn(0,n,o,r)}An|=e,i.memoizedState=Hn(t,n,o,r)}function Gn(e,t){return Vn(516,192,e,t)}function $n(e,t){return qn(516,192,e,t)}function Yn(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Kn(){}function Xn(e,t){return Ln().memoizedState=[e,void 0===t?null:t],e}function Qn(e,t){var n=Bn();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Mn(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Jn(e,t,n){if(!(25>In))throw Error(a(301));var r=e.alternate;if(e===wn||null!==r&&r===wn)if(On=!0,e={expirationTime:bn,suspenseConfig:null,action:n,eagerReducer:null,eagerState:null,next:null},null===Pn&&(Pn=new Map),void 0===(n=Pn.get(t)))Pn.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{var i=xi(),o=qt.suspense;o={expirationTime:i=Ai(i,e,o),suspenseConfig:o,action:n,eagerReducer:null,eagerState:null,next:null};var u=t.last;if(null===u)o.next=o;else{var l=u.next;null!==l&&(o.next=l),u.next=o}if(t.last=o,0===e.expirationTime&&(null===r||0===r.expirationTime)&&null!==(r=t.lastRenderedReducer))try{var s=t.lastRenderedState,c=r(s,n);if(o.eagerReducer=r,o.eagerState=c,_t(c,s))return}catch(e){}Oi(e,i)}}var Zn={readContext:It,useCallback:Nn,useContext:Nn,useEffect:Nn,useImperativeHandle:Nn,useLayoutEffect:Nn,useMemo:Nn,useReducer:Nn,useRef:Nn,useState:Nn,useDebugValue:Nn,useResponder:Nn,useDeferredValue:Nn,useTransition:Nn},er={readContext:It,useCallback:Xn,useContext:It,useEffect:Gn,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Vn(4,36,Yn.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Vn(4,36,e,t)},useMemo:function(e,t){var n=Ln();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ln();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Jn.bind(null,wn,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ln().memoizedState=e},useState:zn,useDebugValue:Kn,useResponder:gn,useDeferredValue:function(e,t){var n=zn(e),r=n[0],i=n[1];return Gn((function(){u.unstable_next((function(){var n=_n.suspense;_n.suspense=void 0===t?null:t;try{i(e)}finally{_n.suspense=n}}))}),[e,t]),r},useTransition:function(e){var t=zn(!1),n=t[0],r=t[1];return[Xn((function(t){r(!0),u.unstable_next((function(){var n=_n.suspense;_n.suspense=void 0===e?null:e;try{r(!1),t()}finally{_n.suspense=n}}))}),[e,n]),n]}},tr={readContext:It,useCallback:Qn,useContext:It,useEffect:$n,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,qn(4,36,Yn.bind(null,t,e),n)},useLayoutEffect:function(e,t){return qn(4,36,e,t)},useMemo:function(e,t){var n=Bn();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Mn(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:Un,useRef:function(){return Bn().memoizedState},useState:Wn,useDebugValue:Kn,useResponder:gn,useDeferredValue:function(e,t){var n=Wn(),r=n[0],i=n[1];return $n((function(){u.unstable_next((function(){var n=_n.suspense;_n.suspense=void 0===t?null:t;try{i(e)}finally{_n.suspense=n}}))}),[e,t]),r},useTransition:function(e){var t=Wn(),n=t[0],r=t[1];return[Qn((function(t){r(!0),u.unstable_next((function(){var n=_n.suspense;_n.suspense=void 0===e?null:e;try{r(!1),t()}finally{_n.suspense=n}}))}),[e,n]),n]}},nr=null,rr=null,ir=!1;function or(e,t){var n=oo(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function ur(e,t){switch(e.tag){case 5:return null!==(t=me(t,e.type,e.pendingProps))&&(e.stateNode=t,!0);case 6:return null!==(t=ge(t,e.pendingProps))&&(e.stateNode=t,!0);case 13:default:return!1}}function ar(e){if(ir){var t=rr;if(t){var n=t;if(!ur(e,t)){if(!(t=be(n))||!ur(e,t))return e.effectTag=-1025&e.effectTag|2,ir=!1,void(nr=e);or(nr,n)}nr=e,rr=we(t)}else e.effectTag=-1025&e.effectTag|2,ir=!1,nr=e}}function lr(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;nr=e}function sr(e){if(!Y||e!==nr)return!1;if(!ir)return lr(e),ir=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!j(t,e.memoizedProps))for(t=rr;t;)or(e,t),t=be(t);if(lr(e),13===e.tag){if(!Y)throw Error(a(316));if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));rr=Se(e)}else rr=nr?be(e.stateNode):null;return!0}function cr(){Y&&(rr=nr=null,ir=!1)}var fr=l.ReactCurrentOwner,dr=!1;function pr(e,t,n,r){t.child=null===e?on(t,null,n,r):rn(t,e.child,n,r)}function hr(e,t,n,r,i){n=n.render;var o=t.ref;return Pt(t,i),r=Rn(e,t,n,r,o,i),null===e||dr?(t.effectTag|=1,pr(e,t,r,i),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=i&&(e.expirationTime=0),Pr(e,t,i))}function vr(e,t,n,r,i,o){if(null===e){var u=n.type;return"function"!=typeof u||uo(u)||void 0!==u.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=lo(n.type,null,r,null,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=u,mr(e,t,u,r,i,o))}return u=e.child,it)&&Si.set(e,t))}}function Pi(e,t){e.expirationTime(e=e.nextKnownPendingLevel)?t:e:t}function Ni(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=ht(Ri.bind(null,e));else{var t=Ii(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=xi();if(1073741823===t?r=99:1===t||2===t?r=95:r=0>=(r=10*(1073741821-t)-10*(1073741821-r))?99:250>=r?98:5250>=r?97:95,null!==n){var i=e.callbackPriority;if(e.callbackExpirationTime===t&&i>=r)return;n!==rt&&$e(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?ht(Ri.bind(null,e)):pt(r,Mi.bind(null,e),{timeout:10*(1073741821-t)-st()}),e.callbackNode=t}}}function Mi(e,t){if(Ti=0,t)return go(e,t=xi()),Ni(e),null;var n=Ii(e);if(0!==n){if(t=e.callbackNode,0!=(48&oi))throw Error(a(327));if(Xi(),e===ui&&n===li||Li(e,n),null!==ai){var r=oi;oi|=ii;for(var i=ji();;)try{Hi();break}catch(t){Bi(e,t)}if(Tt(),oi=r,ni.current=i,1===si)throw t=ci,Li(e,n),vo(e,n),Ni(e),t;if(null===ai)switch(i=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=si,ui=null,r){case 0:case 1:throw Error(a(345));case 2:go(e,2=n){e.lastPingedTime=n,Li(e,n);break}}if(0!==(o=Ii(e))&&o!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=W($i.bind(null,e),i);break}$i(e);break;case 4:if(vo(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=Gi(i)),vi&&(0===(i=e.lastPingedTime)||i>=n)){e.lastPingedTime=n,Li(e,n);break}if(0!==(i=Ii(e))&&i!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}if(1073741823!==di?r=10*(1073741821-di)-st():1073741823===fi?r=0:(r=10*(1073741821-fi)-5e3,0>(r=(i=st())-r)&&(r=0),(n=10*(1073741821-n)-i)<(r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*ti(r/1960))-r)&&(r=n)),10=(r=0|u.busyMinDurationMs)?r=0:(i=0|u.busyDelayMs,r=(o=st()-(10*(1073741821-o)-(0|u.timeoutMs||5e3)))<=i?0:i+r-o),10 component higher in the tree to provide a loading indicator or placeholder to display."+xe(i))}5!==si&&(si=2),o=Fr(o,i),l=r;do{switch(l.tag){case 3:u=o,l.effectTag|=4096,l.expirationTime=t,jt(l,Jr(l,u,t));break e;case 1:u=o;var g=l.type,y=l.stateNode;if(0==(64&l.effectTag)&&("function"==typeof g.getDerivedStateFromError||null!==y&&"function"==typeof y.componentDidCatch&&(null===bi||!bi.has(y)))){l.effectTag|=4096,l.expirationTime=t,jt(l,Zr(l,u,t));break e}}l=l.return}while(null!==l)}ai=qi(ai)}catch(e){t=e;continue}break}}function ji(){var e=ni.current;return ni.current=Zn,null===e?Zn:e}function Ui(e,t){ehi&&(hi=e)}function Wi(){for(;null!==ai;)ai=Vi(ai)}function Hi(){for(;null!==ai&&!Ye();)ai=Vi(ai)}function Vi(e){var t=ei(e.alternate,e,li);return e.memoizedProps=e.pendingProps,null===t&&(t=qi(e)),ri.current=null,t}function qi(e){ai=e;do{var t=ai.alternate;if(e=ai.return,0==(2048&ai.effectTag)){e:{var n=t,r=li,i=(t=ai).pendingProps;switch(t.tag){case 2:case 16:break;case 15:case 0:break;case 1:Be(t.type)&&je();break;case 3:dn(),Ue(),(i=t.stateNode).pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(null===n||null===n.child)&&sr(t)&&Ir(t),Dr(t);break;case 5:hn(t);var o=cn(sn.current);if(r=t.type,null!==n&&null!=t.stateNode)Sr(n,t,r,i,o),n.ref!==t.ref&&(t.effectTag|=128);else if(i){if(n=cn(an.current),sr(t)){if(i=t,!Y)throw Error(a(175));n=Ee(i.stateNode,i.type,i.memoizedProps,o,n,i),i.updateQueue=n,(n=null!==n)&&Ir(t)}else{var u=R(r,i,o,n,t);Er(u,t,!1,!1),t.stateNode=u,L(u,r,i,o,n)&&Ir(t)}null!==t.ref&&(t.effectTag|=128)}else if(null===t.stateNode)throw Error(a(166));break;case 6:if(n&&null!=t.stateNode)Cr(n,t,n.memoizedProps,i);else{if("string"!=typeof i&&null===t.stateNode)throw Error(a(166));if(n=cn(sn.current),o=cn(an.current),sr(t)){if(n=t,!Y)throw Error(a(176));(n=De(n.stateNode,n.memoizedProps,n))&&Ir(t)}else t.stateNode=z(i,n,o,t)}break;case 11:break;case 13:if(Pe(vn),i=t.memoizedState,0!=(64&t.effectTag)){t.expirationTime=r;break e}i=null!==i,o=!1,null===n?void 0!==t.memoizedProps.fallback&&sr(t):(o=null!==(r=n.memoizedState),i||null===r||null!==(r=n.child.sibling)&&(null!==(u=t.firstEffect)?(t.firstEffect=r,r.nextEffect=u):(t.firstEffect=t.lastEffect=r,r.nextEffect=null),r.effectTag=8)),i&&!o&&0!=(2&t.mode)&&(null===n&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&vn.current)?0===si&&(si=3):(0!==si&&3!==si||(si=4),0!==hi&&null!==ui&&(vo(ui,li),mo(ui,hi)))),$&&i&&(t.effectTag|=4),G&&(i||o)&&(t.effectTag|=4);break;case 7:case 8:case 12:break;case 4:dn(),Dr(t);break;case 10:At(t);break;case 9:case 14:break;case 17:Be(t.type)&&je();break;case 19:if(Pe(vn),null===(i=t.memoizedState))break;if(o=0!=(64&t.effectTag),null===(u=i.rendering)){if(o)Mr(i,!1);else if(0!==si||null!==n&&0!=(64&n.effectTag))for(n=t.child;null!==n;){if(null!==(u=mn(n))){for(t.effectTag|=64,Mr(i,!1),null!==(n=u.updateQueue)&&(t.updateQueue=n,t.effectTag|=4),null===i.lastEffect&&(t.firstEffect=null),t.lastEffect=i.lastEffect,n=r,i=t.child;null!==i;)r=n,(o=i).effectTag&=2,o.nextEffect=null,o.firstEffect=null,o.lastEffect=null,null===(u=o.alternate)?(o.childExpirationTime=0,o.expirationTime=r,o.child=null,o.memoizedProps=null,o.memoizedState=null,o.updateQueue=null,o.dependencies=null):(o.childExpirationTime=u.childExpirationTime,o.expirationTime=u.expirationTime,o.child=u.child,o.memoizedProps=u.memoizedProps,o.memoizedState=u.memoizedState,o.updateQueue=u.updateQueue,r=u.dependencies,o.dependencies=null===r?null:{expirationTime:r.expirationTime,firstContext:r.firstContext,responders:r.responders}),i=i.sibling;Ie(vn,1&vn.current|2),t=t.child;break e}n=n.sibling}}else{if(!o)if(null!==(n=mn(u))){if(t.effectTag|=64,o=!0,null!==(n=n.updateQueue)&&(t.updateQueue=n,t.effectTag|=4),Mr(i,!0),null===i.tail&&"hidden"===i.tailMode&&!u.alternate){null!==(t=t.lastEffect=i.lastEffect)&&(t.nextEffect=null);break}}else st()>i.tailExpiration&&1i&&(i=r),(u=o.childExpirationTime)>i&&(i=u),o=o.sibling;n.childExpirationTime=i}if(null!==t)return t;null!==e&&0==(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=ai.firstEffect),null!==ai.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=ai.firstEffect),e.lastEffect=ai.lastEffect),1(e=e.childExpirationTime)?t:e}function $i(e){var t=ct();return dt(99,Yi.bind(null,e,t)),null}function Yi(e,t){do{Xi()}while(null!==Ei);if(0!=(48&oi))throw Error(a(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var i=Gi(n);if(e.firstPendingTime=i,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===ui&&(ai=ui=null,li=0),1=n?Tr(e,t,n):(Ie(vn,1&vn.current),null!==(t=Pr(e,t,n))?t.sibling:null);Ie(vn,1&vn.current);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return Or(e,t,n);t.effectTag|=64}if(null!==(i=t.memoizedState)&&(i.rendering=null,i.tail=null),Ie(vn,vn.current),!r)return null}return Pr(e,t,n)}dr=!1}}else dr=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,i=Le(t,Me.current),Pt(t,n),i=Rn(null,t,r,e,i,n),t.effectTag|=1,"object"==typeof i&&null!==i&&"function"==typeof i.render&&void 0===i.$$typeof){if(t.tag=1,Fn(),Be(r)){var o=!0;He(t)}else o=!1;t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null;var u=r.getDerivedStateFromProps;"function"==typeof u&&$t(t,r,u,e),i.updater=Yt,t.stateNode=i,i._reactInternalFiber=t,Jt(t,r,e,n),t=br(null,t,r,!0,o,n)}else t.tag=0,pr(null,t,i,n),t=t.child;return t;case 16:if(i=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(i),1!==i._status)throw i._result;switch(i=i._result,t.type=i,o=t.tag=function(e){if("function"==typeof e)return uo(e)?1:0;if(null!=e){if((e=e.$$typeof)===y)return 11;if(e===w)return 14}return 2}(i),e=Et(i,e),o){case 0:t=yr(null,t,i,e,n);break;case 1:t=_r(null,t,i,e,n);break;case 11:t=hr(null,t,i,e,n);break;case 14:t=vr(null,t,i,Et(i.type,e),r,n);break;default:throw Error(a(306,i,""))}return t;case 0:return r=t.type,i=t.pendingProps,yr(e,t,r,i=t.elementType===r?i:Et(r,i),n);case 1:return r=t.type,i=t.pendingProps,_r(e,t,r,i=t.elementType===r?i:Et(r,i),n);case 3:if(wr(t),null===(r=t.updateQueue))throw Error(a(282));if(i=null!==(i=t.memoizedState)?i.element:null,Wt(t,r,t.pendingProps,null,n),(r=t.memoizedState.element)===i)cr(),t=Pr(e,t,n);else{if((i=t.stateNode.hydrate)&&(Y?(rr=we(t.stateNode.containerInfo),nr=t,i=ir=!0):i=!1),i)for(n=on(t,null,r,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else pr(e,t,r,n),cr();t=t.child}return t;case 5:return pn(t),null===e&&ar(t),r=t.type,i=t.pendingProps,o=null!==e?e.memoizedProps:null,u=i.children,j(r,i)?u=null:null!==o&&j(r,o)&&(t.effectTag|=16),gr(e,t),4&t.mode&&1!==n&&U(r,i)?(t.expirationTime=t.childExpirationTime=1,t=null):(pr(e,t,u,n),t=t.child),t;case 6:return null===e&&ar(t),null;case 13:return Tr(e,t,n);case 4:return fn(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=rn(t,null,r,n):pr(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,hr(e,t,r,i=t.elementType===r?i:Et(r,i),n);case 7:return pr(e,t,t.pendingProps,n),t.child;case 8:case 12:return pr(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,u=t.memoizedProps,xt(t,o=i.value),null!==u){var l=u.value;if(0===(o=_t(l,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(l,o):1073741823))){if(u.children===i.children&&!Re.current){t=Pr(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var s=l.dependencies;if(null!==s){u=l.child;for(var c=s.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===l.tag&&((c=Ft(n,null)).tag=2,Bt(l,c)),l.expirationTime=t&&e<=t}function vo(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;nt||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function mo(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function go(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function yo(e){var t=e._reactInternalFiber;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw Error(a(268,Object.keys(e)))}return null===(e=A(t))?null:e.stateNode}function _o(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTime{"use strict";e.exports=n(5767)},3296:(e,t,n)=>{"use strict";const r=n(5760);r.createWebSocketStream=n(6387),r.Server=n(43),r.Receiver=n(1762),r.Sender=n(9576),e.exports=r},8716:(e,t,n)=>{"use strict";const{EMPTY_BUFFER:r}=n(5739);function i(e,t){if(0===e.length)return r;if(1===e.length)return e[0];const n=Buffer.allocUnsafe(t);let i=0;for(let t=0;t{"use strict";e.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),EMPTY_BUFFER:Buffer.alloc(0),NOOP:()=>{}}},7002:e=>{"use strict";class t{constructor(e,t){this.target=t,this.type=e}}class n extends t{constructor(e,t){super("message",t),this.data=e}}class r extends t{constructor(e,t,n){super("close",n),this.wasClean=n._closeFrameReceived&&n._closeFrameSent,this.reason=t,this.code=e}}class i extends t{constructor(e){super("open",e)}}class o extends t{constructor(e,t){super("error",t),this.message=e.message,this.error=e}}const u={addEventListener(e,t,u){if("function"!=typeof t)return;function a(e){t.call(this,new n(e,this))}function l(e,n){t.call(this,new r(e,n,this))}function s(e){t.call(this,new o(e,this))}function c(){t.call(this,new i(this))}const f=u&&u.once?"once":"on";"message"===e?(a._listener=t,this[f](e,a)):"close"===e?(l._listener=t,this[f](e,l)):"error"===e?(s._listener=t,this[f](e,s)):"open"===e?(c._listener=t,this[f](e,c)):this[f](e,t)},removeEventListener(e,t){const n=this.listeners(e);for(let r=0;r{"use strict";const t=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function n(e,t,n){void 0===e[t]?e[t]=[n]:e[t].push(n)}e.exports={format:function(e){return Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>[t].concat(Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>!0===e?t:`${t}=${e}`).join("; ")})).join("; ")).join(", ")}).join(", ")},parse:function(e){const r=Object.create(null);if(void 0===e||""===e)return r;let i,o,u=Object.create(null),a=!1,l=!1,s=!1,c=-1,f=-1,d=0;for(;d{"use strict";const t=Symbol("kDone"),n=Symbol("kRun");e.exports=class{constructor(e){this[t]=()=>{this.pending--,this[n]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[n]()}[n](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[t])}}}},2309:(e,t,n)=>{"use strict";const r=n(8761),i=n(8716),o=n(1390),{kStatusCode:u,NOOP:a}=n(5739),l=Buffer.from([0,0,255,255]),s=Symbol("permessage-deflate"),c=Symbol("total-length"),f=Symbol("callback"),d=Symbol("buffers"),p=Symbol("error");let h;function v(e){this[d].push(e),this[c]+=e.length}function m(e){this[c]+=e.length,this[s]._maxPayload<1||this[c]<=this[s]._maxPayload?this[d].push(e):(this[p]=new RangeError("Max payload size exceeded"),this[p][u]=1009,this.removeListener("data",m),this.reset())}function g(e){this[s]._inflate=null,e[u]=1007,this[f](e)}e.exports=class{constructor(e,t,n){if(this._maxPayload=0|n,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!h){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;h=new o(e)}}static get extensionName(){return"permessage-deflate"}offer(){const e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){const e=this._deflate[f];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){const t=this._options,n=e.find(e=>!(!1===t.serverNoContextTakeover&&e.server_no_context_takeover||e.server_max_window_bits&&(!1===t.serverMaxWindowBits||"number"==typeof t.serverMaxWindowBits&&t.serverMaxWindowBits>e.server_max_window_bits)||"number"==typeof t.clientMaxWindowBits&&!e.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(n.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?n.client_max_window_bits=t.clientMaxWindowBits:!0!==n.client_max_window_bits&&!1!==t.clientMaxWindowBits||delete n.client_max_window_bits,n}acceptAsClient(e){const t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let n=e[t];if(n.length>1)throw new Error(`Parameter "${t}" must have only a single value`);if(n=n[0],"client_max_window_bits"===t){if(!0!==n){const e=+n;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${t}": ${n}`)}else if("server_max_window_bits"===t){const e=+n;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else{if("client_no_context_takeover"!==t&&"server_no_context_takeover"!==t)throw new Error(`Unknown parameter "${t}"`);if(!0!==n)throw new TypeError(`Invalid value for parameter "${t}": ${n}`)}e[t]=n})}),e}decompress(e,t,n){h.add(r=>{this._decompress(e,t,(e,t)=>{r(),n(e,t)})})}compress(e,t,n){h.add(r=>{this._compress(e,t,(e,t)=>{r(),n(e,t)})})}_decompress(e,t,n){const o=this._isServer?"client":"server";if(!this._inflate){const e=o+"_max_window_bits",t="number"!=typeof this.params[e]?r.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=r.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[s]=this,this._inflate[c]=0,this._inflate[d]=[],this._inflate.on("error",g),this._inflate.on("data",m)}this._inflate[f]=n,this._inflate.write(e),t&&this._inflate.write(l),this._inflate.flush(()=>{const e=this._inflate[p];if(e)return this._inflate.close(),this._inflate=null,void n(e);const r=i.concat(this._inflate[d],this._inflate[c]);t&&this.params[o+"_no_context_takeover"]?(this._inflate.close(),this._inflate=null):(this._inflate[c]=0,this._inflate[d]=[]),n(null,r)})}_compress(e,t,n){const o=this._isServer?"server":"client";if(!this._deflate){const e=o+"_max_window_bits",t="number"!=typeof this.params[e]?r.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=r.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[c]=0,this._deflate[d]=[],this._deflate.on("error",a),this._deflate.on("data",v)}this._deflate[f]=n,this._deflate.write(e),this._deflate.flush(r.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=i.concat(this._deflate[d],this._deflate[c]);t&&(e=e.slice(0,e.length-4)),this._deflate[f]=null,t&&this.params[o+"_no_context_takeover"]?(this._deflate.close(),this._deflate=null):(this._deflate[c]=0,this._deflate[d]=[]),n(null,e)})}}},1762:(e,t,n)=>{"use strict";const{Writable:r}=n(2413),i=n(2309),{BINARY_TYPES:o,EMPTY_BUFFER:u,kStatusCode:a,kWebSocket:l}=n(5739),{concat:s,toArrayBuffer:c,unmask:f}=n(8716),{isValidStatusCode:d,isValidUTF8:p}=n(9498);function h(e,t,n,r){const i=new e(n?"Invalid WebSocket frame: "+t:t);return Error.captureStackTrace(i,h),i[a]=r,i}e.exports=class extends r{constructor(e,t,n,r){super(),this._binaryType=e||o[0],this[l]=void 0,this._extensions=t||{},this._isServer=!!n,this._maxPayload=0|r,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=0,this._loop=!1}_write(e,t,n){if(8===this._opcode&&0==this._state)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=n.slice(e)),e-=n.length}while(e>0);return t}startLoop(e){let t;this._loop=!0;do{switch(this._state){case 0:t=this.getInfo();break;case 1:t=this.getPayloadLength16();break;case 2:t=this.getPayloadLength64();break;case 3:this.getMask();break;case 4:t=this.getData(e);break;default:return void(this._loop=!1)}}while(this._loop);e(t)}getInfo(){if(this._bufferedBytes<2)return void(this._loop=!1);const e=this.consume(2);if(0!=(48&e[0]))return this._loop=!1,h(RangeError,"RSV2 and RSV3 must be clear",!0,1002);const t=64==(64&e[0]);if(t&&!this._extensions[i.extensionName])return this._loop=!1,h(RangeError,"RSV1 must be clear",!0,1002);if(this._fin=128==(128&e[0]),this._opcode=15&e[0],this._payloadLength=127&e[1],0===this._opcode){if(t)return this._loop=!1,h(RangeError,"RSV1 must be clear",!0,1002);if(!this._fragmented)return this._loop=!1,h(RangeError,"invalid opcode 0",!0,1002);this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented)return this._loop=!1,h(RangeError,"invalid opcode "+this._opcode,!0,1002);this._compressed=t}else{if(!(this._opcode>7&&this._opcode<11))return this._loop=!1,h(RangeError,"invalid opcode "+this._opcode,!0,1002);if(!this._fin)return this._loop=!1,h(RangeError,"FIN must be set",!0,1002);if(t)return this._loop=!1,h(RangeError,"RSV1 must be clear",!0,1002);if(this._payloadLength>125)return this._loop=!1,h(RangeError,"invalid payload length "+this._payloadLength,!0,1002)}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=128==(128&e[1]),this._isServer){if(!this._masked)return this._loop=!1,h(RangeError,"MASK must be set",!0,1002)}else if(this._masked)return this._loop=!1,h(RangeError,"MASK must be clear",!0,1002);if(126===this._payloadLength)this._state=1;else{if(127!==this._payloadLength)return this.haveLength();this._state=2}}getPayloadLength16(){if(!(this._bufferedBytes<2))return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength();this._loop=!1}getPayloadLength64(){if(this._bufferedBytes<8)return void(this._loop=!1);const e=this.consume(8),t=e.readUInt32BE(0);return t>Math.pow(2,21)-1?(this._loop=!1,h(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009)):(this._payloadLength=t*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,h(RangeError,"Max payload size exceeded",!1,1009);this._masked?this._state=3:this._state=4}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=4)}getData(e){let t=u;if(this._payloadLength){if(this._bufferedBytes7?this.controlMessage(t):this._compressed?(this._state=5,void this.decompress(t,e)):(t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage())}decompress(e,t){this._extensions[i.extensionName].decompress(e,this._fin,(e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return t(h(RangeError,"Max payload size exceeded",!1,1009));this._fragments.push(n)}const r=this.dataMessage();if(r)return t(r);this.startLoop(t)})}dataMessage(){if(this._fin){const e=this._messageLength,t=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let n;n="nodebuffer"===this._binaryType?s(t,e):"arraybuffer"===this._binaryType?c(s(t,e)):t,this.emit("message",n)}else{const n=s(t,e);if(!p(n))return this._loop=!1,h(Error,"invalid UTF-8 sequence",!0,1007);this.emit("message",n.toString())}}this._state=0}controlMessage(e){if(8===this._opcode)if(this._loop=!1,0===e.length)this.emit("conclude",1005,""),this.end();else{if(1===e.length)return h(RangeError,"invalid payload length 1",!0,1002);{const t=e.readUInt16BE(0);if(!d(t))return h(RangeError,"invalid status code "+t,!0,1002);const n=e.slice(2);if(!p(n))return h(Error,"invalid UTF-8 sequence",!0,1007);this.emit("conclude",t,n.toString()),this.end()}}else 9===this._opcode?this.emit("ping",e):this.emit("pong",e);this._state=0}}},9576:(e,t,n)=>{"use strict";const{randomFillSync:r}=n(6417),i=n(2309),{EMPTY_BUFFER:o}=n(5739),{isValidStatusCode:u}=n(9498),{mask:a,toBuffer:l}=n(8716),s=Buffer.alloc(4);class c{constructor(e,t){this._extensions=t||{},this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,t){const n=t.mask&&t.readOnly;let i=t.mask?6:2,o=e.length;e.length>=65536?(i+=8,o=127):e.length>125&&(i+=2,o=126);const u=Buffer.allocUnsafe(n?e.length+i:i);return u[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(u[0]|=64),u[1]=o,126===o?u.writeUInt16BE(e.length,2):127===o&&(u.writeUInt32BE(0,2),u.writeUInt32BE(e.length,6)),t.mask?(r(s,0,4),u[1]|=128,u[i-4]=s[0],u[i-3]=s[1],u[i-2]=s[2],u[i-1]=s[3],n?(a(e,s,u,i,e.length),[u]):(a(e,s,e,0,e.length),[u,e])):[u,e]}close(e,t,n,r){let i;if(void 0===e)i=o;else{if("number"!=typeof e||!u(e))throw new TypeError("First argument must be a valid error code number");if(void 0===t||""===t)i=Buffer.allocUnsafe(2),i.writeUInt16BE(e,0);else{const n=Buffer.byteLength(t);if(n>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+n),i.writeUInt16BE(e,0),i.write(t,2)}}this._deflating?this.enqueue([this.doClose,i,n,r]):this.doClose(i,n,r)}doClose(e,t,n){this.sendFrame(c.frame(e,{fin:!0,rsv1:!1,opcode:8,mask:t,readOnly:!1}),n)}ping(e,t,n){const r=l(e);if(r.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPing,r,t,l.readOnly,n]):this.doPing(r,t,l.readOnly,n)}doPing(e,t,n,r){this.sendFrame(c.frame(e,{fin:!0,rsv1:!1,opcode:9,mask:t,readOnly:n}),r)}pong(e,t,n){const r=l(e);if(r.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPong,r,t,l.readOnly,n]):this.doPong(r,t,l.readOnly,n)}doPong(e,t,n,r){this.sendFrame(c.frame(e,{fin:!0,rsv1:!1,opcode:10,mask:t,readOnly:n}),r)}send(e,t,n){const r=l(e),o=this._extensions[i.extensionName];let u=t.binary?2:1,a=t.compress;if(this._firstFragment?(this._firstFragment=!1,a&&o&&(a=r.length>=o._threshold),this._compress=a):(a=!1,u=0),t.fin&&(this._firstFragment=!0),o){const e={fin:t.fin,rsv1:a,opcode:u,mask:t.mask,readOnly:l.readOnly};this._deflating?this.enqueue([this.dispatch,r,this._compress,e,n]):this.dispatch(r,this._compress,e,n)}else this.sendFrame(c.frame(r,{fin:t.fin,rsv1:!1,opcode:u,mask:t.mask,readOnly:l.readOnly}),n)}dispatch(e,t,n,r){if(!t)return void this.sendFrame(c.frame(e,n),r);const o=this._extensions[i.extensionName];this._bufferedBytes+=e.length,this._deflating=!0,o.compress(e,n.fin,(t,i)=>{if(this._socket.destroyed){const e=new Error("The socket was closed while data was being compressed");"function"==typeof r&&r(e);for(let t=0;t{"use strict";const{Duplex:r}=n(2413);function i(e){e.emit("close")}function o(){!this.destroyed&&this._writableState.finished&&this.destroy()}function u(e){this.removeListener("error",u),this.destroy(),0===this.listenerCount("error")&&this.emit("error",e)}e.exports=function(e,t){let n=!0;function a(){n&&e._socket.resume()}e.readyState===e.CONNECTING?e.once("open",(function(){e._receiver.removeAllListeners("drain"),e._receiver.on("drain",a)})):(e._receiver.removeAllListeners("drain"),e._receiver.on("drain",a));const l=new r({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",(function(t){l.push(t)||(n=!1,e._socket.pause())})),e.once("error",(function(e){l.destroyed||l.destroy(e)})),e.once("close",(function(){l.destroyed||l.push(null)})),l._destroy=function(t,n){if(e.readyState===e.CLOSED)return n(t),void process.nextTick(i,l);let r=!1;e.once("error",(function(e){r=!0,n(e)})),e.once("close",(function(){r||n(t),process.nextTick(i,l)})),e.terminate()},l._final=function(t){e.readyState!==e.CONNECTING?null!==e._socket&&(e._socket._writableState.finished?(t(),l._readableState.endEmitted&&l.destroy()):(e._socket.once("finish",(function(){t()})),e.close())):e.once("open",(function(){l._final(t)}))},l._read=function(){e.readyState!==e.OPEN||n||(n=!0,e._receiver._writableState.needDrain||e._socket.resume())},l._write=function(t,n,r){e.readyState!==e.CONNECTING?e.send(t,r):e.once("open",(function(){l._write(t,n,r)}))},l.on("end",o),l.on("error",u),l}},9498:(e,t,n)=>{"use strict";try{const e=n(Object(function(){var e=new Error("Cannot find module 'utf-8-validate'");throw e.code="MODULE_NOT_FOUND",e}()));t.isValidUTF8="object"==typeof e?e.Validation.isValidUTF8:e}catch(e){t.isValidUTF8=()=>!0}t.isValidStatusCode=e=>e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},43:(e,t,n)=>{"use strict";const r=n(8614),{createHash:i}=n(6417),{createServer:o,STATUS_CODES:u}=n(8605),a=n(2309),l=n(5760),{format:s,parse:c}=n(8162),{GUID:f,kWebSocket:d}=n(5739),p=/^[+/0-9A-Za-z]{22}==$/;function h(e){e.emit("close")}function v(){this.destroy()}function m(e,t,n,r){e.writable&&(n=n||u[t],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(n),...r},e.write(`HTTP/1.1 ${t} ${u[t]}\r\n`+Object.keys(r).map(e=>`${e}: ${r[e]}`).join("\r\n")+"\r\n\r\n"+n)),e.removeListener("error",v),e.destroy()}e.exports=class extends r{constructor(e,t){if(super(),null==(e={maxPayload:104857600,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,...e}).port&&!e.server&&!e.noServer)throw new TypeError('One of the "port", "server", or "noServer" options must be specified');null!=e.port?(this._server=o((e,t)=>{const n=u[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":"text/plain"}),t.end(n)}),this._server.listen(e.port,e.host,e.backlog,t)):e.server&&(this._server=e.server),this._server&&(this._removeListeners=function(e,t){for(const n of Object.keys(t))e.on(n,t[n]);return function(){for(const n of Object.keys(t))e.removeListener(n,t[n])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(e,t,n)=>{this.handleUpgrade(e,t,n,t=>{this.emit("connection",t,e)})}})),!0===e.perMessageDeflate&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set),this.options=e}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(e&&this.once("close",e),this.clients)for(const e of this.clients)e.terminate();const t=this._server;t&&(this._removeListeners(),this._removeListeners=this._server=null,null!=this.options.port)?t.close(()=>this.emit("close")):process.nextTick(h,this)}shouldHandle(e){if(this.options.path){const t=e.url.indexOf("?");if((-1!==t?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on("error",v);const i=void 0!==e.headers["sec-websocket-key"]&&e.headers["sec-websocket-key"].trim(),o=+e.headers["sec-websocket-version"],u={};if("GET"!==e.method||"websocket"!==e.headers.upgrade.toLowerCase()||!i||!p.test(i)||8!==o&&13!==o||!this.shouldHandle(e))return m(t,400);if(this.options.perMessageDeflate){const n=new a(this.options.perMessageDeflate,!0,this.options.maxPayload);try{const t=c(e.headers["sec-websocket-extensions"]);t[a.extensionName]&&(n.accept(t[a.extensionName]),u[a.extensionName]=n)}catch(e){return m(t,400)}}if(this.options.verifyClient){const a={origin:e.headers[""+(8===o?"sec-websocket-origin":"origin")],secure:!(!e.connection.authorized&&!e.connection.encrypted),req:e};if(2===this.options.verifyClient.length)return void this.options.verifyClient(a,(o,a,l,s)=>{if(!o)return m(t,a||401,l,s);this.completeUpgrade(i,u,e,t,n,r)});if(!this.options.verifyClient(a))return m(t,401)}this.completeUpgrade(i,u,e,t,n,r)}completeUpgrade(e,t,n,r,o,u){if(!r.readable||!r.writable)return r.destroy();if(r[d])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");const c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade","Sec-WebSocket-Accept: "+i("sha1").update(e+f).digest("base64")],p=new l(null);let h=n.headers["sec-websocket-protocol"];if(h&&(h=h.trim().split(/ *, */),h=this.options.handleProtocols?this.options.handleProtocols(h,n):h[0],h&&(c.push("Sec-WebSocket-Protocol: "+h),p.protocol=h)),t[a.extensionName]){const e=t[a.extensionName].params,n=s({[a.extensionName]:[e]});c.push("Sec-WebSocket-Extensions: "+n),p._extensions=t}this.emit("headers",c,n),r.write(c.concat("\r\n").join("\r\n")),r.removeListener("error",v),p.setSocket(r,o,this.options.maxPayload),this.clients&&(this.clients.add(p),p.on("close",()=>this.clients.delete(p))),u(p)}}},5760:(e,t,n)=>{"use strict";const r=n(8614),i=n(7211),o=n(8605),u=n(1631),a=n(4016),{randomBytes:l,createHash:s}=n(6417),{URL:c}=n(8835),f=n(2309),d=n(1762),p=n(9576),{BINARY_TYPES:h,EMPTY_BUFFER:v,GUID:m,kStatusCode:g,kWebSocket:y,NOOP:_}=n(5739),{addEventListener:b,removeEventListener:w}=n(7002),{format:E,parse:D}=n(8162),{toBuffer:S}=n(8716),C=["CONNECTING","OPEN","CLOSING","CLOSED"],k=[8,13];class T extends r{constructor(e,t,n){super(),this.readyState=T.CONNECTING,this.protocol="",this._binaryType=h[0],this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage="",this._closeTimer=null,this._closeCode=1006,this._extensions={},this._receiver=null,this._sender=null,this._socket=null,null!==e?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,Array.isArray(t)?t=t.join(", "):"object"==typeof t&&null!==t&&(n=t,t=void 0),function e(t,n,r,u){const a={protocolVersion:k[1],maxPayload:104857600,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...u,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:void 0,host:void 0,path:void 0,port:void 0};if(!k.includes(a.protocolVersion))throw new RangeError(`Unsupported protocol version: ${a.protocolVersion} (supported versions: ${k.join(", ")})`);let d;n instanceof c?(d=n,t.url=n.href):(d=new c(n),t.url=n);const p="ws+unix:"===d.protocol;if(!(d.host||p&&d.pathname))throw new Error("Invalid URL: "+t.url);const h="wss:"===d.protocol||"https:"===d.protocol,v=h?443:80,g=l(16).toString("base64"),y=h?i.get:o.get;let _;a.createConnection=h?A:x,a.defaultPort=a.defaultPort||v,a.port=d.port||v,a.host=d.hostname.startsWith("[")?d.hostname.slice(1,-1):d.hostname,a.headers={"Sec-WebSocket-Version":a.protocolVersion,"Sec-WebSocket-Key":g,Connection:"Upgrade",Upgrade:"websocket",...a.headers},a.path=d.pathname+d.search,a.timeout=a.handshakeTimeout,a.perMessageDeflate&&(_=new f(!0!==a.perMessageDeflate?a.perMessageDeflate:{},!1,a.maxPayload),a.headers["Sec-WebSocket-Extensions"]=E({[f.extensionName]:_.offer()}));r&&(a.headers["Sec-WebSocket-Protocol"]=r);a.origin&&(a.protocolVersion<13?a.headers["Sec-WebSocket-Origin"]=a.origin:a.headers.Origin=a.origin);(d.username||d.password)&&(a.auth=`${d.username}:${d.password}`);if(p){const e=a.path.split(":");a.socketPath=e[0],a.path=e[1]}let b=t._req=y(a);a.timeout&&b.on("timeout",()=>{O(t,b,"Opening handshake has timed out")});b.on("error",e=>{t._req.aborted||(b=t._req=null,t.readyState=T.CLOSING,t.emit("error",e),t.emitClose())}),b.on("response",i=>{const o=i.headers.location,l=i.statusCode;if(o&&a.followRedirects&&l>=300&&l<400){if(++t._redirects>a.maxRedirects)return void O(t,b,"Maximum redirects exceeded");b.abort();const i=new c(o,n);e(t,i,r,u)}else t.emit("unexpected-response",b,i)||O(t,b,"Unexpected server response: "+i.statusCode)}),b.on("upgrade",(e,n,i)=>{if(t.emit("upgrade",e),t.readyState!==T.CONNECTING)return;b=t._req=null;const o=s("sha1").update(g+m).digest("base64");if(e.headers["sec-websocket-accept"]!==o)return void O(t,n,"Invalid Sec-WebSocket-Accept header");const u=e.headers["sec-websocket-protocol"],l=(r||"").split(/, */);let c;if(!r&&u?c="Server sent a subprotocol but none was requested":r&&!u?c="Server sent no subprotocol":u&&!l.includes(u)&&(c="Server sent an invalid subprotocol"),c)O(t,n,c);else{if(u&&(t.protocol=u),_)try{const n=D(e.headers["sec-websocket-extensions"]);n[f.extensionName]&&(_.accept(n[f.extensionName]),t._extensions[f.extensionName]=_)}catch(e){return void O(t,n,"Invalid Sec-WebSocket-Extensions header")}t.setSocket(n,i,a.maxPayload)}})}(this,e,t,n)):this._isServer=!0}get CONNECTING(){return T.CONNECTING}get CLOSING(){return T.CLOSING}get CLOSED(){return T.CLOSED}get OPEN(){return T.OPEN}get binaryType(){return this._binaryType}set binaryType(e){h.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}setSocket(e,t,n){const r=new d(this._binaryType,this._extensions,this._isServer,n);this._sender=new p(e,this._extensions),this._receiver=r,this._socket=e,r[y]=this,e[y]=this,r.on("conclude",I),r.on("drain",N),r.on("error",M),r.on("message",F),r.on("ping",L),r.on("pong",B),e.setTimeout(0),e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",j),e.on("data",U),e.on("end",z),e.on("error",W),this.readyState=T.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this.readyState=T.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[f.extensionName]&&this._extensions[f.extensionName].cleanup(),this._receiver.removeAllListeners(),this.readyState=T.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==T.CLOSED){if(this.readyState===T.CONNECTING){const e="WebSocket was closed before the connection was established";return O(this,this._req,e)}this.readyState!==T.CLOSING?(this.readyState=T.CLOSING,this._sender.close(e,t,!this._isServer,e=>{e||(this._closeFrameSent=!0,this._closeFrameReceived&&this._socket.end())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),3e4)):this._closeFrameSent&&this._closeFrameReceived&&this._socket.end()}}ping(e,t,n){if(this.readyState===T.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(n=e,e=t=void 0):"function"==typeof t&&(n=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===T.OPEN?(void 0===t&&(t=!this._isServer),this._sender.ping(e||v,t,n)):P(this,e,n)}pong(e,t,n){if(this.readyState===T.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(n=e,e=t=void 0):"function"==typeof t&&(n=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===T.OPEN?(void 0===t&&(t=!this._isServer),this._sender.pong(e||v,t,n)):P(this,e,n)}send(e,t,n){if(this.readyState===T.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof t&&(n=t,t={}),"number"==typeof e&&(e=e.toString()),this.readyState!==T.OPEN)return void P(this,e,n);const r={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[f.extensionName]||(r.compress=!1),this._sender.send(e||v,r,n)}terminate(){if(this.readyState!==T.CLOSED){if(this.readyState===T.CONNECTING){const e="WebSocket was closed before the connection was established";return O(this,this._req,e)}this._socket&&(this.readyState=T.CLOSING,this._socket.destroy())}}}function x(e){return e.path=e.socketPath,u.connect(e)}function A(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=e.host),a.connect(e)}function O(e,t,n){e.readyState=T.CLOSING;const r=new Error(n);Error.captureStackTrace(r,O),t.setHeader?(t.abort(),t.once("abort",e.emitClose.bind(e)),e.emit("error",r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function P(e,t,n){if(t){const n=S(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){n(new Error(`WebSocket is not open: readyState ${e.readyState} (${C[e.readyState]})`))}}function I(e,t){const n=this[y];n._socket.removeListener("data",U),n._socket.resume(),n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,1005===e?n.close():n.close(e,t)}function N(){this[y]._socket.resume()}function M(e){const t=this[y];t._socket.removeListener("data",U),t.readyState=T.CLOSING,t._closeCode=e[g],t.emit("error",e),t._socket.destroy()}function R(){this[y].emitClose()}function F(e){this[y].emit("message",e)}function L(e){const t=this[y];t.pong(e,!t._isServer,_),t.emit("ping",e)}function B(e){this[y].emit("pong",e)}function j(){const e=this[y];this.removeListener("close",j),this.removeListener("end",z),e.readyState=T.CLOSING,e._socket.read(),e._receiver.end(),this.removeListener("data",U),this[y]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",R),e._receiver.on("finish",R))}function U(e){this[y]._receiver.write(e)||this.pause()}function z(){const e=this[y];e.readyState=T.CLOSING,e._receiver.end(),this.end()}function W(){const e=this[y];this.removeListener("error",W),this.on("error",_),e&&(e.readyState=T.CLOSING,this.destroy())}C.forEach((e,t)=>{T[e]=t}),["open","error","close","message"].forEach(e=>{Object.defineProperty(T.prototype,"on"+e,{get(){const t=this.listeners(e);for(let e=0;e{"use strict";function r(e){const t=[...e.caches],n=t.shift();return void 0===n?i():{get:(e,i,o={miss:()=>Promise.resolve()})=>n.get(e,i,o).catch(()=>r({caches:t}).get(e,i,o)),set:(e,i)=>n.set(e,i).catch(()=>r({caches:t}).set(e,i)),delete:e=>n.delete(e).catch(()=>r({caches:t}).delete(e)),clear:()=>n.clear().catch(()=>r({caches:t}).clear())}}function i(){return{get:(e,t,n={miss:()=>Promise.resolve()})=>t().then(e=>Promise.all([e,n.miss(e)])).then(([e])=>e),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}}n.r(t),n.d(t,{createFallbackableCache:()=>r,createNullCache:()=>i})},6712:(e,t,n)=>{"use strict";function r(e={serializable:!0}){let t={};return{get(n,r,i={miss:()=>Promise.resolve()}){const o=JSON.stringify(n);if(o in t)return Promise.resolve(e.serializable?JSON.parse(t[o]):t[o]);const u=r(),a=i&&i.miss||(()=>Promise.resolve());return u.then(e=>a(e)).then(()=>u)},set:(n,r)=>(t[JSON.stringify(n)]=e.serializable?JSON.stringify(r):r,Promise.resolve(r)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}n.r(t),n.d(t,{createInMemoryCache:()=>r})},2223:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addABTest:()=>a,createAnalyticsClient:()=>u,deleteABTest:()=>l,getABTest:()=>s,getABTests:()=>c,stopABTest:()=>f});var r=n(1757),i=n(7858),o=n(5541);const u=e=>{const t=e.region||"us",n=(0,r.createAuth)(r.AuthMode.WithinHeaders,e.appId,e.apiKey),o=(0,i.createTransporter)({hosts:[{url:`analytics.${t}.algolia.com`}],...e,headers:{...n.headers(),"content-type":"application/json",...e.headers},queryParameters:{...n.queryParameters(),...e.queryParameters}}),u=e.appId;return(0,r.addMethods)({appId:u,transporter:o},e.methods)},a=e=>(t,n)=>e.transporter.write({method:o.N.Post,path:"2/abtests",data:t},n),l=e=>(t,n)=>e.transporter.write({method:o.N.Delete,path:(0,r.encode)("2/abtests/%s",t)},n),s=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("2/abtests/%s",t)},n),c=e=>t=>e.transporter.read({method:o.N.Get,path:"2/abtests"},t),f=e=>(t,n)=>e.transporter.write({method:o.N.Post,path:(0,r.encode)("2/abtests/%s/stop",t)},n)},1757:(e,t,n)=>{"use strict";function r(e,t,n){const r={"x-algolia-api-key":n,"x-algolia-application-id":t};return{headers:()=>e===f.WithinHeaders?r:{},queryParameters:()=>e===f.WithinQueryParameters?r:{}}}function i(e){let t=0;const n=()=>(t++,new Promise(r=>{setTimeout(()=>{r(e(n))},Math.min(100*t,1e3))}));return e(n)}function o(e,t=((e,t)=>Promise.resolve())){return Object.assign(e,{wait:n=>o(e.then(e=>Promise.all([t(e,n),e])).then(e=>e[1]))})}function u(e){let t=e.length-1;for(;t>0;t--){const n=Math.floor(Math.random()*(t+1)),r=e[t];e[t]=e[n],e[n]=r}return e}function a(e,t){return Object.keys(void 0!==t?t:{}).forEach(n=>{e[n]=t[n](e)}),e}function l(e,...t){let n=0;return e.replace(/%s/g,()=>encodeURIComponent(t[n++]))}n.r(t),n.d(t,{AuthMode:()=>f,addMethods:()=>a,createAuth:()=>r,createRetryablePromise:()=>i,createWaitablePromise:()=>o,destroy:()=>c,encode:()=>l,shuffle:()=>u,version:()=>s});const s="4.2.0",c=e=>()=>e.transporter.requester.destroy(),f={WithinQueryParameters:0,WithinHeaders:1}},103:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createRecommendationClient:()=>u,getPersonalizationStrategy:()=>a,setPersonalizationStrategy:()=>l});var r=n(1757),i=n(7858),o=n(5541);const u=e=>{const t=e.region||"us",n=(0,r.createAuth)(r.AuthMode.WithinHeaders,e.appId,e.apiKey),o=(0,i.createTransporter)({hosts:[{url:`recommendation.${t}.algolia.com`}],...e,headers:{...n.headers(),"content-type":"application/json",...e.headers},queryParameters:{...n.queryParameters(),...e.queryParameters}});return(0,r.addMethods)({appId:e.appId,transporter:o},e.methods)},a=e=>t=>e.transporter.read({method:o.N.Get,path:"1/strategies/personalization"},t),l=e=>(t,n)=>e.transporter.write({method:o.N.Post,path:"1/strategies/personalization",data:t},n)},6586:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ApiKeyACLEnum:()=>Te,BatchActionEnum:()=>xe,ScopeEnum:()=>Ae,StrategyEnum:()=>Oe,SynonymEnum:()=>Pe,addApiKey:()=>d,assignUserID:()=>p,assignUserIDs:()=>h,batch:()=>z,browseObjects:()=>W,browseRules:()=>H,browseSynonyms:()=>V,chunkedBatch:()=>q,clearObjects:()=>G,clearRules:()=>$,clearSynonyms:()=>Y,copyIndex:()=>v,copyRules:()=>m,copySettings:()=>g,copySynonyms:()=>y,createBrowsablePromise:()=>a,createMissingObjectIDError:()=>s,createObjectNotFoundError:()=>c,createSearchClient:()=>l,createValidUntilNotFoundError:()=>f,deleteApiKey:()=>_,deleteBy:()=>K,deleteIndex:()=>X,deleteObject:()=>Q,deleteObjects:()=>J,deleteRule:()=>Z,deleteSynonym:()=>ee,exists:()=>te,findObject:()=>ne,generateSecuredApiKey:()=>b,getApiKey:()=>w,getLogs:()=>E,getObject:()=>re,getObjectPosition:()=>ie,getObjects:()=>oe,getRule:()=>ue,getSecuredApiKeyRemainingValidity:()=>D,getSettings:()=>ae,getSynonym:()=>le,getTask:()=>se,getTopUserIDs:()=>S,getUserID:()=>C,hasPendingMappings:()=>k,initIndex:()=>T,listApiKeys:()=>x,listClusters:()=>A,listIndices:()=>O,listUserIDs:()=>P,moveIndex:()=>I,multipleBatch:()=>N,multipleGetObjects:()=>M,multipleQueries:()=>R,multipleSearchForFacetValues:()=>F,partialUpdateObject:()=>ce,partialUpdateObjects:()=>fe,removeUserID:()=>L,replaceAllObjects:()=>de,replaceAllRules:()=>pe,replaceAllSynonyms:()=>he,restoreApiKey:()=>B,saveObject:()=>ve,saveObjects:()=>me,saveRule:()=>ge,saveRules:()=>ye,saveSynonym:()=>_e,saveSynonyms:()=>be,search:()=>we,searchForFacetValues:()=>Ee,searchRules:()=>De,searchSynonyms:()=>Se,searchUserIDs:()=>j,setSettings:()=>Ce,updateApiKey:()=>U,waitTask:()=>ke});var r=n(1757),i=n(7858),o=n(5541),u=n(6417);function a(e){const t=n=>e.request(n).then(r=>{if(void 0!==e.batch&&e.batch(r.hits),!e.shouldStop(r))return r.cursor?t({cursor:r.cursor}):t({page:(n.page||0)+1})});return t({})}const l=e=>{const t=e.appId,n=(0,r.createAuth)(void 0!==e.authMode?e.authMode:r.AuthMode.WithinHeaders,t,e.apiKey),o=(0,i.createTransporter)({hosts:[{url:t+"-dsn.algolia.net",accept:i.CallEnum.Read},{url:t+".algolia.net",accept:i.CallEnum.Write}].concat((0,r.shuffle)([{url:t+"-1.algolianet.com"},{url:t+"-2.algolianet.com"},{url:t+"-3.algolianet.com"}])),...e,headers:{...n.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...n.queryParameters(),...e.queryParameters}}),u={transporter:o,appId:t,addAlgoliaAgent(e,t){o.userAgent.add({segment:e,version:t})},clearCache:()=>Promise.all([o.requestsCache.clear(),o.responsesCache.clear()]).then(()=>{})};return(0,r.addMethods)(u,e.methods)};function s(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function c(){return{name:"ObjectNotFoundError",message:"Object not found."}}function f(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}const d=e=>(t,n)=>{const{queryParameters:i,...u}=n||{},a={acl:t,...void 0!==i?{queryParameters:i}:{}};return(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:"1/keys",data:a},u),(t,n)=>(0,r.createRetryablePromise)(r=>w(e)(t.key,n).catch(e=>{if(404!==e.status)throw e;return r()})))},p=e=>(t,n,r)=>{const u=(0,i.createMappedRequestOptions)(r);return u.queryParameters["X-Algolia-User-ID"]=t,e.transporter.write({method:o.N.Post,path:"1/clusters/mapping",data:{cluster:n}},u)},h=e=>(t,n,r)=>e.transporter.write({method:o.N.Post,path:"1/clusters/mapping/batch",data:{users:t,cluster:n}},r),v=e=>(t,n,i)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/operation",t),data:{operation:"copy",destination:n}},i),(n,r)=>T(e)(t,{methods:{waitTask:ke}}).waitTask(n.taskID,r)),m=e=>(t,n,r)=>v(e)(t,n,{...r,scope:[Ae.Rules]}),g=e=>(t,n,r)=>v(e)(t,n,{...r,scope:[Ae.Settings]}),y=e=>(t,n,r)=>v(e)(t,n,{...r,scope:[Ae.Synonyms]}),_=e=>(t,n)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Delete,path:(0,r.encode)("1/keys/%s",t)},n),(n,i)=>(0,r.createRetryablePromise)(n=>w(e)(t,i).then(n).catch(e=>{if(404!==e.status)throw e}))),b=()=>(e,t)=>{const n=(0,i.serializeQueryParameters)(t),r=(0,u.createHmac)("sha256",e).update(n).digest("hex");return Buffer.from(r+n).toString("base64")},w=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/keys/%s",t)},n),E=e=>t=>e.transporter.read({method:o.N.Get,path:"1/logs"},t),D=()=>e=>{const t=Buffer.from(e,"base64").toString("ascii").match(/validUntil=(\d+)/);if(null===t)throw{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."};return parseInt(t[1],10)-Math.round((new Date).getTime()/1e3)},S=e=>t=>e.transporter.read({method:o.N.Get,path:"1/clusters/mapping/top"},t),C=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/clusters/mapping/%s",t)},n),k=e=>t=>{const{retrieveMappings:n,...r}=t||{};return!0===n&&(r.getClusters=!0),e.transporter.read({method:o.N.Get,path:"1/clusters/mapping/pending"},r)},T=e=>(t,n={})=>{const i={transporter:e.transporter,appId:e.appId,indexName:t};return(0,r.addMethods)(i,n.methods)},x=e=>t=>e.transporter.read({method:o.N.Get,path:"1/keys"},t),A=e=>t=>e.transporter.read({method:o.N.Get,path:"1/clusters"},t),O=e=>t=>e.transporter.read({method:o.N.Get,path:"1/indexes"},t),P=e=>t=>e.transporter.read({method:o.N.Get,path:"1/clusters/mapping"},t),I=e=>(t,n,i)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/operation",t),data:{operation:"move",destination:n}},i),(n,r)=>T(e)(t,{methods:{waitTask:ke}}).waitTask(n.taskID,r)),N=e=>(t,n)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:"1/indexes/*/batch",data:{requests:t}},n),(t,n)=>Promise.all(Object.keys(t.taskID).map(r=>T(e)(r,{methods:{waitTask:ke}}).waitTask(t.taskID[r],n)))),M=e=>(t,n)=>e.transporter.read({method:o.N.Post,path:"1/indexes/*/objects",data:{requests:t}},n),R=e=>(t,n)=>{const r=t.map(e=>({...e,params:(0,i.serializeQueryParameters)(e.params||{})}));return e.transporter.read({method:o.N.Post,path:"1/indexes/*/queries",data:{requests:r},cacheable:!0},n)},F=e=>(t,n)=>Promise.all(t.map(t=>{const{facetName:r,facetQuery:i,...o}=t.params;return T(e)(t.indexName,{methods:{searchForFacetValues:Ee}}).searchForFacetValues(r,i,{...n,...o})})),L=e=>(t,n)=>{const r=(0,i.createMappedRequestOptions)(n);return r.queryParameters["X-Algolia-User-ID"]=t,e.transporter.write({method:o.N.Delete,path:"1/clusters/mapping"},r)},B=e=>(t,n)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/keys/%s/restore",t)},n),(n,i)=>(0,r.createRetryablePromise)(n=>w(e)(t,i).catch(e=>{if(404!==e.status)throw e;return n()}))),j=e=>(t,n)=>e.transporter.read({method:o.N.Post,path:"1/clusters/mapping/search",data:{query:t}},n),U=e=>(t,n)=>{const i=Object.assign({},n),{queryParameters:u,...a}=n||{},l=u?{queryParameters:u}:{},s=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"];return(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Put,path:(0,r.encode)("1/keys/%s",t),data:l},a),(n,o)=>(0,r.createRetryablePromise)(n=>w(e)(t,o).then(e=>(e=>Object.keys(i).filter(e=>-1!==s.indexOf(e)).every(t=>e[t]===i[t]))(e)?Promise.resolve():n())))},z=e=>(t,n)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/batch",e.indexName),data:{requests:t}},n),(t,n)=>ke(e)(t.taskID,n)),W=e=>t=>a({...t,shouldStop:e=>void 0===e.cursor,request:n=>e.transporter.read({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/browse",e.indexName),data:n},t)}),H=e=>t=>{const n={hitsPerPage:1e3,...t};return a({...n,shouldStop:e=>e.hits.lengthDe(e)("",{...n,...t}).then(e=>({...e,hits:e.hits.map(e=>(delete e._highlightResult,e))}))})},V=e=>t=>{const n={hitsPerPage:1e3,...t};return a({...n,shouldStop:e=>e.hits.lengthSe(e)("",{...n,...t}).then(e=>({...e,hits:e.hits.map(e=>(delete e._highlightResult,e))}))})},q=e=>(t,n,i)=>{const{batchSize:o,...u}=i||{},a={taskIDs:[],objectIDs:[]},l=(r=0)=>{const i=[];let s;for(s=r;s({action:n,body:e})),u).then(e=>(a.objectIDs=a.objectIDs.concat(e.objectIDs),a.taskIDs.push(e.taskID),s++,l(s)))};return(0,r.createWaitablePromise)(l(),(t,n)=>Promise.all(t.taskIDs.map(t=>ke(e)(t,n))))},G=e=>t=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/clear",e.indexName)},t),(t,n)=>ke(e)(t.taskID,n)),$=e=>t=>{const{forwardToReplicas:n,...u}=t||{},a=(0,i.createMappedRequestOptions)(u);return n&&(a.queryParameters.forwardToReplicas=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/rules/clear",e.indexName)},a),(t,n)=>ke(e)(t.taskID,n))},Y=e=>t=>{const{forwardToReplicas:n,...u}=t||{},a=(0,i.createMappedRequestOptions)(u);return n&&(a.queryParameters.forwardToReplicas=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/synonyms/clear",e.indexName)},a),(t,n)=>ke(e)(t.taskID,n))},K=e=>(t,n)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/deleteByQuery",e.indexName),data:t},n),(t,n)=>ke(e)(t.taskID,n)),X=e=>t=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Delete,path:(0,r.encode)("1/indexes/%s",e.indexName)},t),(t,n)=>ke(e)(t.taskID,n)),Q=e=>(t,n)=>(0,r.createWaitablePromise)(J(e)([t],n).then(e=>({taskID:e.taskIDs[0]})),(t,n)=>ke(e)(t.taskID,n)),J=e=>(t,n)=>{const r=t.map(e=>({objectID:e}));return q(e)(r,xe.DeleteObject,n)},Z=e=>(t,n)=>{const{forwardToReplicas:u,...a}=n||{},l=(0,i.createMappedRequestOptions)(a);return u&&(l.queryParameters.forwardToReplicas=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Delete,path:(0,r.encode)("1/indexes/%s/rules/%s",e.indexName,t)},l),(t,n)=>ke(e)(t.taskID,n))},ee=e=>(t,n)=>{const{forwardToReplicas:u,...a}=n||{},l=(0,i.createMappedRequestOptions)(a);return u&&(l.queryParameters.forwardToReplicas=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Delete,path:(0,r.encode)("1/indexes/%s/synonyms/%s",e.indexName,t)},l),(t,n)=>ke(e)(t.taskID,n))},te=e=>t=>ae(e)(t).then(()=>!0).catch(e=>{if(404!==e.status)throw e;return!1}),ne=e=>(t,n)=>{const{query:r,paginate:i,...o}=n||{};let u=0;const a=()=>we(e)(r||"",{...o,page:u}).then(e=>{for(const[n,r]of Object.entries(e.hits))if(t(r))return{object:r,position:parseInt(n,10),page:u};if(u++,!1===i||u>=e.nbPages)throw{name:"ObjectNotFoundError",message:"Object not found."};return a()});return a()},re=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/indexes/%s/%s",e.indexName,t)},n),ie=()=>(e,t)=>{for(const[n,r]of Object.entries(e.hits))if(r.objectID===t)return parseInt(n,10);return-1},oe=e=>(t,n)=>{const{attributesToRetrieve:r,...i}=n||{},u=t.map(t=>({indexName:e.indexName,objectID:t,...r?{attributesToRetrieve:r}:{}}));return e.transporter.read({method:o.N.Post,path:"1/indexes/*/objects",data:{requests:u}},i)},ue=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/indexes/%s/rules/%s",e.indexName,t)},n),ae=e=>t=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/indexes/%s/settings",e.indexName),data:{getVersion:2}},t),le=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/indexes/%s/synonyms/%s",e.indexName,t)},n),se=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/indexes/%s/task/%s",e.indexName,t.toString())},n),ce=e=>(t,n)=>(0,r.createWaitablePromise)(fe(e)([t],n).then(e=>({objectID:e.objectIDs[0],taskID:e.taskIDs[0]})),(t,n)=>ke(e)(t.taskID,n)),fe=e=>(t,n)=>{const{createIfNotExists:r,...i}=n||{},o=r?xe.PartialUpdateObject:xe.PartialUpdateObjectNoCreate;return q(e)(t,o,i)},de=e=>(t,n)=>{const{safe:i,autoGenerateObjectIDIfNotExist:u,batchSize:a,...l}=n||{},s=(t,n,i,u)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/operation",t),data:{operation:i,destination:n}},u),(t,n)=>ke(e)(t.taskID,n)),c=Math.random().toString(36).substring(7),f=`${e.indexName}_tmp_${c}`,d=me({appId:e.appId,transporter:e.transporter,indexName:f});let p=[];const h=s(e.indexName,f,"copy",{...l,scope:["settings","synonyms","rules"]});p.push(h);const v=(i?h.wait(l):h).then(()=>{const e=d(t,{...l,autoGenerateObjectIDIfNotExist:u,batchSize:a});return p.push(e),i?e.wait(l):e}).then(()=>{const t=s(f,e.indexName,"move",l);return p.push(t),i?t.wait(l):t}).then(()=>Promise.all(p)).then(([e,t,n])=>({objectIDs:t.objectIDs,taskIDs:[e.taskID,...t.taskIDs,n.taskID]}));return(0,r.createWaitablePromise)(v,(e,t)=>Promise.all(p.map(e=>e.wait(t))))},pe=e=>(t,n)=>ye(e)(t,{...n,clearExistingRules:!0}),he=e=>(t,n)=>be(e)(t,{...n,replaceExistingSynonyms:!0}),ve=e=>(t,n)=>(0,r.createWaitablePromise)(me(e)([t],n).then(e=>({objectID:e.objectIDs[0],taskID:e.taskIDs[0]})),(t,n)=>ke(e)(t.taskID,n)),me=e=>(t,n)=>{const{autoGenerateObjectIDIfNotExist:i,...o}=n||{},u=i?xe.AddObject:xe.UpdateObject;if(u===xe.UpdateObject)for(const e of t)if(void 0===e.objectID)return(0,r.createWaitablePromise)(Promise.reject({name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}));return q(e)(t,u,o)},ge=e=>(t,n)=>ye(e)([t],n),ye=e=>(t,n)=>{const{forwardToReplicas:u,clearExistingRules:a,...l}=n||{},s=(0,i.createMappedRequestOptions)(l);return u&&(s.queryParameters.forwardToReplicas=1),a&&(s.queryParameters.clearExistingRules=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/rules/batch",e.indexName),data:t},s),(t,n)=>ke(e)(t.taskID,n))},_e=e=>(t,n)=>be(e)([t],n),be=e=>(t,n)=>{const{forwardToReplicas:u,replaceExistingSynonyms:a,...l}=n||{},s=(0,i.createMappedRequestOptions)(l);return u&&(s.queryParameters.forwardToReplicas=1),a&&(s.queryParameters.replaceExistingSynonyms=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/synonyms/batch",e.indexName),data:t},s),(t,n)=>ke(e)(t.taskID,n))},we=e=>(t,n)=>e.transporter.read({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},n),Ee=e=>(t,n,i)=>e.transporter.read({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:n},cacheable:!0},i),De=e=>(t,n)=>e.transporter.read({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/rules/search",e.indexName),data:{query:t}},n),Se=e=>(t,n)=>e.transporter.read({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/synonyms/search",e.indexName),data:{query:t}},n),Ce=e=>(t,n)=>{const{forwardToReplicas:u,...a}=n||{},l=(0,i.createMappedRequestOptions)(a);return u&&(l.queryParameters.forwardToReplicas=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Put,path:(0,r.encode)("1/indexes/%s/settings",e.indexName),data:t},l),(t,n)=>ke(e)(t.taskID,n))},ke=e=>(t,n)=>(0,r.createRetryablePromise)(r=>se(e)(t,n).then(e=>"published"!==e.status?r():void 0)),Te={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",ListIndexes:"listIndexes",Logs:"logs",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},xe={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject"},Ae={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},Oe={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},Pe={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"}},8045:(e,t,n)=>{"use strict";function r(){return{debug:(e,t)=>Promise.resolve(),info:(e,t)=>Promise.resolve(),error:(e,t)=>Promise.resolve()}}n.r(t),n.d(t,{LogLevelEnum:()=>i,createNullLogger:()=>r});const i={Debug:1,Info:2,Error:3}},5541:(e,t,n)=>{"use strict";n.d(t,{N:()=>r});const r={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"}},9178:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createNodeHttpRequester:()=>u});var r=n(8605),i=n(7211),o=n(8835);function u(){const e={keepAlive:!0},t=new r.Agent(e),n=new i.Agent(e);return{send:e=>new Promise(u=>{const a=(0,o.parse)(e.url),l=null===a.query?a.pathname:`${a.pathname}?${a.query}`,s={agent:"https:"===a.protocol?n:t,hostname:a.hostname,path:l,method:e.method,headers:e.headers,...void 0!==a.port?{port:a.port||""}:{}},c=("https:"===a.protocol?i:r).request(s,e=>{let t="";e.on("data",e=>t+=e),e.on("end",()=>{clearTimeout(d),clearTimeout(p),u({status:e.statusCode||0,content:t,isTimedOut:!1})})}),f=(e,t)=>setTimeout(()=>{c.abort(),u({status:0,content:t,isTimedOut:!0})},1e3*e),d=f(e.connectTimeout,"Connection timeout");let p;c.on("error",e=>{clearTimeout(d),clearTimeout(p),u({status:0,content:e.message,isTimedOut:!1})}),c.once("response",()=>{clearTimeout(d),p=f(e.responseTimeout,"Socket timeout")}),void 0!==e.data&&c.write(e.data),c.end()}),destroy:()=>(t.destroy(),n.destroy(),Promise.resolve())}}},7858:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CallEnum:()=>o,HostStatusEnum:()=>u,createApiError:()=>E,createDeserializationError:()=>D,createMappedRequestOptions:()=>i,createRetryError:()=>S,createStatefulHost:()=>a,createStatelessHost:()=>c,createTransporter:()=>d,createUserAgent:()=>p,deserializeFailure:()=>v,deserializeSuccess:()=>h,isStatefulHostTimeouted:()=>s,isStatefulHostUp:()=>l,serializeData:()=>y,serializeHeaders:()=>_,serializeQueryParameters:()=>g,serializeUrl:()=>m,stackFrameWithoutCredentials:()=>w,stackTraceWithoutCredentials:()=>b});var r=n(5541);function i(e,t){const n=e||{},r=n.data||{};return Object.keys(n).forEach(e=>{-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(r[e]=n[e])}),{data:Object.entries(r).length>0?r:void 0,timeout:n.timeout||t,headers:n.headers||{},queryParameters:n.queryParameters||{},cacheable:n.cacheable}}const o={Read:1,Write:2,Any:3},u={Up:1,Down:2,Timeouted:3};function a(e,t=u.Up){return{...e,status:t,lastUpdate:Date.now()}}function l(e){return e.status===u.Up||Date.now()-e.lastUpdate>12e4}function s(e){return e.status===u.Timeouted&&Date.now()-e.lastUpdate<=12e4}function c(e){return{protocol:e.protocol||"https",url:e.url,accept:e.accept||o.Any}}function f(e,t,n,i){const o=[],f=y(n,i),d=_(e,i),p=n.method,g=n.method!==r.N.Get?{}:{...n.data,...i.data},E={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...g,...i.queryParameters};let D=0;const C=(t,r)=>{const l=t.pop();if(void 0===l)throw S(b(o));const s={data:f,headers:d,method:p,url:m(l,n.path,E),connectTimeout:r(D,e.timeouts.connect),responseTimeout:r(D,i.timeout)},c=e=>{const n={request:s,response:e,host:l,triesLeft:t.length};return o.push(n),n},g={onSucess:e=>h(e),onRetry(n){const i=c(n);return n.isTimedOut&&D++,Promise.all([e.logger.info("Retryable failure",w(i)),e.hostsCache.set(l,a(l,n.isTimedOut?u.Timeouted:u.Down))]).then(()=>C(t,r))},onFail(e){throw c(e),v(e,b(o))}};return e.requester.send(s).then(e=>((e,t)=>(e=>{const t=e.status;return e.isTimedOut||(({isTimedOut:e,status:t})=>!e&&0==~~t)(e)||2!=~~(t/100)&&4!=~~(t/100)})(e)?t.onRetry(e):(({status:e})=>2==~~(e/100))(e)?t.onSucess(e):t.onFail(e))(e,g))};return function(e,t){return Promise.all(t.map(t=>e.get(t,()=>Promise.resolve(a(t))))).then(e=>{const n=e.filter(e=>l(e)),r=e.filter(e=>s(e)),i=[...n,...r];return{getTimeout:(e,t)=>(0===r.length&&0===e?1:r.length+3+e)*t,statelessHosts:i.length>0?i.map(e=>c(e)):t}})}(e.hostsCache,t).then(e=>C([...e.statelessHosts].reverse(),e.getTimeout))}function d(e){const{hostsCache:t,logger:n,requester:r,requestsCache:u,responsesCache:a,timeouts:l,userAgent:s,hosts:d,queryParameters:p,headers:h}=e,v={hostsCache:t,logger:n,requester:r,requestsCache:u,responsesCache:a,timeouts:l,userAgent:s,headers:h,queryParameters:p,hosts:d.map(e=>c(e)),read(e,t){const n=i(t,v.timeouts.read),r=()=>f(v,v.hosts.filter(e=>0!=(e.accept&o.Read)),e,n);if(!0!==(void 0!==n.cacheable?n.cacheable:e.cacheable))return r();const u={request:e,mappedRequestOptions:n,transporter:{queryParameters:v.queryParameters,headers:v.headers}};return v.responsesCache.get(u,()=>v.requestsCache.get(u,()=>v.requestsCache.set(u,r()).then(e=>Promise.all([v.requestsCache.delete(u),e]),e=>Promise.all([v.requestsCache.delete(u),Promise.reject(e)])).then(([e,t])=>t)),{miss:e=>v.responsesCache.set(u,e)})},write:(e,t)=>f(v,v.hosts.filter(e=>0!=(e.accept&o.Write)),e,i(t,v.timeouts.write))};return v}function p(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const n=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(n)&&(t.value=`${t.value}${n}`),t}};return t}function h(e){try{return JSON.parse(e.content)}catch(t){throw D(t.message,e)}}function v({content:e,status:t},n){let r=e;try{r=JSON.parse(e).message}catch(e){}return E(r,t,n)}function m(e,t,n){const r=g(n);let i=`${e.protocol}://${e.url}/${"/"===t.charAt(0)?t.substr(1):t}`;return r.length&&(i+="?"+r),i}function g(e){return Object.keys(e).map(t=>{return function(e,...t){let n=0;return e.replace(/%s/g,()=>encodeURIComponent(t[n++]))}("%s=%s",t,(n=e[t],"[object Object]"===Object.prototype.toString.call(n)||"[object Array]"===Object.prototype.toString.call(n)?JSON.stringify(e[t]):e[t]));var n}).join("&")}function y(e,t){if(e.method===r.N.Get||void 0===e.data&&void 0===t.data)return;const n=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(n)}function _(e,t){const n={...e.headers,...t.headers},r={};return Object.keys(n).forEach(e=>{const t=n[e];r[e.toLowerCase()]=t}),r}function b(e){return e.map(e=>w(e))}function w(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function E(e,t,n){return{name:"ApiError",message:e,status:t,transporterStackTrace:n}}function D(e,t){return{name:"DeserializationError",message:e,response:t}}function S(e){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:e}}},8774:(e,t,n)=>{"use strict";var r=n(469),i=n(6712),o=n(2223),u=n(1757),a=n(103),l=n(6586),s=n(8045),c=n(9178),f=n(7858);function d(e,t,n){const d={appId:e,apiKey:t,timeouts:{connect:2,read:5,write:30},requester:c.createNodeHttpRequester(),logger:s.createNullLogger(),responsesCache:r.createNullCache(),requestsCache:r.createNullCache(),hostsCache:i.createInMemoryCache(),userAgent:f.createUserAgent(u.version).add({segment:"Node.js",version:process.versions.node})};return l.createSearchClient({...d,...n,methods:{search:l.multipleQueries,searchForFacetValues:l.multipleSearchForFacetValues,multipleBatch:l.multipleBatch,multipleGetObjects:l.multipleGetObjects,multipleQueries:l.multipleQueries,copyIndex:l.copyIndex,copySettings:l.copySettings,copyRules:l.copyRules,copySynonyms:l.copySynonyms,moveIndex:l.moveIndex,listIndices:l.listIndices,getLogs:l.getLogs,listClusters:l.listClusters,multipleSearchForFacetValues:l.multipleSearchForFacetValues,getApiKey:l.getApiKey,addApiKey:l.addApiKey,listApiKeys:l.listApiKeys,updateApiKey:l.updateApiKey,deleteApiKey:l.deleteApiKey,restoreApiKey:l.restoreApiKey,assignUserID:l.assignUserID,assignUserIDs:l.assignUserIDs,getUserID:l.getUserID,searchUserIDs:l.searchUserIDs,listUserIDs:l.listUserIDs,getTopUserIDs:l.getTopUserIDs,removeUserID:l.removeUserID,hasPendingMappings:l.hasPendingMappings,generateSecuredApiKey:l.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:l.getSecuredApiKeyRemainingValidity,destroy:u.destroy,initIndex:e=>t=>l.initIndex(e)(t,{methods:{batch:l.batch,delete:l.deleteIndex,getObject:l.getObject,getObjects:l.getObjects,saveObject:l.saveObject,saveObjects:l.saveObjects,search:l.search,searchForFacetValues:l.searchForFacetValues,waitTask:l.waitTask,setSettings:l.setSettings,getSettings:l.getSettings,partialUpdateObject:l.partialUpdateObject,partialUpdateObjects:l.partialUpdateObjects,deleteObject:l.deleteObject,deleteObjects:l.deleteObjects,deleteBy:l.deleteBy,clearObjects:l.clearObjects,browseObjects:l.browseObjects,getObjectPosition:l.getObjectPosition,findObject:l.findObject,exists:l.exists,saveSynonym:l.saveSynonym,saveSynonyms:l.saveSynonyms,getSynonym:l.getSynonym,searchSynonyms:l.searchSynonyms,browseSynonyms:l.browseSynonyms,deleteSynonym:l.deleteSynonym,clearSynonyms:l.clearSynonyms,replaceAllObjects:l.replaceAllObjects,replaceAllSynonyms:l.replaceAllSynonyms,searchRules:l.searchRules,getRule:l.getRule,deleteRule:l.deleteRule,saveRule:l.saveRule,saveRules:l.saveRules,replaceAllRules:l.replaceAllRules,browseRules:l.browseRules,clearRules:l.clearRules}}),initAnalytics:()=>e=>o.createAnalyticsClient({...d,...e,methods:{addABTest:o.addABTest,getABTest:o.getABTest,getABTests:o.getABTests,stopABTest:o.stopABTest,deleteABTest:o.deleteABTest}}),initRecommendation:()=>e=>a.createRecommendationClient({...d,...e,methods:{getPersonalizationStrategy:a.getPersonalizationStrategy,setPersonalizationStrategy:a.setPersonalizationStrategy}})}})}d.version=u.version,e.exports=d},4410:(e,t,n)=>{const r=n(8774);e.exports=r,e.exports.default=r},7589:e=>{"use strict";const t=e.exports;e.exports.default=t;const n="[",r="]",i="",o=";",u="Apple_Terminal"===process.env.TERM_PROGRAM;t.cursorTo=(e,t)=>{if("number"!=typeof e)throw new TypeError("The `x` argument is required");return"number"!=typeof t?n+(e+1)+"G":n+(t+1)+";"+(e+1)+"H"},t.cursorMove=(e,t)=>{if("number"!=typeof e)throw new TypeError("The `x` argument is required");let r="";return e<0?r+=n+-e+"D":e>0&&(r+=n+e+"C"),t<0?r+=n+-t+"A":t>0&&(r+=n+t+"B"),r},t.cursorUp=(e=1)=>n+e+"A",t.cursorDown=(e=1)=>n+e+"B",t.cursorForward=(e=1)=>n+e+"C",t.cursorBackward=(e=1)=>n+e+"D",t.cursorLeft="",t.cursorSavePosition=u?"7":"",t.cursorRestorePosition=u?"8":"",t.cursorGetPosition="",t.cursorNextLine="",t.cursorPrevLine="",t.cursorHide="[?25l",t.cursorShow="[?25h",t.eraseLines=e=>{let n="";for(let r=0;r[r,"8",o,o,t,i,e,r,"8",o,o,i].join(""),t.image=(e,t={})=>{let n=r+"1337;File=inline=1";return t.width&&(n+=";width="+t.width),t.height&&(n+=";height="+t.height),!1===t.preserveAspectRatio&&(n+=";preserveAspectRatio=0"),n+":"+e.toString("base64")+i},t.iTerm={setCwd:(e=process.cwd())=>`${r}50;CurrentDir=${e}${i}`,annotation:(e,t={})=>{let n=r+"1337;";const o=void 0!==t.x,u=void 0!==t.y;if((o||u)&&(!o||!u||void 0===t.length))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return e=e.replace(/\|/g,""),n+=t.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",t.length>0?n+=(o?[e,t.length,t.x,t.y]:[t.length,e]).join("|"):n+=e,n+i}}},5378:e=>{"use strict";e.exports=e=>{e=Object.assign({onlyFirst:!1},e);const t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e.onlyFirst?void 0:"g")}},1337:e=>{"use strict";e.exports=({onlyFirst:e=!1}={})=>{const t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}},8483:(e,t,n)=>{"use strict";e=n.nmd(e);const r=(e,t)=>(...n)=>`[${e(...n)+t}m`,i=(e,t)=>(...n)=>{const r=e(...n);return`[${38+t};5;${r}m`},o=(e,t)=>(...n)=>{const r=e(...n);return`[${38+t};2;${r[0]};${r[1]};${r[2]}m`},u=e=>e,a=(e,t,n)=>[e,t,n],l=(e,t,n)=>{Object.defineProperty(e,t,{get:()=>{const r=n();return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0}),r},enumerable:!0,configurable:!0})};let s;const c=(e,t,r,i)=>{void 0===s&&(s=n(2744));const o=i?10:0,u={};for(const[n,i]of Object.entries(s)){const a="ansi16"===n?"ansi":n;n===t?u[a]=e(r,o):"object"==typeof i&&(u[a]=e(i[t],o))}return u};Object.defineProperty(e,"exports",{enumerable:!0,get:function(){const e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(const[n,r]of Object.entries(t)){for(const[n,i]of Object.entries(r))t[n]={open:`[${i[0]}m`,close:`[${i[1]}m`},r[n]=t[n],e.set(i[0],i[1]);Object.defineProperty(t,n,{value:r,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="",t.bgColor.close="",l(t.color,"ansi",()=>c(r,"ansi16",u,!1)),l(t.color,"ansi256",()=>c(i,"ansi256",u,!1)),l(t.color,"ansi16m",()=>c(o,"rgb",a,!1)),l(t.bgColor,"ansi",()=>c(r,"ansi16",u,!0)),l(t.bgColor,"ansi256",()=>c(i,"ansi256",u,!0)),l(t.bgColor,"ansi16m",()=>c(o,"rgb",a,!0)),t}})},5640:e=>{"use strict";e.exports=e=>e&&e.exact?new RegExp("^[\ud800-\udbff][\udc00-\udfff]$"):new RegExp("[\ud800-\udbff][\udc00-\udfff]","g")},409:e=>{"use strict";e.exports=e=>e&&e.exact?new RegExp("^[\ud800-\udbff][\udc00-\udfff]$"):new RegExp("[\ud800-\udbff][\udc00-\udfff]","g")},2633:e=>{"use strict";e.exports=(e,{include:t,exclude:n}={})=>{const r=e=>{const r=t=>"string"==typeof t?e===t:t.test(e);return t?t.some(r):!n||!n.some(r)};for(const[t,n]of(e=>{const t=new Set;do{for(const n of Reflect.ownKeys(e))t.add([e,n])}while((e=Reflect.getPrototypeOf(e))&&e!==Object.prototype);return t})(e.constructor.prototype)){if("constructor"===n||!r(n))continue;const i=Reflect.getOwnPropertyDescriptor(t,n);i&&"function"==typeof i.value&&(e[n]=e[n].bind(e))}return e}},5882:(e,t,n)=>{"use strict";const r=n(8483),{stdout:i,stderr:o}=n(9428),{stringReplaceAll:u,stringEncaseCRLFWithFirstIndex:a}=n(3327),l=["ansi","ansi","ansi256","ansi16m"],s=Object.create(null);class c{constructor(e){return f(e)}}const f=e=>{const t={};return((e,t={})=>{if(t.level>3||t.level<0)throw new Error("The `level` option should be an integer from 0 to 3");const n=i?i.level:0;e.level=void 0===t.level?n:t.level})(t,e),t.template=(...e)=>_(t.template,...e),Object.setPrototypeOf(t,d.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=c,t.template};function d(e){return f(e)}for(const[e,t]of Object.entries(r))s[e]={get(){const n=m(this,v(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:n}),n}};s.visible={get(){const e=m(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};const p=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(const e of p)s[e]={get(){const{level:t}=this;return function(...n){const i=v(r.color[l[t]][e](...n),r.color.close,this._styler);return m(this,i,this._isEmpty)}}};for(const e of p){s["bg"+e[0].toUpperCase()+e.slice(1)]={get(){const{level:t}=this;return function(...n){const i=v(r.bgColor[l[t]][e](...n),r.bgColor.close,this._styler);return m(this,i,this._isEmpty)}}}}const h=Object.defineProperties(()=>{},{...s,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),v=(e,t,n)=>{let r,i;return void 0===n?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},m=(e,t,n)=>{const r=(...e)=>g(r,1===e.length?""+e[0]:e.join(" "));return r.__proto__=h,r._generator=e,r._styler=t,r._isEmpty=n,r},g=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let n=e._styler;if(void 0===n)return t;const{openAll:r,closeAll:i}=n;if(-1!==t.indexOf(""))for(;void 0!==n;)t=u(t,n.close,n.open),n=n.parent;const o=t.indexOf("\n");return-1!==o&&(t=a(t,i,r,o)),r+t+i};let y;const _=(e,...t)=>{const[r]=t;if(!Array.isArray(r))return t.join(" ");const i=t.slice(1),o=[r.raw[0]];for(let e=1;e{"use strict";const t=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,n=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,r=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,i=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,o=new Map([["n","\n"],["r","\r"],["t","\t"],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a",""]]);function u(e){const t="u"===e[0],n="{"===e[1];return t&&!n&&5===e.length||"x"===e[0]&&3===e.length?String.fromCharCode(parseInt(e.slice(1),16)):t&&n?String.fromCodePoint(parseInt(e.slice(2,-1),16)):o.get(e)||e}function a(e,t){const n=[],o=t.trim().split(/\s*,\s*/g);let a;for(const t of o){const o=Number(t);if(Number.isNaN(o)){if(!(a=t.match(r)))throw new Error(`Invalid Chalk template style argument: ${t} (in style '${e}')`);n.push(a[2].replace(i,(e,t,n)=>t?u(t):n))}else n.push(o)}return n}function l(e){n.lastIndex=0;const t=[];let r;for(;null!==(r=n.exec(e));){const e=r[1];if(r[2]){const n=a(e,r[2]);t.push([e].concat(n))}else t.push([e])}return t}function s(e,t){const n={};for(const e of t)for(const t of e.styles)n[t[0]]=e.inverse?null:t.slice(1);let r=e;for(const[e,t]of Object.entries(n))if(Array.isArray(t)){if(!(e in r))throw new Error("Unknown Chalk style: "+e);r=t.length>0?r[e](...t):r[e]}return r}e.exports=(e,n)=>{const r=[],i=[];let o=[];if(n.replace(t,(t,n,a,c,f,d)=>{if(n)o.push(u(n));else if(c){const t=o.join("");o=[],i.push(0===r.length?t:s(e,r)(t)),r.push({inverse:a,styles:l(c)})}else if(f){if(0===r.length)throw new Error("Found extraneous } in Chalk template literal");i.push(s(e,r)(o.join(""))),o=[],r.pop()}else o.push(d)}),i.push(o.join("")),r.length>0){const e=`Chalk template literal is missing ${r.length} closing bracket${1===r.length?"":"s"} (\`}\`)`;throw new Error(e)}return i.join("")}},3327:e=>{"use strict";e.exports={stringReplaceAll:(e,t,n)=>{let r=e.indexOf(t);if(-1===r)return e;const i=t.length;let o=0,u="";do{u+=e.substr(o,r-o)+t+n,o=r+i,r=e.indexOf(t,o)}while(-1!==r);return u+=e.substr(o),u},stringEncaseCRLFWithFirstIndex:(e,t,n,r)=>{let i=0,o="";do{const u="\r"===e[r-1];o+=e.substr(i,(u?r-1:r)-i)+t+(u?"\r\n":"\n")+n,i=r+1,r=e.indexOf("\n",i)}while(-1!==r);return o+=e.substr(i),o}}},1525:(e,t,n)=>{"use strict";const r=n(8483),{stdout:i,stderr:o}=n(9428),{stringReplaceAll:u,stringEncaseCRLFWithFirstIndex:a}=n(6539),{isArray:l}=Array,s=["ansi","ansi","ansi256","ansi16m"],c=Object.create(null);class f{constructor(e){return d(e)}}const d=e=>{const t={};return((e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");const n=i?i.level:0;e.level=void 0===t.level?n:t.level})(t,e),t.template=(...e)=>b(t.template,...e),Object.setPrototypeOf(t,p.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=f,t.template};function p(e){return d(e)}for(const[e,t]of Object.entries(r))c[e]={get(){const n=g(this,m(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:n}),n}};c.visible={get(){const e=g(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};const h=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(const e of h)c[e]={get(){const{level:t}=this;return function(...n){const i=m(r.color[s[t]][e](...n),r.color.close,this._styler);return g(this,i,this._isEmpty)}}};for(const e of h){c["bg"+e[0].toUpperCase()+e.slice(1)]={get(){const{level:t}=this;return function(...n){const i=m(r.bgColor[s[t]][e](...n),r.bgColor.close,this._styler);return g(this,i,this._isEmpty)}}}}const v=Object.defineProperties(()=>{},{...c,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),m=(e,t,n)=>{let r,i;return void 0===n?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},g=(e,t,n)=>{const r=(...e)=>l(e[0])&&l(e[0].raw)?y(r,b(r,...e)):y(r,1===e.length?""+e[0]:e.join(" "));return Object.setPrototypeOf(r,v),r._generator=e,r._styler=t,r._isEmpty=n,r},y=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let n=e._styler;if(void 0===n)return t;const{openAll:r,closeAll:i}=n;if(-1!==t.indexOf(""))for(;void 0!==n;)t=u(t,n.close,n.open),n=n.parent;const o=t.indexOf("\n");return-1!==o&&(t=a(t,i,r,o)),r+t+i};let _;const b=(e,...t)=>{const[r]=t;if(!l(r)||!l(r.raw))return t.join(" ");const i=t.slice(1),o=[r.raw[0]];for(let e=1;e{"use strict";const t=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,n=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,r=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,i=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,o=new Map([["n","\n"],["r","\r"],["t","\t"],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a",""]]);function u(e){const t="u"===e[0],n="{"===e[1];return t&&!n&&5===e.length||"x"===e[0]&&3===e.length?String.fromCharCode(parseInt(e.slice(1),16)):t&&n?String.fromCodePoint(parseInt(e.slice(2,-1),16)):o.get(e)||e}function a(e,t){const n=[],o=t.trim().split(/\s*,\s*/g);let a;for(const t of o){const o=Number(t);if(Number.isNaN(o)){if(!(a=t.match(r)))throw new Error(`Invalid Chalk template style argument: ${t} (in style '${e}')`);n.push(a[2].replace(i,(e,t,n)=>t?u(t):n))}else n.push(o)}return n}function l(e){n.lastIndex=0;const t=[];let r;for(;null!==(r=n.exec(e));){const e=r[1];if(r[2]){const n=a(e,r[2]);t.push([e].concat(n))}else t.push([e])}return t}function s(e,t){const n={};for(const e of t)for(const t of e.styles)n[t[0]]=e.inverse?null:t.slice(1);let r=e;for(const[e,t]of Object.entries(n))if(Array.isArray(t)){if(!(e in r))throw new Error("Unknown Chalk style: "+e);r=t.length>0?r[e](...t):r[e]}return r}e.exports=(e,n)=>{const r=[],i=[];let o=[];if(n.replace(t,(t,n,a,c,f,d)=>{if(n)o.push(u(n));else if(c){const t=o.join("");o=[],i.push(0===r.length?t:s(e,r)(t)),r.push({inverse:a,styles:l(c)})}else if(f){if(0===r.length)throw new Error("Found extraneous } in Chalk template literal");i.push(s(e,r)(o.join(""))),o=[],r.pop()}else o.push(d)}),i.push(o.join("")),r.length>0){const e=`Chalk template literal is missing ${r.length} closing bracket${1===r.length?"":"s"} (\`}\`)`;throw new Error(e)}return i.join("")}},6539:e=>{"use strict";e.exports={stringReplaceAll:(e,t,n)=>{let r=e.indexOf(t);if(-1===r)return e;const i=t.length;let o=0,u="";do{u+=e.substr(o,r-o)+t+n,o=r+i,r=e.indexOf(t,o)}while(-1!==r);return u+=e.substr(o),u},stringEncaseCRLFWithFirstIndex:(e,t,n,r)=>{let i=0,o="";do{const u="\r"===e[r-1];o+=e.substr(i,(u?r-1:r)-i)+t+(u?"\r\n":"\n")+n,i=r+1,r=e.indexOf("\n",i)}while(-1!==r);return o+=e.substr(i),o}}},5864:(e,t,n)=>{"use strict";var r=n(5832),i=process.env;function o(e){return"string"==typeof e?!!i[e]:Object.keys(e).every((function(t){return i[t]===e[t]}))}Object.defineProperty(t,"_vendors",{value:r.map((function(e){return e.constant}))}),t.name=null,t.isPR=null,r.forEach((function(e){var n=(Array.isArray(e.env)?e.env:[e.env]).every((function(e){return o(e)}));if(t[e.constant]=n,n)switch(t.name=e.name,typeof e.pr){case"string":t.isPR=!!i[e.pr];break;case"object":"env"in e.pr?t.isPR=e.pr.env in i&&i[e.pr.env]!==e.pr.ne:"any"in e.pr?t.isPR=e.pr.any.some((function(e){return!!i[e]})):t.isPR=o(e.pr);break;default:t.isPR=null}})),t.isCI=!!(i.CI||i.CONTINUOUS_INTEGRATION||i.BUILD_NUMBER||i.RUN_ID||t.name)},5832:e=>{"use strict";e.exports=JSON.parse('[{"name":"AppVeyor","constant":"APPVEYOR","env":"APPVEYOR","pr":"APPVEYOR_PULL_REQUEST_NUMBER"},{"name":"Azure Pipelines","constant":"AZURE_PIPELINES","env":"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI","pr":"SYSTEM_PULLREQUEST_PULLREQUESTID"},{"name":"Bamboo","constant":"BAMBOO","env":"bamboo_planKey"},{"name":"Bitbucket Pipelines","constant":"BITBUCKET","env":"BITBUCKET_COMMIT","pr":"BITBUCKET_PR_ID"},{"name":"Bitrise","constant":"BITRISE","env":"BITRISE_IO","pr":"BITRISE_PULL_REQUEST"},{"name":"Buddy","constant":"BUDDY","env":"BUDDY_WORKSPACE_ID","pr":"BUDDY_EXECUTION_PULL_REQUEST_ID"},{"name":"Buildkite","constant":"BUILDKITE","env":"BUILDKITE","pr":{"env":"BUILDKITE_PULL_REQUEST","ne":"false"}},{"name":"CircleCI","constant":"CIRCLE","env":"CIRCLECI","pr":"CIRCLE_PULL_REQUEST"},{"name":"Cirrus CI","constant":"CIRRUS","env":"CIRRUS_CI","pr":"CIRRUS_PR"},{"name":"AWS CodeBuild","constant":"CODEBUILD","env":"CODEBUILD_BUILD_ARN"},{"name":"Codeship","constant":"CODESHIP","env":{"CI_NAME":"codeship"}},{"name":"Drone","constant":"DRONE","env":"DRONE","pr":{"DRONE_BUILD_EVENT":"pull_request"}},{"name":"dsari","constant":"DSARI","env":"DSARI"},{"name":"GitLab CI","constant":"GITLAB","env":"GITLAB_CI"},{"name":"GoCD","constant":"GOCD","env":"GO_PIPELINE_LABEL"},{"name":"Hudson","constant":"HUDSON","env":"HUDSON_URL"},{"name":"Jenkins","constant":"JENKINS","env":["JENKINS_URL","BUILD_ID"],"pr":{"any":["ghprbPullId","CHANGE_ID"]}},{"name":"Magnum CI","constant":"MAGNUM","env":"MAGNUM"},{"name":"Netlify CI","constant":"NETLIFY","env":"NETLIFY_BUILD_BASE","pr":{"env":"PULL_REQUEST","ne":"false"}},{"name":"Sail CI","constant":"SAIL","env":"SAILCI","pr":"SAIL_PULL_REQUEST_NUMBER"},{"name":"Semaphore","constant":"SEMAPHORE","env":"SEMAPHORE","pr":"PULL_REQUEST_NUMBER"},{"name":"Shippable","constant":"SHIPPABLE","env":"SHIPPABLE","pr":{"IS_PULL_REQUEST":"true"}},{"name":"Solano CI","constant":"SOLANO","env":"TDDIUM","pr":"TDDIUM_PR_ID"},{"name":"Strider CD","constant":"STRIDER","env":"STRIDER"},{"name":"TaskCluster","constant":"TASKCLUSTER","env":["TASK_ID","RUN_ID"]},{"name":"TeamCity","constant":"TEAMCITY","env":"TEAMCITY_VERSION"},{"name":"Travis CI","constant":"TRAVIS","env":"TRAVIS","pr":{"env":"TRAVIS_PULL_REQUEST","ne":"false"}}]')},4163:e=>{"use strict";e.exports=JSON.parse('{"single":{"topLeft":"┌","topRight":"┐","bottomRight":"┘","bottomLeft":"└","vertical":"│","horizontal":"─"},"double":{"topLeft":"╔","topRight":"╗","bottomRight":"╝","bottomLeft":"╚","vertical":"║","horizontal":"═"},"round":{"topLeft":"╭","topRight":"╮","bottomRight":"╯","bottomLeft":"╰","vertical":"│","horizontal":"─"},"bold":{"topLeft":"┏","topRight":"┓","bottomRight":"┛","bottomLeft":"┗","vertical":"┃","horizontal":"━"},"singleDouble":{"topLeft":"╓","topRight":"╖","bottomRight":"╜","bottomLeft":"╙","vertical":"║","horizontal":"─"},"doubleSingle":{"topLeft":"╒","topRight":"╕","bottomRight":"╛","bottomLeft":"╘","vertical":"│","horizontal":"═"},"classic":{"topLeft":"+","topRight":"+","bottomRight":"+","bottomLeft":"+","vertical":"|","horizontal":"-"}}')},4097:(e,t,n)=>{"use strict";const r=n(4163);e.exports=r,e.exports.default=r},1696:(e,t,n)=>{"use strict";const r=n(3390);let i=!1;t.show=(e=process.stderr)=>{e.isTTY&&(i=!1,e.write("[?25h"))},t.hide=(e=process.stderr)=>{e.isTTY&&(r(),i=!0,e.write("[?25l"))},t.toggle=(e,n)=>{void 0!==e&&(i=e),i?t.show(n):t.hide(n)}},5301:(e,t,n)=>{"use strict";const r=n(1566),i=n(5043);function o(e,t,n){if(" "===e.charAt(t))return t;for(let r=1;r<=3;r++)if(n){if(" "===e.charAt(t+r))return t+r}else if(" "===e.charAt(t-r))return t-r;return t}e.exports=(e,t,n)=>{n={position:"end",preferTruncationOnSpace:!1,...n};const{position:u,space:a,preferTruncationOnSpace:l}=n;let s="…",c=1;if("string"!=typeof e)throw new TypeError("Expected `input` to be a string, got "+typeof e);if("number"!=typeof t)throw new TypeError("Expected `columns` to be a number, got "+typeof t);if(t<1)return"";if(1===t)return s;const f=i(e);if(f<=t)return e;if("start"===u){if(l){const n=o(e,f-t+1,!0);return s+r(e,n,f).trim()}return!0===a&&(s+=" ",c=2),s+r(e,f-t+c,f)}if("middle"===u){!0===a&&(s=" "+s+" ",c=3);const n=Math.floor(t/2);if(l){const i=o(e,n),u=o(e,f-(t-n)+1,!0);return r(e,0,i)+s+r(e,u,f).trim()}return r(e,0,n)+s+r(e,f-(t-n)+c,f)}if("end"===u){if(l){const n=o(e,t-1);return r(e,0,n)+s}return!0===a&&(s=" "+s,c=2),r(e,0,t-c)+s}throw new Error("Expected `options.position` to be either `start`, `middle` or `end`, got "+u)}},9908:(e,t,n)=>{"use strict";const r=n(3287);e.exports=(e,t,n)=>{if("string"!=typeof e)throw new TypeError("Source code is missing.");if(!t||t<1)throw new TypeError("Line number must start from `1`.");if(!(t>(e=r(e).split(/\r?\n/)).length))return((e,t)=>{const n=[],r=e+t;for(let i=e-t;i<=r;i++)n.push(i);return n})(t,(n={around:3,...n}).around).filter(t=>void 0!==e[t-1]).map(t=>({line:t,value:e[t-1]}))}},5311:(e,t,n)=>{const r=n(3300),i={};for(const e of Object.keys(r))i[r[e]]=e;const o={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};e.exports=o;for(const e of Object.keys(o)){if(!("channels"in o[e]))throw new Error("missing channels property: "+e);if(!("labels"in o[e]))throw new Error("missing channel labels property: "+e);if(o[e].labels.length!==o[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:n}=o[e];delete o[e].channels,delete o[e].labels,Object.defineProperty(o[e],"channels",{value:t}),Object.defineProperty(o[e],"labels",{value:n})}o.rgb.hsl=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(t,n,r),o=Math.max(t,n,r),u=o-i;let a,l;o===i?a=0:t===o?a=(n-r)/u:n===o?a=2+(r-t)/u:r===o&&(a=4+(t-n)/u),a=Math.min(60*a,360),a<0&&(a+=360);const s=(i+o)/2;return l=o===i?0:s<=.5?u/(o+i):u/(2-o-i),[a,100*l,100*s]},o.rgb.hsv=function(e){let t,n,r,i,o;const u=e[0]/255,a=e[1]/255,l=e[2]/255,s=Math.max(u,a,l),c=s-Math.min(u,a,l),f=function(e){return(s-e)/6/c+.5};return 0===c?(i=0,o=0):(o=c/s,t=f(u),n=f(a),r=f(l),u===s?i=r-n:a===s?i=1/3+t-r:l===s&&(i=2/3+n-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*o,100*s]},o.rgb.hwb=function(e){const t=e[0],n=e[1];let r=e[2];const i=o.rgb.hsl(e)[0],u=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[i,100*u,100*r]},o.rgb.cmyk=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(1-t,1-n,1-r);return[100*((1-t-i)/(1-i)||0),100*((1-n-i)/(1-i)||0),100*((1-r-i)/(1-i)||0),100*i]},o.rgb.keyword=function(e){const t=i[e];if(t)return t;let n,o=1/0;for(const t of Object.keys(r)){const i=r[t],l=(a=i,((u=e)[0]-a[0])**2+(u[1]-a[1])**2+(u[2]-a[2])**2);l.04045?((t+.055)/1.055)**2.4:t/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;return[100*(.4124*t+.3576*n+.1805*r),100*(.2126*t+.7152*n+.0722*r),100*(.0193*t+.1192*n+.9505*r)]},o.rgb.lab=function(e){const t=o.rgb.xyz(e);let n=t[0],r=t[1],i=t[2];n/=95.047,r/=100,i/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;return[116*r-16,500*(n-r),200*(r-i)]},o.hsl.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;let i,o,u;if(0===n)return u=255*r,[u,u,u];i=r<.5?r*(1+n):r+n-r*n;const a=2*r-i,l=[0,0,0];for(let e=0;e<3;e++)o=t+1/3*-(e-1),o<0&&o++,o>1&&o--,u=6*o<1?a+6*(i-a)*o:2*o<1?i:3*o<2?a+(i-a)*(2/3-o)*6:a,l[e]=255*u;return l},o.hsl.hsv=function(e){const t=e[0];let n=e[1]/100,r=e[2]/100,i=n;const o=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,i*=o<=1?o:2-o;return[t,100*(0===r?2*i/(o+i):2*n/(r+n)),100*((r+n)/2)]},o.hsv.rgb=function(e){const t=e[0]/60,n=e[1]/100;let r=e[2]/100;const i=Math.floor(t)%6,o=t-Math.floor(t),u=255*r*(1-n),a=255*r*(1-n*o),l=255*r*(1-n*(1-o));switch(r*=255,i){case 0:return[r,l,u];case 1:return[a,r,u];case 2:return[u,r,l];case 3:return[u,a,r];case 4:return[l,u,r];case 5:return[r,u,a]}},o.hsv.hsl=function(e){const t=e[0],n=e[1]/100,r=e[2]/100,i=Math.max(r,.01);let o,u;u=(2-n)*r;const a=(2-n)*i;return o=n*i,o/=a<=1?a:2-a,o=o||0,u/=2,[t,100*o,100*u]},o.hwb.rgb=function(e){const t=e[0]/360;let n=e[1]/100,r=e[2]/100;const i=n+r;let o;i>1&&(n/=i,r/=i);const u=Math.floor(6*t),a=1-r;o=6*t-u,0!=(1&u)&&(o=1-o);const l=n+o*(a-n);let s,c,f;switch(u){default:case 6:case 0:s=a,c=l,f=n;break;case 1:s=l,c=a,f=n;break;case 2:s=n,c=a,f=l;break;case 3:s=n,c=l,f=a;break;case 4:s=l,c=n,f=a;break;case 5:s=a,c=n,f=l}return[255*s,255*c,255*f]},o.cmyk.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},o.xyz.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100;let i,o,u;return i=3.2406*t+-1.5372*n+-.4986*r,o=-.9689*t+1.8758*n+.0415*r,u=.0557*t+-.204*n+1.057*r,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,u=u>.0031308?1.055*u**(1/2.4)-.055:12.92*u,i=Math.min(Math.max(0,i),1),o=Math.min(Math.max(0,o),1),u=Math.min(Math.max(0,u),1),[255*i,255*o,255*u]},o.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];t/=95.047,n/=100,r/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;return[116*n-16,500*(t-n),200*(n-r)]},o.lab.xyz=function(e){let t,n,r;n=(e[0]+16)/116,t=e[1]/500+n,r=n-e[2]/200;const i=n**3,o=t**3,u=r**3;return n=i>.008856?i:(n-16/116)/7.787,t=o>.008856?o:(t-16/116)/7.787,r=u>.008856?u:(r-16/116)/7.787,t*=95.047,n*=100,r*=108.883,[t,n,r]},o.lab.lch=function(e){const t=e[0],n=e[1],r=e[2];let i;i=360*Math.atan2(r,n)/2/Math.PI,i<0&&(i+=360);return[t,Math.sqrt(n*n+r*r),i]},o.lch.lab=function(e){const t=e[0],n=e[1],r=e[2]/360*2*Math.PI;return[t,n*Math.cos(r),n*Math.sin(r)]},o.rgb.ansi16=function(e,t=null){const[n,r,i]=e;let u=null===t?o.rgb.hsv(e)[2]:t;if(u=Math.round(u/50),0===u)return 30;let a=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return 2===u&&(a+=60),a},o.hsv.ansi16=function(e){return o.rgb.ansi16(o.hsv.rgb(e),e[2])},o.rgb.ansi256=function(e){const t=e[0],n=e[1],r=e[2];if(t===n&&n===r)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;return 16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},o.ansi16.rgb=function(e){let t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},o.ansi256.rgb=function(e){if(e>=232){const t=10*(e-232)+8;return[t,t,t]}let t;e-=16;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},o.rgb.hex=function(e){const t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},o.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let n=t[0];3===t[0].length&&(n=n.split("").map(e=>e+e).join(""));const r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},o.rgb.hcg=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.max(Math.max(t,n),r),o=Math.min(Math.min(t,n),r),u=i-o;let a,l;return a=u<1?o/(1-u):0,l=u<=0?0:i===t?(n-r)/u%6:i===n?2+(r-t)/u:4+(t-n)/u,l/=6,l%=1,[360*l,100*u,100*a]},o.hsl.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n);let i=0;return r<1&&(i=(n-.5*r)/(1-r)),[e[0],100*r,100*i]},o.hsv.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=t*n;let i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},o.hcg.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;if(0===n)return[255*r,255*r,255*r];const i=[0,0,0],o=t%1*6,u=o%1,a=1-u;let l=0;switch(Math.floor(o)){case 0:i[0]=1,i[1]=u,i[2]=0;break;case 1:i[0]=a,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=u;break;case 3:i[0]=0,i[1]=a,i[2]=1;break;case 4:i[0]=u,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=a}return l=(1-n)*r,[255*(n*i[0]+l),255*(n*i[1]+l),255*(n*i[2]+l)]},o.hcg.hsv=function(e){const t=e[1]/100,n=t+e[2]/100*(1-t);let r=0;return n>0&&(r=t/n),[e[0],100*r,100*n]},o.hcg.hsl=function(e){const t=e[1]/100,n=e[2]/100*(1-t)+.5*t;let r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],100*r,100*n]},o.hcg.hwb=function(e){const t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},o.hwb.hcg=function(e){const t=e[1]/100,n=1-e[2]/100,r=n-t;let i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},o.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},o.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},o.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},o.gray.hsl=function(e){return[0,0,e[0]]},o.gray.hsv=o.gray.hsl,o.gray.hwb=function(e){return[0,100,e[0]]},o.gray.cmyk=function(e){return[0,0,0,e[0]]},o.gray.lab=function(e){return[e[0],0,0]},o.gray.hex=function(e){const t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},o.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},2744:(e,t,n)=>{const r=n(5311),i=n(8577),o={};Object.keys(r).forEach(e=>{o[e]={},Object.defineProperty(o[e],"channels",{value:r[e].channels}),Object.defineProperty(o[e],"labels",{value:r[e].labels});const t=i(e);Object.keys(t).forEach(n=>{const r=t[n];o[e][n]=function(e){const t=function(...t){const n=t[0];if(null==n)return n;n.length>1&&(t=n);const r=e(t);if("object"==typeof r)for(let e=r.length,t=0;t1&&(t=n),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(r)})}),e.exports=o},8577:(e,t,n)=>{const r=n(5311);function i(e){const t=function(){const e={},t=Object.keys(r);for(let n=t.length,r=0;r{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},3287:e=>{"use strict";e.exports=(e,t)=>e.replace(/^\t+/gm,e=>" ".repeat(e.length*(t||2)))},1013:e=>{"use strict";e.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}},8759:e=>{"use strict";const t=/[|\\{}()[\]^$+*?.-]/g;e.exports=e=>{if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(t,"\\$&")}},2918:e=>{"use strict";e.exports=(e,t=process.argv)=>{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),i=t.indexOf("--");return-1!==r&&(-1===i||r{"use strict";e.exports=(e,t=1,n)=>{if(n={indent:" ",includeEmptyLines:!1,...n},"string"!=typeof e)throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if("number"!=typeof t)throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if("string"!=typeof n.indent)throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof n.indent}\``);if(0===t)return e;const r=n.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(r,n.indent.repeat(t))}},2738:(e,t,n)=>{"use strict";e.exports=n(5864).isCI},7347:e=>{"use strict";const t=e=>!Number.isNaN(e)&&(e>=4352&&(e<=4447||9001===e||9002===e||11904<=e&&e<=12871&&12351!==e||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141));e.exports=t,e.exports.default=t},464:function(e,t,n){var r; -/** - * @license - * Lodash - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */e=n.nmd(e),function(){var i="Expected a function",o="__lodash_placeholder__",u=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],a="[object Arguments]",l="[object Array]",s="[object Boolean]",c="[object Date]",f="[object Error]",d="[object Function]",p="[object GeneratorFunction]",h="[object Map]",v="[object Number]",m="[object Object]",g="[object RegExp]",y="[object Set]",_="[object String]",b="[object Symbol]",w="[object WeakMap]",E="[object ArrayBuffer]",D="[object DataView]",S="[object Float32Array]",C="[object Float64Array]",k="[object Int8Array]",T="[object Int16Array]",x="[object Int32Array]",A="[object Uint8Array]",O="[object Uint16Array]",P="[object Uint32Array]",I=/\b__p \+= '';/g,N=/\b(__p \+=) '' \+/g,M=/(__e\(.*?\)|\b__t\)) \+\n'';/g,R=/&(?:amp|lt|gt|quot|#39);/g,F=/[&<>"']/g,L=RegExp(R.source),B=RegExp(F.source),j=/<%-([\s\S]+?)%>/g,U=/<%([\s\S]+?)%>/g,z=/<%=([\s\S]+?)%>/g,W=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,H=/^\w*$/,V=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,q=/[\\^$.*+?()[\]{}|]/g,G=RegExp(q.source),$=/^\s+|\s+$/g,Y=/^\s+/,K=/\s+$/,X=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Q=/\{\n\/\* \[wrapped with (.+)\] \*/,J=/,? & /,Z=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ee=/\\(\\)?/g,te=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ne=/\w*$/,re=/^[-+]0x[0-9a-f]+$/i,ie=/^0b[01]+$/i,oe=/^\[object .+?Constructor\]$/,ue=/^0o[0-7]+$/i,ae=/^(?:0|[1-9]\d*)$/,le=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,se=/($^)/,ce=/['\n\r\u2028\u2029\\]/g,fe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",de="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pe="[\\ud800-\\udfff]",he="["+de+"]",ve="["+fe+"]",me="\\d+",ge="[\\u2700-\\u27bf]",ye="[a-z\\xdf-\\xf6\\xf8-\\xff]",_e="[^\\ud800-\\udfff"+de+me+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",be="\\ud83c[\\udffb-\\udfff]",we="[^\\ud800-\\udfff]",Ee="(?:\\ud83c[\\udde6-\\uddff]){2}",De="[\\ud800-\\udbff][\\udc00-\\udfff]",Se="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ce="(?:"+ye+"|"+_e+")",ke="(?:"+Se+"|"+_e+")",Te="(?:"+ve+"|"+be+")"+"?",xe="[\\ufe0e\\ufe0f]?"+Te+("(?:\\u200d(?:"+[we,Ee,De].join("|")+")[\\ufe0e\\ufe0f]?"+Te+")*"),Ae="(?:"+[ge,Ee,De].join("|")+")"+xe,Oe="(?:"+[we+ve+"?",ve,Ee,De,pe].join("|")+")",Pe=RegExp("['’]","g"),Ie=RegExp(ve,"g"),Ne=RegExp(be+"(?="+be+")|"+Oe+xe,"g"),Me=RegExp([Se+"?"+ye+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[he,Se,"$"].join("|")+")",ke+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[he,Se+Ce,"$"].join("|")+")",Se+"?"+Ce+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Se+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",me,Ae].join("|"),"g"),Re=RegExp("[\\u200d\\ud800-\\udfff"+fe+"\\ufe0e\\ufe0f]"),Fe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Le=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Be=-1,je={};je[S]=je[C]=je[k]=je[T]=je[x]=je[A]=je["[object Uint8ClampedArray]"]=je[O]=je[P]=!0,je[a]=je[l]=je[E]=je[s]=je[D]=je[c]=je[f]=je[d]=je[h]=je[v]=je[m]=je[g]=je[y]=je[_]=je[w]=!1;var Ue={};Ue[a]=Ue[l]=Ue[E]=Ue[D]=Ue[s]=Ue[c]=Ue[S]=Ue[C]=Ue[k]=Ue[T]=Ue[x]=Ue[h]=Ue[v]=Ue[m]=Ue[g]=Ue[y]=Ue[_]=Ue[b]=Ue[A]=Ue["[object Uint8ClampedArray]"]=Ue[O]=Ue[P]=!0,Ue[f]=Ue[d]=Ue[w]=!1;var ze={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},We=parseFloat,He=parseInt,Ve="object"==typeof global&&global&&global.Object===Object&&global,qe="object"==typeof self&&self&&self.Object===Object&&self,Ge=Ve||qe||Function("return this")(),$e=t&&!t.nodeType&&t,Ye=$e&&e&&!e.nodeType&&e,Ke=Ye&&Ye.exports===$e,Xe=Ke&&Ve.process,Qe=function(){try{var e=Ye&&Ye.require&&Ye.require("util").types;return e||Xe&&Xe.binding&&Xe.binding("util")}catch(e){}}(),Je=Qe&&Qe.isArrayBuffer,Ze=Qe&&Qe.isDate,et=Qe&&Qe.isMap,tt=Qe&&Qe.isRegExp,nt=Qe&&Qe.isSet,rt=Qe&&Qe.isTypedArray;function it(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function ot(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i-1}function ft(e,t,n){for(var r=-1,i=null==e?0:e.length;++r-1;);return n}function Nt(e,t){for(var n=e.length;n--&&bt(t,e[n],0)>-1;);return n}function Mt(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}var Rt=Ct({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),Ft=Ct({"&":"&","<":"<",">":">",'"':""","'":"'"});function Lt(e){return"\\"+ze[e]}function Bt(e){return Re.test(e)}function jt(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function Ut(e,t){return function(n){return e(t(n))}}function zt(e,t){for(var n=-1,r=e.length,i=0,u=[];++n",""":'"',"'":"'"});var $t=function e(t){var n,r=(t=null==t?Ge:$t.defaults(Ge.Object(),t,$t.pick(Ge,Le))).Array,fe=t.Date,de=t.Error,pe=t.Function,he=t.Math,ve=t.Object,me=t.RegExp,ge=t.String,ye=t.TypeError,_e=r.prototype,be=pe.prototype,we=ve.prototype,Ee=t["__core-js_shared__"],De=be.toString,Se=we.hasOwnProperty,Ce=0,ke=(n=/[^.]+$/.exec(Ee&&Ee.keys&&Ee.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Te=we.toString,xe=De.call(ve),Ae=Ge._,Oe=me("^"+De.call(Se).replace(q,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ne=Ke?t.Buffer:void 0,Re=t.Symbol,ze=t.Uint8Array,Ve=Ne?Ne.allocUnsafe:void 0,qe=Ut(ve.getPrototypeOf,ve),$e=ve.create,Ye=we.propertyIsEnumerable,Xe=_e.splice,Qe=Re?Re.isConcatSpreadable:void 0,gt=Re?Re.iterator:void 0,Ct=Re?Re.toStringTag:void 0,Yt=function(){try{var e=Zi(ve,"defineProperty");return e({},"",{}),e}catch(e){}}(),Kt=t.clearTimeout!==Ge.clearTimeout&&t.clearTimeout,Xt=fe&&fe.now!==Ge.Date.now&&fe.now,Qt=t.setTimeout!==Ge.setTimeout&&t.setTimeout,Jt=he.ceil,Zt=he.floor,en=ve.getOwnPropertySymbols,tn=Ne?Ne.isBuffer:void 0,nn=t.isFinite,rn=_e.join,on=Ut(ve.keys,ve),un=he.max,an=he.min,ln=fe.now,sn=t.parseInt,cn=he.random,fn=_e.reverse,dn=Zi(t,"DataView"),pn=Zi(t,"Map"),hn=Zi(t,"Promise"),vn=Zi(t,"Set"),mn=Zi(t,"WeakMap"),gn=Zi(ve,"create"),yn=mn&&new mn,_n={},bn=To(dn),wn=To(pn),En=To(hn),Dn=To(vn),Sn=To(mn),Cn=Re?Re.prototype:void 0,kn=Cn?Cn.valueOf:void 0,Tn=Cn?Cn.toString:void 0;function xn(e){if(Vu(e)&&!Nu(e)&&!(e instanceof In)){if(e instanceof Pn)return e;if(Se.call(e,"__wrapped__"))return xo(e)}return new Pn(e)}var An=function(){function e(){}return function(t){if(!Hu(t))return{};if($e)return $e(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function On(){}function Pn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function In(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Nn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Xn(e,t,n,r,i,o){var u,l=1&t,f=2&t,w=4&t;if(n&&(u=i?n(e,r,i,o):n(e)),void 0!==u)return u;if(!Hu(e))return e;var I=Nu(e);if(I){if(u=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&Se.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!l)return gi(e,u)}else{var N=no(e),M=N==d||N==p;if(Lu(e))return fi(e,l);if(N==m||N==a||M&&!i){if(u=f||M?{}:io(e),!l)return f?function(e,t){return yi(e,to(e),t)}(e,function(e,t){return e&&yi(t,wa(t),e)}(u,e)):function(e,t){return yi(e,eo(e),t)}(e,Gn(u,e))}else{if(!Ue[N])return i?e:{};u=function(e,t,n){var r=e.constructor;switch(t){case E:return di(e);case s:case c:return new r(+e);case D:return function(e,t){var n=t?di(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case S:case C:case k:case T:case x:case A:case"[object Uint8ClampedArray]":case O:case P:return pi(e,n);case h:return new r;case v:case _:return new r(e);case g:return function(e){var t=new e.constructor(e.source,ne.exec(e));return t.lastIndex=e.lastIndex,t}(e);case y:return new r;case b:return i=e,kn?ve(kn.call(i)):{}}var i}(e,N,l)}}o||(o=new Ln);var R=o.get(e);if(R)return R;o.set(e,u),Ku(e)?e.forEach((function(r){u.add(Xn(r,t,n,r,e,o))})):qu(e)&&e.forEach((function(r,i){u.set(i,Xn(r,t,n,i,e,o))}));var F=I?void 0:(w?f?Gi:qi:f?wa:ba)(e);return ut(F||e,(function(r,i){F&&(r=e[i=r]),Hn(u,i,Xn(r,t,n,i,e,o))})),u}function Qn(e,t,n){var r=n.length;if(null==e)return!r;for(e=ve(e);r--;){var i=n[r],o=t[i],u=e[i];if(void 0===u&&!(i in e)||!o(u))return!1}return!0}function Jn(e,t,n){if("function"!=typeof e)throw new ye(i);return bo((function(){e.apply(void 0,n)}),t)}function Zn(e,t,n,r){var i=-1,o=ct,u=!0,a=e.length,l=[],s=t.length;if(!a)return l;n&&(t=dt(t,At(n))),r?(o=ft,u=!1):t.length>=200&&(o=Pt,u=!1,t=new Fn(t));e:for(;++i-1},Mn.prototype.set=function(e,t){var n=this.__data__,r=Vn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Rn.prototype.clear=function(){this.size=0,this.__data__={hash:new Nn,map:new(pn||Mn),string:new Nn}},Rn.prototype.delete=function(e){var t=Qi(this,e).delete(e);return this.size-=t?1:0,t},Rn.prototype.get=function(e){return Qi(this,e).get(e)},Rn.prototype.has=function(e){return Qi(this,e).has(e)},Rn.prototype.set=function(e,t){var n=Qi(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Fn.prototype.add=Fn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Fn.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.clear=function(){this.__data__=new Mn,this.size=0},Ln.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Ln.prototype.get=function(e){return this.__data__.get(e)},Ln.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Mn){var r=n.__data__;if(!pn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Rn(r)}return n.set(e,t),this.size=n.size,this};var er=wi(lr),tr=wi(sr,!0);function nr(e,t){var n=!0;return er(e,(function(e,r,i){return n=!!t(e,r,i)})),n}function rr(e,t,n){for(var r=-1,i=e.length;++r0&&n(a)?t>1?or(a,t-1,n,r,i):pt(i,a):r||(i[i.length]=a)}return i}var ur=Ei(),ar=Ei(!0);function lr(e,t){return e&&ur(e,t,ba)}function sr(e,t){return e&&ar(e,t,ba)}function cr(e,t){return st(t,(function(t){return Uu(e[t])}))}function fr(e,t){for(var n=0,r=(t=ai(t,e)).length;null!=e&&nt}function vr(e,t){return null!=e&&Se.call(e,t)}function mr(e,t){return null!=e&&t in ve(e)}function gr(e,t,n){for(var i=n?ft:ct,o=e[0].length,u=e.length,a=u,l=r(u),s=1/0,c=[];a--;){var f=e[a];a&&t&&(f=dt(f,At(t))),s=an(f.length,s),l[a]=!n&&(t||o>=120&&f.length>=120)?new Fn(a&&f):void 0}f=e[0];var d=-1,p=l[0];e:for(;++d=a)return l;var s=n[r];return l*("desc"==s?-1:1)}}return e.index-t.index}(e,t,n)}))}function Nr(e,t,n){for(var r=-1,i=t.length,o={};++r-1;)a!==e&&Xe.call(a,l,1),Xe.call(e,l,1);return e}function Rr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==o){var o=i;uo(i)?Xe.call(e,i,1):Zr(e,i)}}return e}function Fr(e,t){return e+Zt(cn()*(t-e+1))}function Lr(e,t){var n="";if(!e||t<1||t>9007199254740991)return n;do{t%2&&(n+=e),(t=Zt(t/2))&&(e+=e)}while(t);return n}function Br(e,t){return wo(vo(e,t,Ga),e+"")}function jr(e){return jn(Aa(e))}function Ur(e,t){var n=Aa(e);return So(n,Kn(t,0,n.length))}function zr(e,t,n,r){if(!Hu(e))return e;for(var i=-1,o=(t=ai(t,e)).length,u=o-1,a=e;null!=a&&++io?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var u=r(o);++i>>1,u=e[o];null!==u&&!Qu(u)&&(n?u<=t:u=200){var s=t?null:Li(e);if(s)return Wt(s);u=!1,i=Pt,l=new Fn}else l=t?[]:a;e:for(;++r=r?e:qr(e,t,n)}var ci=Kt||function(e){return Ge.clearTimeout(e)};function fi(e,t){if(t)return e.slice();var n=e.length,r=Ve?Ve(n):new e.constructor(n);return e.copy(r),r}function di(e){var t=new e.constructor(e.byteLength);return new ze(t).set(new ze(e)),t}function pi(e,t){var n=t?di(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function hi(e,t){if(e!==t){var n=void 0!==e,r=null===e,i=e==e,o=Qu(e),u=void 0!==t,a=null===t,l=t==t,s=Qu(t);if(!a&&!s&&!o&&e>t||o&&u&&l&&!a&&!s||r&&u&&l||!n&&l||!i)return 1;if(!r&&!o&&!s&&e1?n[i-1]:void 0,u=i>2?n[2]:void 0;for(o=e.length>3&&"function"==typeof o?(i--,o):void 0,u&&ao(n[0],n[1],u)&&(o=i<3?void 0:o,i=1),t=ve(t);++r-1?i[o?t[u]:u]:void 0}}function Ti(e){return Vi((function(t){var n=t.length,r=n,o=Pn.prototype.thru;for(e&&t.reverse();r--;){var u=t[r];if("function"!=typeof u)throw new ye(i);if(o&&!a&&"wrapper"==Yi(u))var a=new Pn([],!0)}for(r=a?r:n;++r1&&_.reverse(),f&&sa))return!1;var s=o.get(e),c=o.get(t);if(s&&c)return s==t&&c==e;var f=-1,d=!0,p=2&n?new Fn:void 0;for(o.set(e,t),o.set(t,e);++f-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(X,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return ut(u,(function(n){var r="_."+n[0];t&n[1]&&!ct(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(Q);return t?t[1].split(J):[]}(r),n)))}function Do(e){var t=0,n=0;return function(){var r=ln(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function So(e,t){var n=-1,r=e.length,i=r-1;for(t=void 0===t?r:t;++n1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,Yo(e,n)}));function tu(e){var t=xn(e);return t.__chain__=!0,t}function nu(e,t){return t(e)}var ru=Vi((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Yn(t,e)};return!(t>1||this.__actions__.length)&&r instanceof In&&uo(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:nu,args:[i],thisArg:void 0}),new Pn(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(i)}));var iu=_i((function(e,t,n){Se.call(e,n)?++e[n]:$n(e,n,1)}));var ou=ki(Io),uu=ki(No);function au(e,t){return(Nu(e)?ut:er)(e,Xi(t,3))}function lu(e,t){return(Nu(e)?at:tr)(e,Xi(t,3))}var su=_i((function(e,t,n){Se.call(e,n)?e[n].push(t):$n(e,n,[t])}));var cu=Br((function(e,t,n){var i=-1,o="function"==typeof t,u=Ru(e)?r(e.length):[];return er(e,(function(e){u[++i]=o?it(t,e,n):yr(e,t,n)})),u})),fu=_i((function(e,t,n){$n(e,n,t)}));function du(e,t){return(Nu(e)?dt:Tr)(e,Xi(t,3))}var pu=_i((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var hu=Br((function(e,t){if(null==e)return[];var n=t.length;return n>1&&ao(e,t[0],t[1])?t=[]:n>2&&ao(t[0],t[1],t[2])&&(t=[t[0]]),Ir(e,or(t,1),[])})),vu=Xt||function(){return Ge.Date.now()};function mu(e,t,n){return t=n?void 0:t,ji(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function gu(e,t){var n;if("function"!=typeof t)throw new ye(i);return e=ra(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var yu=Br((function(e,t,n){var r=1;if(n.length){var i=zt(n,Ki(yu));r|=32}return ji(e,r,t,n,i)})),_u=Br((function(e,t,n){var r=3;if(n.length){var i=zt(n,Ki(_u));r|=32}return ji(t,r,e,n,i)}));function bu(e,t,n){var r,o,u,a,l,s,c=0,f=!1,d=!1,p=!0;if("function"!=typeof e)throw new ye(i);function h(t){var n=r,i=o;return r=o=void 0,c=t,a=e.apply(i,n)}function v(e){return c=e,l=bo(g,t),f?h(e):a}function m(e){var n=e-s;return void 0===s||n>=t||n<0||d&&e-c>=u}function g(){var e=vu();if(m(e))return y(e);l=bo(g,function(e){var n=t-(e-s);return d?an(n,u-(e-c)):n}(e))}function y(e){return l=void 0,p&&r?h(e):(r=o=void 0,a)}function _(){var e=vu(),n=m(e);if(r=arguments,o=this,s=e,n){if(void 0===l)return v(s);if(d)return ci(l),l=bo(g,t),h(s)}return void 0===l&&(l=bo(g,t)),a}return t=oa(t)||0,Hu(n)&&(f=!!n.leading,u=(d="maxWait"in n)?un(oa(n.maxWait)||0,t):u,p="trailing"in n?!!n.trailing:p),_.cancel=function(){void 0!==l&&ci(l),c=0,r=s=o=l=void 0},_.flush=function(){return void 0===l?a:y(vu())},_}var wu=Br((function(e,t){return Jn(e,1,t)})),Eu=Br((function(e,t,n){return Jn(e,oa(t)||0,n)}));function Du(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new ye(i);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var u=e.apply(this,r);return n.cache=o.set(i,u)||o,u};return n.cache=new(Du.Cache||Rn),n}function Su(e){if("function"!=typeof e)throw new ye(i);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}Du.Cache=Rn;var Cu=li((function(e,t){var n=(t=1==t.length&&Nu(t[0])?dt(t[0],At(Xi())):dt(or(t,1),At(Xi()))).length;return Br((function(r){for(var i=-1,o=an(r.length,n);++i=t})),Iu=_r(function(){return arguments}())?_r:function(e){return Vu(e)&&Se.call(e,"callee")&&!Ye.call(e,"callee")},Nu=r.isArray,Mu=Je?At(Je):function(e){return Vu(e)&&pr(e)==E};function Ru(e){return null!=e&&Wu(e.length)&&!Uu(e)}function Fu(e){return Vu(e)&&Ru(e)}var Lu=tn||ol,Bu=Ze?At(Ze):function(e){return Vu(e)&&pr(e)==c};function ju(e){if(!Vu(e))return!1;var t=pr(e);return t==f||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!$u(e)}function Uu(e){if(!Hu(e))return!1;var t=pr(e);return t==d||t==p||"[object AsyncFunction]"==t||"[object Proxy]"==t}function zu(e){return"number"==typeof e&&e==ra(e)}function Wu(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Hu(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Vu(e){return null!=e&&"object"==typeof e}var qu=et?At(et):function(e){return Vu(e)&&no(e)==h};function Gu(e){return"number"==typeof e||Vu(e)&&pr(e)==v}function $u(e){if(!Vu(e)||pr(e)!=m)return!1;var t=qe(e);if(null===t)return!0;var n=Se.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&De.call(n)==xe}var Yu=tt?At(tt):function(e){return Vu(e)&&pr(e)==g};var Ku=nt?At(nt):function(e){return Vu(e)&&no(e)==y};function Xu(e){return"string"==typeof e||!Nu(e)&&Vu(e)&&pr(e)==_}function Qu(e){return"symbol"==typeof e||Vu(e)&&pr(e)==b}var Ju=rt?At(rt):function(e){return Vu(e)&&Wu(e.length)&&!!je[pr(e)]};var Zu=Mi(kr),ea=Mi((function(e,t){return e<=t}));function ta(e){if(!e)return[];if(Ru(e))return Xu(e)?qt(e):gi(e);if(gt&&e[gt])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[gt]());var t=no(e);return(t==h?jt:t==y?Wt:Aa)(e)}function na(e){return e?(e=oa(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function ra(e){var t=na(e),n=t%1;return t==t?n?t-n:t:0}function ia(e){return e?Kn(ra(e),0,4294967295):0}function oa(e){if("number"==typeof e)return e;if(Qu(e))return NaN;if(Hu(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Hu(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace($,"");var n=ie.test(e);return n||ue.test(e)?He(e.slice(2),n?2:8):re.test(e)?NaN:+e}function ua(e){return yi(e,wa(e))}function aa(e){return null==e?"":Qr(e)}var la=bi((function(e,t){if(fo(t)||Ru(t))yi(t,ba(t),e);else for(var n in t)Se.call(t,n)&&Hn(e,n,t[n])})),sa=bi((function(e,t){yi(t,wa(t),e)})),ca=bi((function(e,t,n,r){yi(t,wa(t),e,r)})),fa=bi((function(e,t,n,r){yi(t,ba(t),e,r)})),da=Vi(Yn);var pa=Br((function(e,t){e=ve(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&ao(t[0],t[1],i)&&(r=1);++n1),t})),yi(e,Gi(e),n),r&&(n=Xn(n,7,Wi));for(var i=t.length;i--;)Zr(n,t[i]);return n}));var Ca=Vi((function(e,t){return null==e?{}:function(e,t){return Nr(e,t,(function(t,n){return ma(e,n)}))}(e,t)}));function ka(e,t){if(null==e)return{};var n=dt(Gi(e),(function(e){return[e]}));return t=Xi(t),Nr(e,n,(function(e,n){return t(e,n[0])}))}var Ta=Bi(ba),xa=Bi(wa);function Aa(e){return null==e?[]:Ot(e,ba(e))}var Oa=Si((function(e,t,n){return t=t.toLowerCase(),e+(n?Pa(t):t)}));function Pa(e){return ja(aa(e).toLowerCase())}function Ia(e){return(e=aa(e))&&e.replace(le,Rt).replace(Ie,"")}var Na=Si((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Ma=Si((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Ra=Di("toLowerCase");var Fa=Si((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var La=Si((function(e,t,n){return e+(n?" ":"")+ja(t)}));var Ba=Si((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),ja=Di("toUpperCase");function Ua(e,t,n){return e=aa(e),void 0===(t=n?void 0:t)?function(e){return Fe.test(e)}(e)?function(e){return e.match(Me)||[]}(e):function(e){return e.match(Z)||[]}(e):e.match(t)||[]}var za=Br((function(e,t){try{return it(e,void 0,t)}catch(e){return ju(e)?e:new de(e)}})),Wa=Vi((function(e,t){return ut(t,(function(t){t=ko(t),$n(e,t,yu(e[t],e))})),e}));function Ha(e){return function(){return e}}var Va=Ti(),qa=Ti(!0);function Ga(e){return e}function $a(e){return Dr("function"==typeof e?e:Xn(e,1))}var Ya=Br((function(e,t){return function(n){return yr(n,e,t)}})),Ka=Br((function(e,t){return function(n){return yr(e,n,t)}}));function Xa(e,t,n){var r=ba(t),i=cr(t,r);null!=n||Hu(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=cr(t,ba(t)));var o=!(Hu(n)&&"chain"in n&&!n.chain),u=Uu(e);return ut(i,(function(n){var r=t[n];e[n]=r,u&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__),i=n.__actions__=gi(this.__actions__);return i.push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,pt([this.value()],arguments))})})),e}function Qa(){}var Ja=Pi(dt),Za=Pi(lt),el=Pi(mt);function tl(e){return lo(e)?St(ko(e)):function(e){return function(t){return fr(t,e)}}(e)}var nl=Ni(),rl=Ni(!0);function il(){return[]}function ol(){return!1}var ul=Oi((function(e,t){return e+t}),0),al=Fi("ceil"),ll=Oi((function(e,t){return e/t}),1),sl=Fi("floor");var cl,fl=Oi((function(e,t){return e*t}),1),dl=Fi("round"),pl=Oi((function(e,t){return e-t}),0);return xn.after=function(e,t){if("function"!=typeof t)throw new ye(i);return e=ra(e),function(){if(--e<1)return t.apply(this,arguments)}},xn.ary=mu,xn.assign=la,xn.assignIn=sa,xn.assignInWith=ca,xn.assignWith=fa,xn.at=da,xn.before=gu,xn.bind=yu,xn.bindAll=Wa,xn.bindKey=_u,xn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Nu(e)?e:[e]},xn.chain=tu,xn.chunk=function(e,t,n){t=(n?ao(e,t,n):void 0===t)?1:un(ra(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var o=0,u=0,a=r(Jt(i/t));oi?0:i+n),(r=void 0===r||r>i?i:ra(r))<0&&(r+=i),r=n>r?0:ia(r);n>>0)?(e=aa(e))&&("string"==typeof t||null!=t&&!Yu(t))&&!(t=Qr(t))&&Bt(e)?si(qt(e),0,n):e.split(t,n):[]},xn.spread=function(e,t){if("function"!=typeof e)throw new ye(i);return t=null==t?0:un(ra(t),0),Br((function(n){var r=n[t],i=si(n,0,t);return r&&pt(i,r),it(e,this,i)}))},xn.tail=function(e){var t=null==e?0:e.length;return t?qr(e,1,t):[]},xn.take=function(e,t,n){return e&&e.length?qr(e,0,(t=n||void 0===t?1:ra(t))<0?0:t):[]},xn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?qr(e,(t=r-(t=n||void 0===t?1:ra(t)))<0?0:t,r):[]},xn.takeRightWhile=function(e,t){return e&&e.length?ti(e,Xi(t,3),!1,!0):[]},xn.takeWhile=function(e,t){return e&&e.length?ti(e,Xi(t,3)):[]},xn.tap=function(e,t){return t(e),e},xn.throttle=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new ye(i);return Hu(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),bu(e,t,{leading:r,maxWait:t,trailing:o})},xn.thru=nu,xn.toArray=ta,xn.toPairs=Ta,xn.toPairsIn=xa,xn.toPath=function(e){return Nu(e)?dt(e,ko):Qu(e)?[e]:gi(Co(aa(e)))},xn.toPlainObject=ua,xn.transform=function(e,t,n){var r=Nu(e),i=r||Lu(e)||Ju(e);if(t=Xi(t,4),null==n){var o=e&&e.constructor;n=i?r?new o:[]:Hu(e)&&Uu(o)?An(qe(e)):{}}return(i?ut:lr)(e,(function(e,r,i){return t(n,e,r,i)})),n},xn.unary=function(e){return mu(e,1)},xn.union=Vo,xn.unionBy=qo,xn.unionWith=Go,xn.uniq=function(e){return e&&e.length?Jr(e):[]},xn.uniqBy=function(e,t){return e&&e.length?Jr(e,Xi(t,2)):[]},xn.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Jr(e,void 0,t):[]},xn.unset=function(e,t){return null==e||Zr(e,t)},xn.unzip=$o,xn.unzipWith=Yo,xn.update=function(e,t,n){return null==e?e:ei(e,t,ui(n))},xn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:ei(e,t,ui(n),r)},xn.values=Aa,xn.valuesIn=function(e){return null==e?[]:Ot(e,wa(e))},xn.without=Ko,xn.words=Ua,xn.wrap=function(e,t){return ku(ui(t),e)},xn.xor=Xo,xn.xorBy=Qo,xn.xorWith=Jo,xn.zip=Zo,xn.zipObject=function(e,t){return ii(e||[],t||[],Hn)},xn.zipObjectDeep=function(e,t){return ii(e||[],t||[],zr)},xn.zipWith=eu,xn.entries=Ta,xn.entriesIn=xa,xn.extend=sa,xn.extendWith=ca,Xa(xn,xn),xn.add=ul,xn.attempt=za,xn.camelCase=Oa,xn.capitalize=Pa,xn.ceil=al,xn.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=oa(n))==n?n:0),void 0!==t&&(t=(t=oa(t))==t?t:0),Kn(oa(e),t,n)},xn.clone=function(e){return Xn(e,4)},xn.cloneDeep=function(e){return Xn(e,5)},xn.cloneDeepWith=function(e,t){return Xn(e,5,t="function"==typeof t?t:void 0)},xn.cloneWith=function(e,t){return Xn(e,4,t="function"==typeof t?t:void 0)},xn.conformsTo=function(e,t){return null==t||Qn(e,t,ba(t))},xn.deburr=Ia,xn.defaultTo=function(e,t){return null==e||e!=e?t:e},xn.divide=ll,xn.endsWith=function(e,t,n){e=aa(e),t=Qr(t);var r=e.length,i=n=void 0===n?r:Kn(ra(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},xn.eq=Au,xn.escape=function(e){return(e=aa(e))&&B.test(e)?e.replace(F,Ft):e},xn.escapeRegExp=function(e){return(e=aa(e))&&G.test(e)?e.replace(q,"\\$&"):e},xn.every=function(e,t,n){var r=Nu(e)?lt:nr;return n&&ao(e,t,n)&&(t=void 0),r(e,Xi(t,3))},xn.find=ou,xn.findIndex=Io,xn.findKey=function(e,t){return yt(e,Xi(t,3),lr)},xn.findLast=uu,xn.findLastIndex=No,xn.findLastKey=function(e,t){return yt(e,Xi(t,3),sr)},xn.floor=sl,xn.forEach=au,xn.forEachRight=lu,xn.forIn=function(e,t){return null==e?e:ur(e,Xi(t,3),wa)},xn.forInRight=function(e,t){return null==e?e:ar(e,Xi(t,3),wa)},xn.forOwn=function(e,t){return e&&lr(e,Xi(t,3))},xn.forOwnRight=function(e,t){return e&&sr(e,Xi(t,3))},xn.get=va,xn.gt=Ou,xn.gte=Pu,xn.has=function(e,t){return null!=e&&ro(e,t,vr)},xn.hasIn=ma,xn.head=Ro,xn.identity=Ga,xn.includes=function(e,t,n,r){e=Ru(e)?e:Aa(e),n=n&&!r?ra(n):0;var i=e.length;return n<0&&(n=un(i+n,0)),Xu(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&bt(e,t,n)>-1},xn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:ra(n);return i<0&&(i=un(r+i,0)),bt(e,t,i)},xn.inRange=function(e,t,n){return t=na(t),void 0===n?(n=t,t=0):n=na(n),function(e,t,n){return e>=an(t,n)&&e=-9007199254740991&&e<=9007199254740991},xn.isSet=Ku,xn.isString=Xu,xn.isSymbol=Qu,xn.isTypedArray=Ju,xn.isUndefined=function(e){return void 0===e},xn.isWeakMap=function(e){return Vu(e)&&no(e)==w},xn.isWeakSet=function(e){return Vu(e)&&"[object WeakSet]"==pr(e)},xn.join=function(e,t){return null==e?"":rn.call(e,t)},xn.kebabCase=Na,xn.last=jo,xn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=ra(n))<0?un(r+i,0):an(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):_t(e,Et,i,!0)},xn.lowerCase=Ma,xn.lowerFirst=Ra,xn.lt=Zu,xn.lte=ea,xn.max=function(e){return e&&e.length?rr(e,Ga,hr):void 0},xn.maxBy=function(e,t){return e&&e.length?rr(e,Xi(t,2),hr):void 0},xn.mean=function(e){return Dt(e,Ga)},xn.meanBy=function(e,t){return Dt(e,Xi(t,2))},xn.min=function(e){return e&&e.length?rr(e,Ga,kr):void 0},xn.minBy=function(e,t){return e&&e.length?rr(e,Xi(t,2),kr):void 0},xn.stubArray=il,xn.stubFalse=ol,xn.stubObject=function(){return{}},xn.stubString=function(){return""},xn.stubTrue=function(){return!0},xn.multiply=fl,xn.nth=function(e,t){return e&&e.length?Pr(e,ra(t)):void 0},xn.noConflict=function(){return Ge._===this&&(Ge._=Ae),this},xn.noop=Qa,xn.now=vu,xn.pad=function(e,t,n){e=aa(e);var r=(t=ra(t))?Vt(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return Ii(Zt(i),n)+e+Ii(Jt(i),n)},xn.padEnd=function(e,t,n){e=aa(e);var r=(t=ra(t))?Vt(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var i=cn();return an(e+i*(t-e+We("1e-"+((i+"").length-1))),t)}return Fr(e,t)},xn.reduce=function(e,t,n){var r=Nu(e)?ht:kt,i=arguments.length<3;return r(e,Xi(t,4),n,i,er)},xn.reduceRight=function(e,t,n){var r=Nu(e)?vt:kt,i=arguments.length<3;return r(e,Xi(t,4),n,i,tr)},xn.repeat=function(e,t,n){return t=(n?ao(e,t,n):void 0===t)?1:ra(t),Lr(aa(e),t)},xn.replace=function(){var e=arguments,t=aa(e[0]);return e.length<3?t:t.replace(e[1],e[2])},xn.result=function(e,t,n){var r=-1,i=(t=ai(t,e)).length;for(i||(i=1,e=void 0);++r9007199254740991)return[];var n=4294967295,r=an(e,4294967295);e-=4294967295;for(var i=xt(r,t=Xi(t));++n=o)return e;var a=n-Vt(r);if(a<1)return r;var l=u?si(u,0,a).join(""):e.slice(0,a);if(void 0===i)return l+r;if(u&&(a+=l.length-a),Yu(i)){if(e.slice(a).search(i)){var s,c=l;for(i.global||(i=me(i.source,aa(ne.exec(i))+"g")),i.lastIndex=0;s=i.exec(c);)var f=s.index;l=l.slice(0,void 0===f?a:f)}}else if(e.indexOf(Qr(i),a)!=a){var d=l.lastIndexOf(i);d>-1&&(l=l.slice(0,d))}return l+r},xn.unescape=function(e){return(e=aa(e))&&L.test(e)?e.replace(R,Gt):e},xn.uniqueId=function(e){var t=++Ce;return aa(e)+t},xn.upperCase=Ba,xn.upperFirst=ja,xn.each=au,xn.eachRight=lu,xn.first=Ro,Xa(xn,(cl={},lr(xn,(function(e,t){Se.call(xn.prototype,t)||(cl[t]=e)})),cl),{chain:!1}),xn.VERSION="4.17.20",ut(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){xn[e].placeholder=xn})),ut(["drop","take"],(function(e,t){In.prototype[e]=function(n){n=void 0===n?1:un(ra(n),0);var r=this.__filtered__&&!t?new In(this):this.clone();return r.__filtered__?r.__takeCount__=an(n,r.__takeCount__):r.__views__.push({size:an(n,4294967295),type:e+(r.__dir__<0?"Right":"")}),r},In.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),ut(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;In.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Xi(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),ut(["head","last"],(function(e,t){var n="take"+(t?"Right":"");In.prototype[e]=function(){return this[n](1).value()[0]}})),ut(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");In.prototype[e]=function(){return this.__filtered__?new In(this):this[n](1)}})),In.prototype.compact=function(){return this.filter(Ga)},In.prototype.find=function(e){return this.filter(e).head()},In.prototype.findLast=function(e){return this.reverse().find(e)},In.prototype.invokeMap=Br((function(e,t){return"function"==typeof e?new In(this):this.map((function(n){return yr(n,e,t)}))})),In.prototype.reject=function(e){return this.filter(Su(Xi(e)))},In.prototype.slice=function(e,t){e=ra(e);var n=this;return n.__filtered__&&(e>0||t<0)?new In(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=ra(t))<0?n.dropRight(-t):n.take(t-e)),n)},In.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},In.prototype.toArray=function(){return this.take(4294967295)},lr(In.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=xn[r?"take"+("last"==t?"Right":""):t],o=r||/^find/.test(t);i&&(xn.prototype[t]=function(){var t=this.__wrapped__,u=r?[1]:arguments,a=t instanceof In,l=u[0],s=a||Nu(t),c=function(e){var t=i.apply(xn,pt([e],u));return r&&f?t[0]:t};s&&n&&"function"==typeof l&&1!=l.length&&(a=s=!1);var f=this.__chain__,d=!!this.__actions__.length,p=o&&!f,h=a&&!d;if(!o&&s){t=h?t:new In(this);var v=e.apply(t,u);return v.__actions__.push({func:nu,args:[c],thisArg:void 0}),new Pn(v,f)}return p&&h?e.apply(this,u):(v=this.thru(c),p?r?v.value()[0]:v.value():v)})})),ut(["pop","push","shift","sort","splice","unshift"],(function(e){var t=_e[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);xn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(Nu(i)?i:[],e)}return this[n]((function(n){return t.apply(Nu(n)?n:[],e)}))}})),lr(In.prototype,(function(e,t){var n=xn[t];if(n){var r=n.name+"";Se.call(_n,r)||(_n[r]=[]),_n[r].push({name:t,func:n})}})),_n[xi(void 0,2).name]=[{name:"wrapper",func:void 0}],In.prototype.clone=function(){var e=new In(this.__wrapped__);return e.__actions__=gi(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=gi(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=gi(this.__views__),e},In.prototype.reverse=function(){if(this.__filtered__){var e=new In(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},In.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Nu(e),r=t<0,i=n?e.length:0,o=function(e,t,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},xn.prototype.plant=function(e){for(var t,n=this;n instanceof On;){var r=xo(n);r.__index__=0,r.__values__=void 0,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},xn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof In){var t=e;return this.__actions__.length&&(t=new In(this)),(t=t.reverse()).__actions__.push({func:nu,args:[Ho],thisArg:void 0}),new Pn(t,this.__chain__)}return this.thru(Ho)},xn.prototype.toJSON=xn.prototype.valueOf=xn.prototype.value=function(){return ni(this.__wrapped__,this.__actions__)},xn.prototype.first=xn.prototype.head,gt&&(xn.prototype[gt]=function(){return this}),xn}();Ge._=$t,void 0===(r=function(){return $t}.call(t,n,t,e))||(e.exports=r)}.call(this)},1573:e=>{"use strict";const t=(e,t)=>{for(const n of Reflect.ownKeys(t))Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n));return e};e.exports=t,e.exports.default=t},9381:e=>{"use strict"; -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,o){for(var u,a,l=i(e),s=1;s{"use strict";const r=n(1573),i=new WeakMap,o=(e,t={})=>{if("function"!=typeof e)throw new TypeError("Expected a function");let n,o=!1,u=0;const a=e.displayName||e.name||"",l=function(...r){if(i.set(l,++u),o){if(!0===t.throw)throw new Error(`Function \`${a}\` can only be called once`);return n}return o=!0,n=e.apply(this,r),e=null,n};return r(l,e),i.set(l,u),l};e.exports=o,e.exports.default=o,e.exports.callCount=e=>{if(!i.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return i.get(e)}},8070:(e,t,n)=>{"use strict";const r=n(2413),i=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"];let o={};e.exports=e=>{const t=new r.PassThrough,n=new r.PassThrough;t.write=t=>e("stdout",t),n.write=t=>e("stderr",t);const u=new console.Console(t,n);for(const e of i)o[e]=console[e],console[e]=u[e];return()=>{for(const e of i)console[e]=o[e];o={}}}},5187:e=>{window,e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=20)}([function(e,t,n){"use strict";e.exports=n(12)},function(e,t,n){"use strict"; -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/var r=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;function u(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,a,l=u(e),s=1;s=t||n<0||f&&e-s>=o}function w(){var e=h();if(b(e))return E(e);a=setTimeout(w,function(e){var n=t-(e-l);return f?p(n,o-(e-s)):n}(e))}function E(e){return a=void 0,m&&r?y(e):(r=i=void 0,u)}function D(){var e=h(),n=b(e);if(r=arguments,i=this,l=e,n){if(void 0===a)return _(l);if(f)return a=setTimeout(w,t),y(l)}return void 0===a&&(a=setTimeout(w,t)),u}return t=g(t)||0,v(n)&&(c=!!n.leading,o=(f="maxWait"in n)?d(g(n.maxWait)||0,t):o,m="trailing"in n?!!n.trailing:m),D.cancel=function(){void 0!==a&&clearTimeout(a),s=0,r=l=i=a=void 0},D.flush=function(){return void 0===a?u:E(h())},D}(e,t,{leading:r,maxWait:t,trailing:i})}}).call(this,n(4))},function(e,t,n){(function(n){function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var i;t=e.exports=p,i="object"===(void 0===n?"undefined":r(n))&&n.env&&n.env.NODE_DEBUG&&/\bsemver\b/i.test(n.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},t.SEMVER_SPEC_VERSION="2.0.0";var o=Number.MAX_SAFE_INTEGER||9007199254740991,u=t.re=[],a=t.src=[],l=t.tokens={},s=0;function c(e){l[e]=s++}c("NUMERICIDENTIFIER"),a[l.NUMERICIDENTIFIER]="0|[1-9]\\d*",c("NUMERICIDENTIFIERLOOSE"),a[l.NUMERICIDENTIFIERLOOSE]="[0-9]+",c("NONNUMERICIDENTIFIER"),a[l.NONNUMERICIDENTIFIER]="\\d*[a-zA-Z-][a-zA-Z0-9-]*",c("MAINVERSION"),a[l.MAINVERSION]="("+a[l.NUMERICIDENTIFIER]+")\\.("+a[l.NUMERICIDENTIFIER]+")\\.("+a[l.NUMERICIDENTIFIER]+")",c("MAINVERSIONLOOSE"),a[l.MAINVERSIONLOOSE]="("+a[l.NUMERICIDENTIFIERLOOSE]+")\\.("+a[l.NUMERICIDENTIFIERLOOSE]+")\\.("+a[l.NUMERICIDENTIFIERLOOSE]+")",c("PRERELEASEIDENTIFIER"),a[l.PRERELEASEIDENTIFIER]="(?:"+a[l.NUMERICIDENTIFIER]+"|"+a[l.NONNUMERICIDENTIFIER]+")",c("PRERELEASEIDENTIFIERLOOSE"),a[l.PRERELEASEIDENTIFIERLOOSE]="(?:"+a[l.NUMERICIDENTIFIERLOOSE]+"|"+a[l.NONNUMERICIDENTIFIER]+")",c("PRERELEASE"),a[l.PRERELEASE]="(?:-("+a[l.PRERELEASEIDENTIFIER]+"(?:\\."+a[l.PRERELEASEIDENTIFIER]+")*))",c("PRERELEASELOOSE"),a[l.PRERELEASELOOSE]="(?:-?("+a[l.PRERELEASEIDENTIFIERLOOSE]+"(?:\\."+a[l.PRERELEASEIDENTIFIERLOOSE]+")*))",c("BUILDIDENTIFIER"),a[l.BUILDIDENTIFIER]="[0-9A-Za-z-]+",c("BUILD"),a[l.BUILD]="(?:\\+("+a[l.BUILDIDENTIFIER]+"(?:\\."+a[l.BUILDIDENTIFIER]+")*))",c("FULL"),c("FULLPLAIN"),a[l.FULLPLAIN]="v?"+a[l.MAINVERSION]+a[l.PRERELEASE]+"?"+a[l.BUILD]+"?",a[l.FULL]="^"+a[l.FULLPLAIN]+"$",c("LOOSEPLAIN"),a[l.LOOSEPLAIN]="[v=\\s]*"+a[l.MAINVERSIONLOOSE]+a[l.PRERELEASELOOSE]+"?"+a[l.BUILD]+"?",c("LOOSE"),a[l.LOOSE]="^"+a[l.LOOSEPLAIN]+"$",c("GTLT"),a[l.GTLT]="((?:<|>)?=?)",c("XRANGEIDENTIFIERLOOSE"),a[l.XRANGEIDENTIFIERLOOSE]=a[l.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*",c("XRANGEIDENTIFIER"),a[l.XRANGEIDENTIFIER]=a[l.NUMERICIDENTIFIER]+"|x|X|\\*",c("XRANGEPLAIN"),a[l.XRANGEPLAIN]="[v=\\s]*("+a[l.XRANGEIDENTIFIER]+")(?:\\.("+a[l.XRANGEIDENTIFIER]+")(?:\\.("+a[l.XRANGEIDENTIFIER]+")(?:"+a[l.PRERELEASE]+")?"+a[l.BUILD]+"?)?)?",c("XRANGEPLAINLOOSE"),a[l.XRANGEPLAINLOOSE]="[v=\\s]*("+a[l.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+a[l.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+a[l.XRANGEIDENTIFIERLOOSE]+")(?:"+a[l.PRERELEASELOOSE]+")?"+a[l.BUILD]+"?)?)?",c("XRANGE"),a[l.XRANGE]="^"+a[l.GTLT]+"\\s*"+a[l.XRANGEPLAIN]+"$",c("XRANGELOOSE"),a[l.XRANGELOOSE]="^"+a[l.GTLT]+"\\s*"+a[l.XRANGEPLAINLOOSE]+"$",c("COERCE"),a[l.COERCE]="(^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])",c("COERCERTL"),u[l.COERCERTL]=new RegExp(a[l.COERCE],"g"),c("LONETILDE"),a[l.LONETILDE]="(?:~>?)",c("TILDETRIM"),a[l.TILDETRIM]="(\\s*)"+a[l.LONETILDE]+"\\s+",u[l.TILDETRIM]=new RegExp(a[l.TILDETRIM],"g"),c("TILDE"),a[l.TILDE]="^"+a[l.LONETILDE]+a[l.XRANGEPLAIN]+"$",c("TILDELOOSE"),a[l.TILDELOOSE]="^"+a[l.LONETILDE]+a[l.XRANGEPLAINLOOSE]+"$",c("LONECARET"),a[l.LONECARET]="(?:\\^)",c("CARETTRIM"),a[l.CARETTRIM]="(\\s*)"+a[l.LONECARET]+"\\s+",u[l.CARETTRIM]=new RegExp(a[l.CARETTRIM],"g"),c("CARET"),a[l.CARET]="^"+a[l.LONECARET]+a[l.XRANGEPLAIN]+"$",c("CARETLOOSE"),a[l.CARETLOOSE]="^"+a[l.LONECARET]+a[l.XRANGEPLAINLOOSE]+"$",c("COMPARATORLOOSE"),a[l.COMPARATORLOOSE]="^"+a[l.GTLT]+"\\s*("+a[l.LOOSEPLAIN]+")$|^$",c("COMPARATOR"),a[l.COMPARATOR]="^"+a[l.GTLT]+"\\s*("+a[l.FULLPLAIN]+")$|^$",c("COMPARATORTRIM"),a[l.COMPARATORTRIM]="(\\s*)"+a[l.GTLT]+"\\s*("+a[l.LOOSEPLAIN]+"|"+a[l.XRANGEPLAIN]+")",u[l.COMPARATORTRIM]=new RegExp(a[l.COMPARATORTRIM],"g"),c("HYPHENRANGE"),a[l.HYPHENRANGE]="^\\s*("+a[l.XRANGEPLAIN]+")\\s+-\\s+("+a[l.XRANGEPLAIN]+")\\s*$",c("HYPHENRANGELOOSE"),a[l.HYPHENRANGELOOSE]="^\\s*("+a[l.XRANGEPLAINLOOSE]+")\\s+-\\s+("+a[l.XRANGEPLAINLOOSE]+")\\s*$",c("STAR"),a[l.STAR]="(<|>)?=?\\s*\\*";for(var f=0;f256)return null;if(!(t.loose?u[l.LOOSE]:u[l.FULL]).test(e))return null;try{return new p(e,t)}catch(e){return null}}function p(e,t){if(t&&"object"===r(t)||(t={loose:!!t,includePrerelease:!1}),e instanceof p){if(e.loose===t.loose)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>256)throw new TypeError("version is longer than 256 characters");if(!(this instanceof p))return new p(e,t);i("SemVer",e,t),this.options=t,this.loose=!!t.loose;var n=e.trim().match(t.loose?u[l.LOOSE]:u[l.FULL]);if(!n)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>o||this.major<0)throw new TypeError("Invalid major version");if(this.minor>o||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>o||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);-1===n&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=function(e,t,n,r){"string"==typeof n&&(r=n,n=void 0);try{return new p(e,n).inc(t,r).version}catch(e){return null}},t.diff=function(e,t){if(_(e,t))return null;var n=d(e),r=d(t),i="";if(n.prerelease.length||r.prerelease.length){i="pre";var o="prerelease"}for(var u in n)if(("major"===u||"minor"===u||"patch"===u)&&n[u]!==r[u])return i+u;return o},t.compareIdentifiers=v;var h=/^[0-9]+$/;function v(e,t){var n=h.test(e),r=h.test(t);return n&&r&&(e=+e,t=+t),e===t?0:n&&!r?-1:r&&!n?1:e0}function y(e,t,n){return m(e,t,n)<0}function _(e,t,n){return 0===m(e,t,n)}function b(e,t,n){return 0!==m(e,t,n)}function w(e,t,n){return m(e,t,n)>=0}function E(e,t,n){return m(e,t,n)<=0}function D(e,t,n,i){switch(t){case"===":return"object"===r(e)&&(e=e.version),"object"===r(n)&&(n=n.version),e===n;case"!==":return"object"===r(e)&&(e=e.version),"object"===r(n)&&(n=n.version),e!==n;case"":case"=":case"==":return _(e,n,i);case"!=":return b(e,n,i);case">":return g(e,n,i);case">=":return w(e,n,i);case"<":return y(e,n,i);case"<=":return E(e,n,i);default:throw new TypeError("Invalid operator: "+t)}}function S(e,t){if(t&&"object"===r(t)||(t={loose:!!t,includePrerelease:!1}),e instanceof S){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof S))return new S(e,t);i("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===C?this.value="":this.value=this.operator+this.semver.version,i("comp",this)}t.rcompareIdentifiers=function(e,t){return v(t,e)},t.major=function(e,t){return new p(e,t).major},t.minor=function(e,t){return new p(e,t).minor},t.patch=function(e,t){return new p(e,t).patch},t.compare=m,t.compareLoose=function(e,t){return m(e,t,!0)},t.compareBuild=function(e,t,n){var r=new p(e,n),i=new p(t,n);return r.compare(i)||r.compareBuild(i)},t.rcompare=function(e,t,n){return m(t,e,n)},t.sort=function(e,n){return e.sort((function(e,r){return t.compareBuild(e,r,n)}))},t.rsort=function(e,n){return e.sort((function(e,r){return t.compareBuild(r,e,n)}))},t.gt=g,t.lt=y,t.eq=_,t.neq=b,t.gte=w,t.lte=E,t.cmp=D,t.Comparator=S;var C={};function k(e,t){if(t&&"object"===r(t)||(t={loose:!!t,includePrerelease:!1}),e instanceof k)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new k(e.raw,t);if(e instanceof S)return new k(e.value,t);if(!(this instanceof k))return new k(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map((function(e){return this.parseRange(e.trim())}),this).filter((function(e){return e.length})),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function T(e,t){for(var n=!0,r=e.slice(),i=r.pop();n&&r.length;)n=r.every((function(e){return i.intersects(e,t)})),i=r.pop();return n}function x(e){return!e||"x"===e.toLowerCase()||"*"===e}function A(e,t,n,r,i,o,u,a,l,s,c,f,d){return((t=x(n)?"":x(r)?">="+n+".0.0":x(i)?">="+n+"."+r+".0":">="+t)+" "+(a=x(l)?"":x(s)?"<"+(+l+1)+".0.0":x(c)?"<"+l+"."+(+s+1)+".0":f?"<="+l+"."+s+"."+c+"-"+f:"<="+a)).trim()}function O(e,t,n){for(var r=0;r0){var o=e[r].semver;if(o.major===t.major&&o.minor===t.minor&&o.patch===t.patch)return!0}return!1}return!0}function P(e,t,n){try{t=new k(t,n)}catch(e){return!1}return t.test(e)}function I(e,t,n,r){var i,o,u,a,l;switch(e=new p(e,r),t=new k(t,r),n){case">":i=g,o=E,u=y,a=">",l=">=";break;case"<":i=y,o=w,u=g,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(P(e,t,r))return!1;for(var s=0;s=0.0.0")),f=f||e,d=d||e,i(e.semver,f.semver,r)?f=e:u(e.semver,d.semver,r)&&(d=e)})),f.operator===a||f.operator===l)return!1;if((!d.operator||d.operator===a)&&o(e,d.semver))return!1;if(d.operator===l&&u(e,d.semver))return!1}return!0}S.prototype.parse=function(e){var t=this.options.loose?u[l.COMPARATORLOOSE]:u[l.COMPARATOR],n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=void 0!==n[1]?n[1]:"","="===this.operator&&(this.operator=""),n[2]?this.semver=new p(n[2],this.options.loose):this.semver=C},S.prototype.toString=function(){return this.value},S.prototype.test=function(e){if(i("Comparator.test",e,this.options.loose),this.semver===C||e===C)return!0;if("string"==typeof e)try{e=new p(e,this.options)}catch(e){return!1}return D(e,this.operator,this.semver,this.options)},S.prototype.intersects=function(e,t){if(!(e instanceof S))throw new TypeError("a Comparator is required");var n;if(t&&"object"===r(t)||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return""===this.value||(n=new k(e.value,t),P(this.value,n,t));if(""===e.operator)return""===e.value||(n=new k(this.value,t),P(e.semver,n,t));var i=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),o=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),u=this.semver.version===e.semver.version,a=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),l=D(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),s=D(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return i||o||u&&a||l||s},t.Range=k,k.prototype.format=function(){return this.range=this.set.map((function(e){return e.join(" ").trim()})).join("||").trim(),this.range},k.prototype.toString=function(){return this.range},k.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var n=t?u[l.HYPHENRANGELOOSE]:u[l.HYPHENRANGE];e=e.replace(n,A),i("hyphen replace",e),e=e.replace(u[l.COMPARATORTRIM],"$1$2$3"),i("comparator trim",e,u[l.COMPARATORTRIM]),e=(e=(e=e.replace(u[l.TILDETRIM],"$1~")).replace(u[l.CARETTRIM],"$1^")).split(/\s+/).join(" ");var r=t?u[l.COMPARATORLOOSE]:u[l.COMPARATOR],o=e.split(" ").map((function(e){return function(e,t){return i("comp",e,t),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){i("caret",e,t);var n=t.loose?u[l.CARETLOOSE]:u[l.CARET];return e.replace(n,(function(t,n,r,o,u){var a;return i("caret",e,t,n,r,o,u),x(n)?a="":x(r)?a=">="+n+".0.0 <"+(+n+1)+".0.0":x(o)?a="0"===n?">="+n+"."+r+".0 <"+n+"."+(+r+1)+".0":">="+n+"."+r+".0 <"+(+n+1)+".0.0":u?(i("replaceCaret pr",u),a="0"===n?"0"===r?">="+n+"."+r+"."+o+"-"+u+" <"+n+"."+r+"."+(+o+1):">="+n+"."+r+"."+o+"-"+u+" <"+n+"."+(+r+1)+".0":">="+n+"."+r+"."+o+"-"+u+" <"+(+n+1)+".0.0"):(i("no pr"),a="0"===n?"0"===r?">="+n+"."+r+"."+o+" <"+n+"."+r+"."+(+o+1):">="+n+"."+r+"."+o+" <"+n+"."+(+r+1)+".0":">="+n+"."+r+"."+o+" <"+(+n+1)+".0.0"),i("caret return",a),a}))}(e,t)})).join(" ")}(e,t),i("caret",e),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){var n=t.loose?u[l.TILDELOOSE]:u[l.TILDE];return e.replace(n,(function(t,n,r,o,u){var a;return i("tilde",e,t,n,r,o,u),x(n)?a="":x(r)?a=">="+n+".0.0 <"+(+n+1)+".0.0":x(o)?a=">="+n+"."+r+".0 <"+n+"."+(+r+1)+".0":u?(i("replaceTilde pr",u),a=">="+n+"."+r+"."+o+"-"+u+" <"+n+"."+(+r+1)+".0"):a=">="+n+"."+r+"."+o+" <"+n+"."+(+r+1)+".0",i("tilde return",a),a}))}(e,t)})).join(" ")}(e,t),i("tildes",e),e=function(e,t){return i("replaceXRanges",e,t),e.split(/\s+/).map((function(e){return function(e,t){e=e.trim();var n=t.loose?u[l.XRANGELOOSE]:u[l.XRANGE];return e.replace(n,(function(n,r,o,u,a,l){i("xRange",e,n,r,o,u,a,l);var s=x(o),c=s||x(u),f=c||x(a),d=f;return"="===r&&d&&(r=""),l=t.includePrerelease?"-0":"",s?n=">"===r||"<"===r?"<0.0.0-0":"*":r&&d?(c&&(u=0),a=0,">"===r?(r=">=",c?(o=+o+1,u=0,a=0):(u=+u+1,a=0)):"<="===r&&(r="<",c?o=+o+1:u=+u+1),n=r+o+"."+u+"."+a+l):c?n=">="+o+".0.0"+l+" <"+(+o+1)+".0.0"+l:f&&(n=">="+o+"."+u+".0"+l+" <"+o+"."+(+u+1)+".0"+l),i("xRange return",n),n}))}(e,t)})).join(" ")}(e,t),i("xrange",e),e=function(e,t){return i("replaceStars",e,t),e.trim().replace(u[l.STAR],"")}(e,t),i("stars",e),e}(e,this.options)}),this).join(" ").split(/\s+/);return this.options.loose&&(o=o.filter((function(e){return!!e.match(r)}))),o.map((function(e){return new S(e,this.options)}),this)},k.prototype.intersects=function(e,t){if(!(e instanceof k))throw new TypeError("a Range is required");return this.set.some((function(n){return T(n,t)&&e.set.some((function(e){return T(e,t)&&n.every((function(n){return e.every((function(e){return n.intersects(e,t)}))}))}))}))},t.toComparators=function(e,t){return new k(e,t).set.map((function(e){return e.map((function(e){return e.value})).join(" ").trim().split(" ")}))},k.prototype.test=function(e){if(!e)return!1;if("string"==typeof e)try{e=new p(e,this.options)}catch(e){return!1}for(var t=0;t":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":n&&!g(n,t)||(n=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}}));return n&&e.test(n)?n:null},t.validRange=function(e,t){try{return new k(e,t).range||"*"}catch(e){return null}},t.ltr=function(e,t,n){return I(e,t,"<",n)},t.gtr=function(e,t,n){return I(e,t,">",n)},t.outside=I,t.prerelease=function(e,t){var n=d(e,t);return n&&n.prerelease.length?n.prerelease:null},t.intersects=function(e,t,n){return e=new k(e,n),t=new k(t,n),e.intersects(t)},t.coerce=function(e,t){if(e instanceof p)return e;if("number"==typeof e&&(e=String(e)),"string"!=typeof e)return null;var n=null;if((t=t||{}).rtl){for(var r;(r=u[l.COERCERTL].exec(e))&&(!n||n.index+n[0].length!==e.length);)n&&r.index+r[0].length===n.index+n[0].length||(n=r),u[l.COERCERTL].lastIndex=r.index+r[1].length+r[2].length;u[l.COERCERTL].lastIndex=-1}else n=e.match(u[l.COERCE]);return null===n?null:d(n[2]+"."+(n[3]||"0")+"."+(n[4]||"0"),t)}}).call(this,n(5))},function(e,t){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"===("undefined"==typeof window?"undefined":n(window))&&(r=window)}e.exports=r},function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function a(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:u}catch(e){r=u}}();var l,s=[],c=!1,f=-1;function d(){c&&l&&(c=!1,l.length?s=l.concat(s):f=-1,s.length&&p())}function p(){if(!c){var e=a(d);c=!0;for(var t=s.length;t;){for(l=s,s=[];++f1)for(var n=1;nthis[u])return w(this,this[h].get(e)),!1;var o=this[h].get(e).value;return this[f]&&(this[d]||this[f](e,o.value)),o.now=r,o.maxAge=n,o.value=t,this[a]+=i-o.length,o.length=i,this.get(e),b(this),!0}var s=new E(e,t,i,r,n);return s.length>this[u]?(this[f]&&this[f](e,t),!1):(this[a]+=s.length,this[p].unshift(s),this[h].set(e,this[p].head),b(this),!0)}},{key:"has",value:function(e){if(!this[h].has(e))return!1;var t=this[h].get(e).value;return!_(this,t)}},{key:"get",value:function(e){return y(this,e,!0)}},{key:"peek",value:function(e){return y(this,e,!1)}},{key:"pop",value:function(){var e=this[p].tail;return e?(w(this,e),e.value):null}},{key:"del",value:function(e){w(this,this[h].get(e))}},{key:"load",value:function(e){this.reset();for(var t=Date.now(),n=e.length-1;n>=0;n--){var r=e[n],i=r.e||0;if(0===i)this.set(r.k,r.v);else{var o=i-t;o>0&&this.set(r.k,r.v,o)}}}},{key:"prune",value:function(){var e=this;this[h].forEach((function(t,n){return y(e,n,!1)}))}},{key:"max",set:function(e){if("number"!=typeof e||e<0)throw new TypeError("max must be a non-negative number");this[u]=e||1/0,b(this)},get:function(){return this[u]}},{key:"allowStale",set:function(e){this[s]=!!e},get:function(){return this[s]}},{key:"maxAge",set:function(e){if("number"!=typeof e)throw new TypeError("maxAge must be a non-negative number");this[c]=e,b(this)},get:function(){return this[c]}},{key:"lengthCalculator",set:function(e){var t=this;"function"!=typeof e&&(e=m),e!==this[l]&&(this[l]=e,this[a]=0,this[p].forEach((function(e){e.length=t[l](e.value,e.key),t[a]+=e.length}))),b(this)},get:function(){return this[l]}},{key:"length",get:function(){return this[a]}},{key:"itemCount",get:function(){return this[p].length}}])&&i(t.prototype,n),e}(),y=function(e,t,n){var r=e[h].get(t);if(r){var i=r.value;if(_(e,i)){if(w(e,r),!e[s])return}else n&&(e[v]&&(r.value.now=Date.now()),e[p].unshiftNode(r));return i.value}},_=function(e,t){if(!t||!t.maxAge&&!e[c])return!1;var n=Date.now()-t.now;return t.maxAge?n>t.maxAge:e[c]&&n>e[c]},b=function(e){if(e[a]>e[u])for(var t=e[p].tail;e[a]>e[u]&&null!==t;){var n=t.prev;w(e,t),t=n}},w=function(e,t){if(t){var n=t.value;e[f]&&e[f](n.key,n.value),e[a]-=n.length,e[h].delete(n.key),e[p].removeNode(t)}},E=function e(t,n,i,o,u){r(this,e),this.key=t,this.value=n,this.length=i,this.now=o,this.maxAge=u||0},D=function(e,t,n,r){var i=n.value;_(e,i)&&(w(e,n),e[s]||(i=void 0)),i&&t.call(r,i.value,i.key,e)};e.exports=g},function(e,t,n){(function(t){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}e.exports=function(){if("undefined"==typeof document||!document.addEventListener)return null;var r,i,o,u={};return u.copy=function(){var e=!1,t=null,n=!1;function r(){e=!1,t=null,n&&window.getSelection().removeAllRanges(),n=!1}return document.addEventListener("copy",(function(n){if(e){for(var r in t)n.clipboardData.setData(r,t[r]);n.preventDefault()}})),function(i){return new Promise((function(o,u){e=!0,"string"==typeof i?t={"text/plain":i}:i instanceof Node?t={"text/html":(new XMLSerializer).serializeToString(i)}:i instanceof Object?t=i:u("Invalid data type. Must be string, DOM node, or an object mapping MIME types to strings."),function e(t){try{if(document.execCommand("copy"))r(),o();else{if(t)throw r(),new Error("Unable to copy. Perhaps it's not available in your browser?");!function(){var e=document.getSelection();if(!document.queryCommandEnabled("copy")&&e.isCollapsed){var t=document.createRange();t.selectNodeContents(document.body),e.removeAllRanges(),e.addRange(t),n=!0}}(),e(!0)}}catch(e){r(),u(e)}}(!1)}))}}(),u.paste=(o=!1,document.addEventListener("paste",(function(e){if(o){o=!1,e.preventDefault();var t=r;r=null,t(e.clipboardData.getData(i))}})),function(e){return new Promise((function(t,n){o=!0,r=t,i=e||"text/plain";try{document.execCommand("paste")||(o=!1,n(new Error("Unable to paste. Pasting only works in Internet Explorer at the moment.")))}catch(e){o=!1,n(new Error(e))}}))}),"undefined"==typeof ClipboardEvent&&void 0!==window.clipboardData&&void 0!==window.clipboardData.setData&&( -/*! promise-polyfill 2.0.1 */ -function(r){function i(e,t){return function(){e.apply(t,arguments)}}function o(e){if("object"!=n(this))throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],f(e,i(a,this),i(l,this))}function u(e){var t=this;return null===this._state?void this._deferreds.push(e):void d((function(){var n=t._state?e.onFulfilled:e.onRejected;if(null!==n){var r;try{r=n(t._value)}catch(t){return void e.reject(t)}e.resolve(r)}else(t._state?e.resolve:e.reject)(t._value)}))}function a(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==n(e)||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void f(i(t,e),i(a,this),i(l,this))}this._state=!0,this._value=e,s.call(this)}catch(e){l.call(this,e)}}function l(e){this._state=!1,this._value=e,s.call(this)}function s(){for(var e=0,t=this._deferreds.length;t>e;e++)u.call(this,this._deferreds[e]);this._deferreds=null}function c(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function f(e,t,n){var r=!1;try{e((function(e){r||(r=!0,t(e))}),(function(e){r||(r=!0,n(e))}))}catch(e){if(r)return;r=!0,n(e)}}var d=o.immediateFn||"function"==typeof t&&t||function(e){setTimeout(e,1)},p=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){var n=this;return new o((function(r,i){u.call(n,new c(e,t,r,i))}))},o.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&p(arguments[0])?arguments[0]:arguments);return new o((function(t,r){function i(u,a){try{if(a&&("object"==n(a)||"function"==typeof a)){var l=a.then;if("function"==typeof l)return void l.call(a,(function(e){i(u,e)}),r)}e[u]=a,0==--o&&t(e)}catch(e){r(e)}}if(0===e.length)return t([]);for(var o=e.length,u=0;ur;r++)e[r].then(t,n)}))},e.exports?e.exports=o:r.Promise||(r.Promise=o)}(this),u.copy=function(e){return new Promise((function(t,n){if("string"!=typeof e&&!("text/plain"in e))throw new Error("You must provide a text/plain type.");var r="string"==typeof e?e:e["text/plain"];window.clipboardData.setData("Text",r)?t():n(new Error("Copying was rejected."))}))},u.paste=function(){return new Promise((function(e,t){var n=window.clipboardData.getData("Text");n?e(n):t(new Error("Pasting was rejected."))}))}),u}()}).call(this,n(13).setImmediate)},function(e,t,n){"use strict";e.exports=n(15)},function(e,t,n){"use strict";n.r(t),t.default=":root {\n /**\n * IMPORTANT: When new theme variables are added below– also add them to SettingsContext updateThemeVariables()\n */\n\n /* Light theme */\n --light-color-attribute-name: #ef6632;\n --light-color-attribute-name-not-editable: #23272f;\n --light-color-attribute-name-inverted: rgba(255, 255, 255, 0.7);\n --light-color-attribute-value: #1a1aa6;\n --light-color-attribute-value-inverted: #ffffff;\n --light-color-attribute-editable-value: #1a1aa6;\n --light-color-background: #ffffff;\n --light-color-background-hover: rgba(0, 136, 250, 0.1);\n --light-color-background-inactive: #e5e5e5;\n --light-color-background-invalid: #fff0f0;\n --light-color-background-selected: #0088fa;\n --light-color-button-background: #ffffff;\n --light-color-button-background-focus: #ededed;\n --light-color-button: #5f6673;\n --light-color-button-disabled: #cfd1d5;\n --light-color-button-active: #0088fa;\n --light-color-button-focus: #23272f;\n --light-color-button-hover: #23272f;\n --light-color-border: #eeeeee;\n --light-color-commit-did-not-render-fill: #cfd1d5;\n --light-color-commit-did-not-render-fill-text: #000000;\n --light-color-commit-did-not-render-pattern: #cfd1d5;\n --light-color-commit-did-not-render-pattern-text: #333333;\n --light-color-commit-gradient-0: #37afa9;\n --light-color-commit-gradient-1: #63b19e;\n --light-color-commit-gradient-2: #80b393;\n --light-color-commit-gradient-3: #97b488;\n --light-color-commit-gradient-4: #abb67d;\n --light-color-commit-gradient-5: #beb771;\n --light-color-commit-gradient-6: #cfb965;\n --light-color-commit-gradient-7: #dfba57;\n --light-color-commit-gradient-8: #efbb49;\n --light-color-commit-gradient-9: #febc38;\n --light-color-commit-gradient-text: #000000;\n --light-color-component-name: #6a51b2;\n --light-color-component-name-inverted: #ffffff;\n --light-color-component-badge-background: rgba(0, 0, 0, 0.1);\n --light-color-component-badge-background-inverted: rgba(255, 255, 255, 0.25);\n --light-color-component-badge-count: #777d88;\n --light-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7);\n --light-color-context-background: rgba(0,0,0,.9);\n --light-color-context-background-hover: rgba(255, 255, 255, 0.1);\n --light-color-context-background-selected: #178fb9;\n --light-color-context-border: #3d424a;\n --light-color-context-text: #ffffff;\n --light-color-context-text-selected: #ffffff;\n --light-color-dim: #777d88;\n --light-color-dimmer: #cfd1d5;\n --light-color-dimmest: #eff0f1;\n --light-color-error-background: hsl(0, 100%, 97%);\n --light-color-error-border: hsl(0, 100%, 92%);\n --light-color-error-text: #ff0000;\n --light-color-expand-collapse-toggle: #777d88;\n --light-color-link: #0000ff;\n --light-color-modal-background: rgba(255, 255, 255, 0.75);\n --light-color-record-active: #fc3a4b;\n --light-color-record-hover: #3578e5;\n --light-color-record-inactive: #0088fa;\n --light-color-scroll-thumb: #c2c2c2;\n --light-color-scroll-track: #fafafa;\n --light-color-search-match: yellow;\n --light-color-search-match-current: #f7923b;\n --light-color-selected-tree-highlight-active: rgba(0, 136, 250, 0.1);\n --light-color-selected-tree-highlight-inactive: rgba(0, 0, 0, 0.05);\n --light-color-shadow: rgba(0, 0, 0, 0.25);\n --light-color-tab-selected-border: #0088fa;\n --light-color-text: #000000;\n --light-color-text-invalid: #ff0000;\n --light-color-text-selected: #ffffff;\n --light-color-toggle-background-invalid: #fc3a4b;\n --light-color-toggle-background-on: #0088fa;\n --light-color-toggle-background-off: #cfd1d5;\n --light-color-toggle-text: #ffffff;\n --light-color-tooltip-background: rgba(0, 0, 0, 0.9);\n --light-color-tooltip-text: #ffffff;\n\n /* Dark theme */\n --dark-color-attribute-name: #9d87d2;\n --dark-color-attribute-name-not-editable: #ededed;\n --dark-color-attribute-name-inverted: #282828;\n --dark-color-attribute-value: #cedae0;\n --dark-color-attribute-value-inverted: #ffffff;\n --dark-color-attribute-editable-value: yellow;\n --dark-color-background: #282c34;\n --dark-color-background-hover: rgba(255, 255, 255, 0.1);\n --dark-color-background-inactive: #3d424a;\n --dark-color-background-invalid: #5c0000;\n --dark-color-background-selected: #178fb9;\n --dark-color-button-background: #282c34;\n --dark-color-button-background-focus: #3d424a;\n --dark-color-button: #afb3b9;\n --dark-color-button-active: #61dafb;\n --dark-color-button-disabled: #4f5766;\n --dark-color-button-focus: #a2e9fc;\n --dark-color-button-hover: #ededed;\n --dark-color-border: #3d424a;\n --dark-color-commit-did-not-render-fill: #777d88;\n --dark-color-commit-did-not-render-fill-text: #000000;\n --dark-color-commit-did-not-render-pattern: #666c77;\n --dark-color-commit-did-not-render-pattern-text: #ffffff;\n --dark-color-commit-gradient-0: #37afa9;\n --dark-color-commit-gradient-1: #63b19e;\n --dark-color-commit-gradient-2: #80b393;\n --dark-color-commit-gradient-3: #97b488;\n --dark-color-commit-gradient-4: #abb67d;\n --dark-color-commit-gradient-5: #beb771;\n --dark-color-commit-gradient-6: #cfb965;\n --dark-color-commit-gradient-7: #dfba57;\n --dark-color-commit-gradient-8: #efbb49;\n --dark-color-commit-gradient-9: #febc38;\n --dark-color-commit-gradient-text: #000000;\n --dark-color-component-name: #61dafb;\n --dark-color-component-name-inverted: #282828;\n --dark-color-component-badge-background: rgba(255, 255, 255, 0.25);\n --dark-color-component-badge-background-inverted: rgba(0, 0, 0, 0.25);\n --dark-color-component-badge-count: #8f949d;\n --dark-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7);\n --dark-color-context-background: rgba(255,255,255,.9);\n --dark-color-context-background-hover: rgba(0, 136, 250, 0.1);\n --dark-color-context-background-selected: #0088fa;\n --dark-color-context-border: #eeeeee;\n --dark-color-context-text: #000000;\n --dark-color-context-text-selected: #ffffff;\n --dark-color-dim: #8f949d;\n --dark-color-dimmer: #777d88;\n --dark-color-dimmest: #4f5766;\n --dark-color-error-background: #200;\n --dark-color-error-border: #900;\n --dark-color-error-text: #f55;\n --dark-color-expand-collapse-toggle: #8f949d;\n --dark-color-link: #61dafb;\n --dark-color-modal-background: rgba(0, 0, 0, 0.75);\n --dark-color-record-active: #fc3a4b;\n --dark-color-record-hover: #a2e9fc;\n --dark-color-record-inactive: #61dafb;\n --dark-color-scroll-thumb: #afb3b9;\n --dark-color-scroll-track: #313640;\n --dark-color-search-match: yellow;\n --dark-color-search-match-current: #f7923b;\n --dark-color-selected-tree-highlight-active: rgba(23, 143, 185, 0.15);\n --dark-color-selected-tree-highlight-inactive: rgba(255, 255, 255, 0.05);\n --dark-color-shadow: rgba(0, 0, 0, 0.5);\n --dark-color-tab-selected-border: #178fb9;\n --dark-color-text: #ffffff;\n --dark-color-text-invalid: #ff8080;\n --dark-color-text-selected: #ffffff;\n --dark-color-toggle-background-invalid: #fc3a4b;\n --dark-color-toggle-background-on: #178fb9;\n --dark-color-toggle-background-off: #777d88;\n --dark-color-toggle-text: #ffffff;\n --dark-color-tooltip-background: rgba(255, 255, 255, 0.9);\n --dark-color-tooltip-text: #000000;\n\n /* Font smoothing */\n --light-font-smoothing: auto;\n --dark-font-smoothing: antialiased;\n --font-smoothing: auto;\n\n /* Compact density */\n --compact-font-size-monospace-small: 9px;\n --compact-font-size-monospace-normal: 11px;\n --compact-font-size-monospace-large: 15px;\n --compact-font-size-sans-small: 10px;\n --compact-font-size-sans-normal: 12px;\n --compact-font-size-sans-large: 14px;\n --compact-line-height-data: 18px;\n --compact-root-font-size: 16px;\n\n /* Comfortable density */\n --comfortable-font-size-monospace-small: 10px;\n --comfortable-font-size-monospace-normal: 13px;\n --comfortable-font-size-monospace-large: 17px;\n --comfortable-font-size-sans-small: 12px;\n --comfortable-font-size-sans-normal: 14px;\n --comfortable-font-size-sans-large: 16px;\n --comfortable-line-height-data: 22px;\n --comfortable-root-font-size: 20px;\n\n /* GitHub.com system fonts */\n --font-family-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo,\n Courier, monospace;\n --font-family-sans: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica,\n Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\n\n /* Constant values shared between JS and CSS */\n --interaction-commit-size: 10px;\n --interaction-label-width: 200px;\n}\n"},function(e,t,n){"use strict";function r(e){var t=this;if(t instanceof r||(t=new r),t.tail=null,t.head=null,t.length=0,e&&"function"==typeof e.forEach)e.forEach((function(e){t.push(e)}));else if(arguments.length>0)for(var n=0,i=arguments.length;n1)n=t;else{if(!this.head)throw new TypeError("Reduce of empty list with no initial value");r=this.head.next,n=this.head.value}for(var i=0;null!==r;i++)n=e(n,r.value,i),r=r.next;return n},r.prototype.reduceReverse=function(e,t){var n,r=this.tail;if(arguments.length>1)n=t;else{if(!this.tail)throw new TypeError("Reduce of empty list with no initial value");r=this.tail.prev,n=this.tail.value}for(var i=this.length-1;null!==r;i--)n=e(n,r.value,i),r=r.prev;return n},r.prototype.toArray=function(){for(var e=new Array(this.length),t=0,n=this.head;null!==n;t++)e[t]=n.value,n=n.next;return e},r.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,n=this.tail;null!==n;t++)e[t]=n.value,n=n.prev;return e},r.prototype.slice=function(e,t){(t=t||this.length)<0&&(t+=this.length),(e=e||0)<0&&(e+=this.length);var n=new r;if(tthis.length&&(t=this.length);for(var i=0,o=this.head;null!==o&&ithis.length&&(t=this.length);for(var i=this.length,o=this.tail;null!==o&&i>t;i--)o=o.prev;for(;null!==o&&i>e;i--,o=o.prev)n.push(o.value);return n},r.prototype.splice=function(e,t){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var n=0,r=this.head;null!==r&&n=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(14),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(4))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i,o,u,a,l=1,s={},c=!1,f=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){h(e)}))}:function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?(u="setImmediate$"+Math.random()+"$",a=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(u)&&h(+t.data.slice(u.length))},e.addEventListener?e.addEventListener("message",a,!1):e.attachEvent("onmessage",a),r=function(t){e.postMessage(u+t,"*")}):e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){h(e.data)},r=function(e){o.port2.postMessage(e)}):f&&"onreadystatechange"in f.createElement("script")?(i=f.documentElement,r=function(e){var t=f.createElement("script");t.onreadystatechange=function(){h(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):r=function(e){setTimeout(h,0,e)},d.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;nv;v++)if(-1!==(h=g(p,c,v))){m=v,c=h;break e}c=-1}}e:{if(p=f,void 0!==(h=d().get(s.primitive)))for(v=0;vc-p?null:f.slice(p,c-1))){if(c=0,null!==r){for(;cc;r--)i=a.pop()}for(r=f.length-c-1;1<=r;r--)c=[],i.push({id:null,isStateEditable:!1,name:_(f[r-1].functionName),value:void 0,subHooks:c}),a.push(i),i=c;r=f}c="Context"===(f=s.primitive)||"DebugValue"===f?null:u++,i.push({id:c,isStateEditable:"Reducer"===f||"State"===f,name:f,value:s.value,subHooks:[]})}return function e(t,n){for(var r=[],i=0;i-1&&(t=t.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var n=t.replace(/^\s+/,"").replace(/\(eval code/g,"("),r=n.match(/ (\((.+):(\d+):(\d+)\)$)/),i=(n=r?n.replace(r[0],""):n).split(/\s+/).slice(1),o=this.extractLocation(r?r[1]:i.pop()),u=i.join(" ")||void 0,a=["eval",""].indexOf(o[0])>-1?void 0:o[0];return new e({functionName:u,fileName:a,lineNumber:o[1],columnNumber:o[2],source:t})}),this)},parseFFOrSafari:function(t){return t.stack.split("\n").filter((function(e){return!e.match(r)}),this).map((function(t){if(t.indexOf(" > eval")>-1&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===t.indexOf("@")&&-1===t.indexOf(":"))return new e({functionName:t});var n=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=t.match(n),i=r&&r[1]?r[1]:void 0,o=this.extractLocation(t.replace(n,""));return new e({functionName:i,fileName:o[0],lineNumber:o[1],columnNumber:o[2],source:t})}),this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(t){for(var n=/Line (\d+).*script (?:in )?(\S+)/i,r=t.message.split("\n"),i=[],o=2,u=r.length;o/,"$2").replace(/\([^)]*\)/g,"")||void 0;o.match(/\(([^)]*)\)/)&&(n=o.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var a=void 0===n||"[arguments not available]"===n?void 0:n.split(",");return new e({functionName:u,args:a,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:t})}),this)}}})?r.apply(t,i):r)||(e.exports=o)}()},function(e,t,n){var r,i,o;!function(n,u){"use strict";i=[],void 0===(o="function"==typeof(r=function(){function e(e){return e.charAt(0).toUpperCase()+e.substring(1)}function t(e){return function(){return this[e]}}var n=["isConstructor","isEval","isNative","isToplevel"],r=["columnNumber","lineNumber"],i=["fileName","functionName","source"],o=n.concat(r,i,["args"]);function u(t){if(t)for(var n=0;n1?n-1:0),i=1;i=0&&n.splice(r,1)}}}])&&r(t.prototype,n),e}(),o=n(2),u=n.n(o);try{var a=n(9).default,l=function(e){var t=new RegExp("".concat(e,": ([0-9]+)")),n=a.match(t);return parseInt(n[1],10)};l("comfortable-line-height-data"),l("compact-line-height-data")}catch(e){}function s(e){try{return sessionStorage.getItem(e)}catch(e){return null}}function c(e){try{sessionStorage.removeItem(e)}catch(e){}}function f(e,t){try{return sessionStorage.setItem(e,t)}catch(e){}}var d=function(e,t){return e===t},p=n(1),h=n.n(p);function v(e){return e.ownerDocument?e.ownerDocument.defaultView:null}function m(e){var t=v(e);return t?t.frameElement:null}function g(e){var t=b(e);return y([e.getBoundingClientRect(),{top:t.borderTop,left:t.borderLeft,bottom:t.borderBottom,right:t.borderRight,width:0,height:0}])}function y(e){return e.reduce((function(e,t){return null==e?t:{top:e.top+t.top,left:e.left+t.left,width:e.width,height:e.height,bottom:e.bottom+t.bottom,right:e.right+t.right}}))}function _(e,t){var n=m(e);if(n&&n!==t){for(var r=[e.getBoundingClientRect()],i=n,o=!1;i;){var u=g(i);if(r.push(u),i=m(i),o)break;i&&v(i)===t&&(o=!0)}return y(r)}return e.getBoundingClientRect()}function b(e){var t=window.getComputedStyle(e);return{borderLeft:parseInt(t.borderLeftWidth,10),borderRight:parseInt(t.borderRightWidth,10),borderTop:parseInt(t.borderTopWidth,10),borderBottom:parseInt(t.borderBottomWidth,10),marginLeft:parseInt(t.marginLeft,10),marginRight:parseInt(t.marginRight,10),marginTop:parseInt(t.marginTop,10),marginBottom:parseInt(t.marginBottom,10),paddingLeft:parseInt(t.paddingLeft,10),paddingRight:parseInt(t.paddingRight,10),paddingTop:parseInt(t.paddingTop,10),paddingBottom:parseInt(t.paddingBottom,10)}}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nt.left+t.width&&(u=t.left+t.width-o-5),{style:{top:r+="px",left:u+="px"}}}(e,t,{width:n.width,height:n.height});h()(this.tip.style,r.style)}}]),e}(),T=function(){function e(){E(this,e);var t=window.__REACT_DEVTOOLS_TARGET_WINDOW__||window;this.window=t;var n=window.__REACT_DEVTOOLS_TARGET_WINDOW__||window;this.tipBoundsWindow=n;var r=t.document;this.container=r.createElement("div"),this.container.style.zIndex="10000000",this.tip=new k(r,this.container),this.rects=[],r.body.appendChild(this.container)}return S(e,[{key:"remove",value:function(){this.tip.remove(),this.rects.forEach((function(e){e.remove()})),this.rects.length=0,this.container.parentNode&&this.container.parentNode.removeChild(this.container)}},{key:"inspect",value:function(e,t){for(var n=this,r=e.filter((function(e){return e.nodeType===Node.ELEMENT_NODE}));this.rects.length>r.length;)this.rects.pop().remove();if(0!==r.length){for(;this.rects.length=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw o}}}}(u.rendererInterfaces.values());try{for(s.s();!(a=s.n()).done;){var c=a.value,f=c.getFiberIDForNative(o,!0);if(null!==f){l=c.getDisplayNameForFiberID(f,!0);break}}}catch(e){s.e(e)}finally{s.f()}l&&(t+=" (in "+l+")")}}this.tip.updateText(t,i.right-i.left,i.bottom-i.top);var d=_(this.tipBoundsWindow.document.documentElement,this.window);this.tip.updatePosition({top:i.top,left:i.left,height:i.bottom-i.top,width:i.right-i.left},{top:d.top+this.tipBoundsWindow.scrollY,left:d.left+this.tipBoundsWindow.scrollX,height:this.tipBoundsWindow.innerHeight,width:this.tipBoundsWindow.innerWidth})}}}]),e}();function x(e,t,n){h()(n.style,{borderTopWidth:e[t+"Top"]+"px",borderLeftWidth:e[t+"Left"]+"px",borderRightWidth:e[t+"Right"]+"px",borderBottomWidth:e[t+"Bottom"]+"px",borderStyle:"solid"})}var A={background:"rgba(120, 170, 210, 0.7)",padding:"rgba(77, 200, 0, 0.3)",margin:"rgba(255, 155, 0, 0.3)",border:"rgba(255, 200, 50, 0.3)"},O=null,P=null;function I(){O=null,null!==P&&(P.remove(),P=null)}function N(e,t,n){null!=window.document&&(null!==O&&clearTimeout(O),null!=e&&(null===P&&(P=new T),P.inspect(e,t),n&&(O=setTimeout(I,2e3))))}var M=new Set,R=["#37afa9","#63b19e","#80b393","#97b488","#abb67d","#beb771","#cfb965","#dfba57","#efbb49","#febc38"],F=null;function L(e){return(L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var B="object"===("undefined"==typeof performance?"undefined":L(performance))&&"function"==typeof performance.now?function(){return performance.now()}:function(){return Date.now()},j=new Map,U=null,z=!1,W=null;function H(e){z&&(e.forEach((function(e){var t=j.get(e),n=B(),r=null!=t?t.lastMeasuredAt:0,i=null!=t?t.rect:null;(null===i||r+2505&&void 0!==arguments[5]?arguments[5]:0,a=me(e);switch(a){case"html_element":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:e.tagName,type:a};case"function":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:"function"!=typeof e.name&&e.name?e.name:"function",type:a};case"string":return e.length<=500?e:e.slice(0,500)+"...";case"bigint":case"symbol":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:e.toString(),type:a};case"react_element":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:ge(e)||"Unknown",type:a};case"array_buffer":case"data_view":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:"data_view"===a?"DataView":"ArrayBuffer",size:e.byteLength,type:a};case"array":return o=i(r),u>=2&&!o?Z(a,!0,e,t,r):e.map((function(e,a){return ee(e,t,n,r.concat([a]),i,o?1:u+1)}));case"html_all_collection":case"typed_array":case"iterator":if(o=i(r),u>=2&&!o)return Z(a,!0,e,t,r);var l={unserializable:!0,type:a,readonly:!0,size:"typed_array"===a?e.length:void 0,preview_short:_e(e,!1),preview_long:_e(e,!0),name:e.constructor&&"Object"!==e.constructor.name?e.constructor.name:""};return Q(e[Symbol.iterator])&&Array.from(e).forEach((function(e,a){return l[a]=ee(e,t,n,r.concat([a]),i,o?1:u+1)})),n.push(r),l;case"opaque_iterator":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:e[Symbol.toStringTag],type:a};case"date":case"regexp":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:e.toString(),type:a};case"object":if(o=i(r),u>=2&&!o)return Z(a,!0,e,t,r);var s={};return ae(e).forEach((function(a){var l=a.toString();s[l]=ee(e[a],t,n,r.concat([l]),i,o?1:u+1)})),s;case"infinity":case"nan":case"undefined":return t.push(r),{type:a};default:return e}}function te(e){return(te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ne(e){return function(e){if(Array.isArray(e))return re(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return re(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?re(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nt.toString()?1:t.toString()>e.toString()?-1:0}function ae(e){for(var t=[],n=e,r=function(){var e=[].concat(ne(Object.keys(n)),ne(Object.getOwnPropertySymbols(n))),r=Object.getOwnPropertyDescriptors(n);e.forEach((function(e){r[e].enumerable&&t.push(e)})),n=Object.getPrototypeOf(n)};null!=n;)r();return t}function le(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Anonymous",n=ie.get(e);if(null!=n)return n;var r=t;return"string"==typeof e.displayName?r=e.displayName:"string"==typeof e.name&&""!==e.name&&(r=e.name),ie.set(e,r),r}var se=0;function ce(){return++se}function fe(e){var t=oe.get(e);if(void 0!==t)return t;for(var n=new Array(e.length),r=0;r1&&void 0!==arguments[1]?arguments[1]:50;return e.length>t?e.substr(0,t)+"…":e}function _e(e,t){if(null!=e&&hasOwnProperty.call(e,J.type))return t?e[J.preview_long]:e[J.preview_short];switch(me(e)){case"html_element":return"<".concat(ye(e.tagName.toLowerCase())," />");case"function":return ye("ƒ ".concat("function"==typeof e.name?"":e.name,"() {}"));case"string":return'"'.concat(e,'"');case"bigint":return ye(e.toString()+"n");case"regexp":case"symbol":return ye(e.toString());case"react_element":return"<".concat(ye(ge(e)||"Unknown")," />");case"array_buffer":return"ArrayBuffer(".concat(e.byteLength,")");case"data_view":return"DataView(".concat(e.buffer.byteLength,")");case"array":if(t){for(var n="",r=0;r0&&(n+=", "),!((n+=_e(e[r],!1)).length>50));r++);return"[".concat(ye(n),"]")}var i=hasOwnProperty.call(e,J.size)?e[J.size]:e.length;return"Array(".concat(i,")");case"typed_array":var o="".concat(e.constructor.name,"(").concat(e.length,")");if(t){for(var u="",a=0;a0&&(u+=", "),!((u+=e[a]).length>50));a++);return"".concat(o," [").concat(ye(u),"]")}return o;case"iterator":var l=e.constructor.name;if(t){for(var s=Array.from(e),c="",f=0;f0&&(c+=", "),Array.isArray(d)){var p=_e(d[0],!0),h=_e(d[1],!1);c+="".concat(p," => ").concat(h)}else c+=_e(d,!1);if(c.length>50)break}return"".concat(l,"(").concat(e.size,") {").concat(ye(c),"}")}return"".concat(l,"(").concat(e.size,")");case"opaque_iterator":return e[Symbol.toStringTag];case"date":return e.toString();case"object":if(t){for(var v=ae(e).sort(ue),m="",g=0;g0&&(m+=", "),(m+="".concat(y.toString(),": ").concat(_e(e[y],!1))).length>50)break}return"{".concat(ye(m),"}")}return"{…}";case"boolean":case"number":case"infinity":case"nan":case"null":case"undefined":return e;default:try{return ye(""+e)}catch(e){return"unserializable"}}}var be=n(7);function we(e){return(we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function De(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:[];if(null!==e){var r=[],i=[],o=ee(e,r,i,n,t);return{data:o,cleaned:r,unserializable:i}}return null}function ke(e){var t,n,r=(t=e,n=new Set,JSON.stringify(t,(function(e,t){if("object"===we(t)&&null!==t){if(n.has(t))return;n.add(t)}return"bigint"==typeof t?t.toString()+"n":t}))),i=void 0===r?"undefined":r,o=window.__REACT_DEVTOOLS_GLOBAL_HOOK__.clipboardCopyText;"function"==typeof o?o(i).catch((function(e){})):Object(be.copy)(i)}function Te(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=t[n],i=Array.isArray(e)?e.slice():De({},e);return n+1===t.length?Array.isArray(i)?i.splice(r,1):delete i[r]:i[r]=Te(e[r],t,n+1),i}function xe(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i=t[r],o=Array.isArray(e)?e.slice():De({},e);if(r+1===t.length){var u=n[r];o[u]=o[i],Array.isArray(o)?o.splice(i,1):delete o[i]}else o[i]=xe(e[i],t,n,r+1);return o}function Ae(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(r>=t.length)return n;var i=t[r],o=Array.isArray(e)?e.slice():De({},e);return o[i]=Ae(e[i],t,n,r+1),o}var Oe=n(8);function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ie(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw o}}}}function Le(e,t){if(e){if("string"==typeof e)return Be(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Be(e,t):void 0}}function Be(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var a=o(e);if(null!=a){var l,s=Fe(Y);try{for(s.s();!(l=s.n()).done;)if(l.value.test(a))return!0}catch(e){s.e(e)}finally{s.f()}}}if(null!=t&&K.size>0){var c,f=t.fileName,d=Fe(K);try{for(d.s();!(c=d.n()).done;)if(c.value.test(f))return!0}catch(e){d.e(e)}finally{d.f()}}return!1}function te(e){var t=e.type;switch(e.tag){case v:case S:return 1;case h:case C:return 5;case _:return 6;case b:return 11;case E:return 7;case w:case D:case y:return 9;case k:case x:return 8;case A:return 12;case O:return 13;default:switch(u(t)){case 60111:case"Symbol(react.concurrent_mode)":case"Symbol(react.async_mode)":return 9;case 60109:case"Symbol(react.provider)":return 2;case 60110:case"Symbol(react.context)":return 2;case 60108:case"Symbol(react.strict_mode)":return 9;case 60114:case"Symbol(react.profiler)":return 10;default:return 9}}}function ne(e){if(oe.has(e))return e;var t=e.alternate;return null!=t&&oe.has(t)?t:(oe.add(e),e)}null!=window.__REACT_DEVTOOLS_COMPONENT_FILTERS__?Z(window.__REACT_DEVTOOLS_COMPONENT_FILTERS__):Z([{type:1,value:7,isEnabled:!0}]);var re=new Map,ie=new Map,oe=new Set,ue=new Map,ae=new Map,le=-1;function se(e){if(!re.has(e)){var t=ce();re.set(e,t),ie.set(t,e)}return re.get(e)}function me(e){switch(te(e)){case 1:if(null!==dt){var t=se(ne(e)),n=ye(e);null!==n&&dt.set(t,n)}}}var ge={};function ye(e){switch(te(e)){case 1:var t=e.stateNode,n=ge,r=ge;return null!=t&&(t.constructor&&null!=t.constructor.contextType?r=t.context:(n=t.context)&&0===Object.keys(n).length&&(n=ge)),[n,r];default:return null}}function _e(e){switch(te(e)){case 1:if(null!==dt){var t=se(ne(e)),n=dt.has(t)?dt.get(t):null,r=ye(e);if(null==n||null==r)return null;var i=Re(n,2),o=i[0],u=i[1],a=Re(r,2),l=a[0],s=a[1];if(l!==ge)return we(o,l);if(s!==ge)return u!==s}}return null}function be(e,t){if(null==e||null==t)return!1;if(t.hasOwnProperty("baseState")&&t.hasOwnProperty("memoizedState")&&t.hasOwnProperty("next")&&t.hasOwnProperty("queue"))for(;null!==t;){if(t.memoizedState!==e.memoizedState)return!0;t=t.next,e=e.next}return!1}function we(e,t){if(null==e||null==t)return null;if(t.hasOwnProperty("baseState")&&t.hasOwnProperty("memoizedState")&&t.hasOwnProperty("next")&&t.hasOwnProperty("queue"))return null;var n,r=[],i=Fe(new Set([].concat(Me(Object.keys(e)),Me(Object.keys(t)))));try{for(i.s();!(n=i.n()).done;){var o=n.value;e[o]!==t[o]&&r.push(o)}}catch(e){i.e(e)}finally{i.f()}return r}function Ee(e,t){switch(t.tag){case v:case h:case m:case k:case x:return(Ue(t)&d)===d;default:return e.memoizedProps!==t.memoizedProps||e.memoizedState!==t.memoizedState||e.ref!==t.ref}}var De=[],Se=[],Pe=[],Ne=[],Le=new Map,Be=0,je=null;function ze(e){De.push(e)}function Ve(n){if(0!==De.length||0!==Se.length||0!==Pe.length||null!==je||vt){var r=Se.length+Pe.length+(null===je?0:1),i=new Array(3+Be+(r>0?2+r:0)+De.length),o=0;if(i[o++]=t,i[o++]=le,i[o++]=Be,Le.forEach((function(e,t){i[o++]=t.length;for(var n=fe(t),r=0;r0){i[o++]=2,i[o++]=r;for(var u=Se.length-1;u>=0;u--)i[o++]=Se[u];for(var a=0;a0?n.forEach((function(t){e.emit("operations",t)})):(null!==Dt&&(kt=!0),e.getFiberRoots(t).forEach((function(e){Ot(le=se(ne(e.current)),e.current),vt&&null!=e.memoizedInteractions&&(st={changeDescriptions:gt?new Map:null,durations:[],commitTime:We()-mt,interactions:Array.from(e.memoizedInteractions).map((function(e){return Ie(Ie({},e),{},{timestamp:e.timestamp-mt})})),maxActualDuration:0,priorityLevel:null}),$e(e.current,null,!1,!1),Ve(),le=-1})))},getBestMatchForTrackedPath:function(){if(null===Dt)return null;if(null===St)return null;for(var e=St;null!==e&&ee(e);)e=e.return;return null===e?null:{id:se(ne(e)),isFullMatch:Ct===Dt.length-1}},getDisplayNameForFiberID:function(e){var t=ie.get(e);return null!=t?o(t):null},getFiberIDForNative:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=n.findFiberByHostInstance(e);if(null!=r){if(t)for(;null!==r&&ee(r);)r=r.return;return se(ne(r))}return null},getInstanceAndStyle:function(e){var t=null,n=null,r=et(e);return null!==r&&(t=r.stateNode,null!==r.memoizedProps&&(n=r.memoizedProps.style)),{instance:t,style:n}},getOwnersList:function(e){var t=et(e);if(null==t)return null;var n=t._debugOwner,r=[{displayName:o(t)||"Anonymous",id:e,type:te(t)}];if(n)for(var i=n;null!==i;)r.unshift({displayName:o(i)||"Anonymous",id:se(ne(i)),type:te(i)}),i=i._debugOwner||null;return r},getPathForElement:function(e){var t=ie.get(e);if(null==t)return null;for(var n=[];null!==t;)n.push(It(t)),t=t.return;return n.reverse(),n},getProfilingData:function(){var e=[];if(null===yt)throw Error("getProfilingData() called before any profiling data was recorded");return yt.forEach((function(t,n){var r=[],i=[],o=new Map,u=new Map,a=null!==ft&&ft.get(n)||"Unknown";null!=pt&&pt.forEach((function(e,t){null!=ht&&ht.get(t)===n&&i.push([t,e])})),t.forEach((function(e,t){var n=e.changeDescriptions,i=e.durations,a=e.interactions,l=e.maxActualDuration,s=e.priorityLevel,c=e.commitTime,f=[];a.forEach((function(e){o.has(e.id)||o.set(e.id,e),f.push(e.id);var n=u.get(e.id);null!=n?n.push(t):u.set(e.id,[t])}));for(var d=[],p=[],h=0;h1?At.set(n,r-1):At.delete(n),xt.delete(e)}(le),Ge(r,!1))}else Ot(le,r),$e(r,null,!1,!1);if(vt&&o){var l=yt.get(le);null!=l?l.push(st):yt.set(le,[st])}Ve(),Q&&e.emit("traceUpdates",J),le=-1},handleCommitFiberUnmount:function(e){Ge(e,!1)},inspectElement:function(e,t){if(ot(e)){if(null!=t){ut(t);var n=null;return"hooks"===t[0]&&(n="hooks"),{id:e,type:"hydrated-path",path:t,value:Ce(de(nt,t),at(null,n),t)}}return{id:e,type:"no-change"}}if(rt=!1,null!==nt&&nt.id===e||(it={}),null===(nt=tt(e)))return{id:e,type:"not-found"};null!=t&&ut(t),function(e){var t=e.hooks,n=e.id,i=e.props,o=ie.get(n);if(null!=o){var u=o.elementType,a=o.stateNode,l=o.tag,s=o.type;switch(l){case v:case S:case C:r.$r=a;break;case h:r.$r={hooks:t,props:i,type:s};break;case _:r.$r={props:i,type:s.render};break;case k:case x:r.$r={props:i,type:null!=u&&null!=u.type?u.type:s};break;default:r.$r=null}}else console.warn('Could not find Fiber with id "'.concat(n,'"'))}(nt);var i=Ie({},nt);return i.context=Ce(i.context,at("context",null)),i.hooks=Ce(i.hooks,at("hooks","hooks")),i.props=Ce(i.props,at("props",null)),i.state=Ce(i.state,at("state",null)),{id:e,type:"full-data",value:i}},logElementToConsole:function(e){var t=ot(e)?nt:tt(e);if(null!==t){var n="function"==typeof console.groupCollapsed;n&&console.groupCollapsed("[Click to expand] %c<".concat(t.displayName||"Component"," />"),"color: var(--dom-tag-name-color); font-weight: normal;"),null!==t.props&&console.log("Props:",t.props),null!==t.state&&console.log("State:",t.state),null!==t.hooks&&console.log("Hooks:",t.hooks);var r=Je(e);null!==r&&console.log("Nodes:",r),null!==t.source&&console.log("Location:",t.source),(window.chrome||/firefox/i.test(navigator.userAgent))&&console.log("Right-click any value to save it as a global variable for further inspection."),n&&console.groupEnd()}else console.warn('Could not find Fiber with id "'.concat(e,'"'))},prepareViewAttributeSource:function(e,t){ot(e)&&(window.$attribute=de(nt,t))},prepareViewElementSource:function(e){var t=ie.get(e);if(null!=t){var n=t.elementType,i=t.tag,o=t.type;switch(i){case v:case S:case C:case h:r.$type=o;break;case _:r.$type=o.render;break;case k:case x:r.$type=null!=n&&null!=n.type?n.type:o;break;default:r.$type=null}}else console.warn('Could not find Fiber with id "'.concat(e,'"'))},overrideSuspense:function(e,t){if("function"!=typeof H||"function"!=typeof V)throw new Error("Expected overrideSuspense() to not get called for earlier React versions.");t?(wt.add(e),1===wt.size&&H(Et)):(wt.delete(e),0===wt.size&&H(bt));var n=ie.get(e);null!=n&&V(n)},overrideValueAtPath:function(e,t,n,r,i){var o=et(t);if(null!==o){var u=o.stateNode;switch(e){case"context":switch(r=r.slice(1),o.tag){case v:0===r.length?u.context=i:ve(u.context,r,i),u.forceUpdate()}break;case"hooks":"function"==typeof L&&L(o,n,r,i);break;case"props":switch(o.tag){case v:o.pendingProps=Ae(u.props,r,i),u.forceUpdate();break;default:"function"==typeof U&&U(o,r,i)}break;case"state":switch(o.tag){case v:ve(u.state,r,i),u.forceUpdate()}}}},renamePath:function(e,t,n,r,i){var o=et(t);if(null!==o){var u=o.stateNode;switch(e){case"context":switch(r=r.slice(1),i=i.slice(1),o.tag){case v:0===r.length||he(u.context,r,i),u.forceUpdate()}break;case"hooks":"function"==typeof j&&j(o,n,r,i);break;case"props":null===u?"function"==typeof W&&W(o,r,i):(o.pendingProps=xe(u.props,r,i),u.forceUpdate());break;case"state":he(u.state,r,i),u.forceUpdate()}}},renderer:n,setTraceUpdatesEnabled:function(e){Q=e},setTrackedPath:Tt,startProfiling:_t,stopProfiling:function(){vt=!1,gt=!1},storeAsGlobal:function(e,t,n){if(ot(e)){var r=de(nt,t),i="$reactTemp".concat(n);window[i]=r,console.log(i),console.log(r)}},updateComponentFilters:function(n){if(vt)throw Error("Cannot modify filter preferences while profiling");e.getFiberRoots(t).forEach((function(e){le=se(ne(e.current)),Ye(e.current),Ge(e.current,!1),le=-1})),Z(n),At.clear(),e.getFiberRoots(t).forEach((function(e){Ot(le=se(ne(e.current)),e.current),$e(e.current,null,!1,!1),Ve(),le=-1}))}}}function qe(e){return(qe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Ge(e,t,n){if(void 0===ze)try{throw Error()}catch(e){var r=e.stack.trim().match(/\n( *(at )?)/);ze=r&&r[1]||""}return"\n"+ze+e}var $e=!1;function Ye(e,t,n){if(!e||$e)return"";var r,i=Error.prepareStackTrace;Error.prepareStackTrace=void 0,$e=!0;var o=n.current;n.current=null;try{if(t){var u=function(){throw Error()};if(Object.defineProperty(u.prototype,"props",{set:function(){throw Error()}}),"object"===("undefined"==typeof Reflect?"undefined":qe(Reflect))&&Reflect.construct){try{Reflect.construct(u,[])}catch(e){r=e}Reflect.construct(e,[],u)}else{try{u.call()}catch(e){r=e}e.call(u.prototype)}}else{try{throw Error()}catch(e){r=e}e()}}catch(e){if(e&&r&&"string"==typeof e.stack){for(var a=e.stack.split("\n"),l=r.stack.split("\n"),s=a.length-1,c=l.length-1;s>=1&&c>=0&&a[s]!==l[c];)c--;for(;s>=1&&c>=0;s--,c--)if(a[s]!==l[c]){if(1!==s||1!==c)do{if(s--,--c<0||a[s]!==l[c])return"\n"+a[s].replace(" at new "," at ")}while(s>=1&&c>=0);break}}}finally{$e=!1,Error.prepareStackTrace=i,n.current=o}var f=e?e.displayName||e.name:"";return f?Ge(f):""}function Ke(e,t,n,r){return Ye(e,!1,r)}function Xe(e,t,n){var r=e.HostComponent,i=e.LazyComponent,o=e.SuspenseComponent,u=e.SuspenseListComponent,a=e.FunctionComponent,l=e.IndeterminateComponent,s=e.SimpleMemoComponent,c=e.ForwardRef,f=e.Block,d=e.ClassComponent;switch(t.tag){case r:return Ge(t.type);case i:return Ge("Lazy");case o:return Ge("Suspense");case u:return Ge("SuspenseList");case a:case l:case s:return Ke(t.type,0,0,n);case c:return Ke(t.type.render,0,0,n);case f:return Ke(t.type._render,0,0,n);case d:return function(e,t,n,r){return Ye(e,!0,r)}(t.type,0,0,n);default:return""}}function Qe(e,t,n){try{var r="",i=t;do{r+=Xe(e,i,n),i=i.return}while(i);return r}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}function Je(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Ze(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ze(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw o}}}}function Ze(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0?r[r.length-1]:null,u=null!==o&&(tt.test(o)||nt.test(o));if(!u){var a,l=Je(rt.values());try{for(l.s();!(a=l.n()).done;){var s=a.value,c=s.currentDispatcherRef,f=s.getCurrentFiber,d=s.workTagMap,p=f();if(null!=p){var h=Qe(d,p,c);""!==h&&r.push(h);break}}}catch(e){l.e(e)}finally{l.f()}}}catch(e){}t.apply(void 0,r)};n.__REACT_DEVTOOLS_ORIGINAL_METHOD__=t,it[e]=n}catch(e){}}))}}function ft(e){return(ft="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function dt(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:d,n=void 0,r=[],i=void 0,o=!1,u=function(e,n){return t(e,r[n])},a=function(){for(var t=arguments.length,a=Array(t),l=0;le.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?t-1:0),r=1;r0?"development":"production";var t=Function.prototype.toString;if(e.Mount&&e.Mount._renderNewRootComponent){var n=t.call(e.Mount._renderNewRootComponent);return 0!==n.indexOf("function")?"production":-1!==n.indexOf("storedMeasure")?"development":-1!==n.indexOf("should be a pure function")?-1!==n.indexOf("NODE_ENV")||-1!==n.indexOf("development")||-1!==n.indexOf("true")?"development":-1!==n.indexOf("nextElement")||-1!==n.indexOf("nextComponent")?"unminified":"development":-1!==n.indexOf("nextElement")||-1!==n.indexOf("nextComponent")?"unminified":"outdated"}}catch(e){}return"production"}(r);try{var l=!1!==window.__REACT_DEVTOOLS_APPEND_COMPONENT_STACK__,s=!0===window.__REACT_DEVTOOLS_BREAK_ON_CONSOLE_ERRORS__;(l||s)&&(lt(r),ct({appendComponentStack:l,breakOnConsoleErrors:s}))}catch(e){}var c=e.__REACT_DEVTOOLS_ATTACH__;if("function"==typeof c){var f=c(a,i,r,e);a.rendererInterfaces.set(i,f)}return a.emit("renderer",{id:i,renderer:r,reactBuildType:o}),i},on:function(e,t){o[e]||(o[e]=[]),o[e].push(t)},off:function(e,t){if(o[e]){var n=o[e].indexOf(t);-1!==n&&o[e].splice(n,1),o[e].length||delete o[e]}},sub:function(e,t){return a.on(e,t),function(){return a.off(e,t)}},supportsFiber:!0,checkDCE:function(e){try{Function.prototype.toString.call(e).indexOf("^_^")>-1&&(n=!0,setTimeout((function(){throw new Error("React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build")})))}catch(e){}},onCommitFiberUnmount:function(e,t){var n=i.get(e);null!=n&&n.handleCommitFiberUnmount(t)},onCommitFiberRoot:function(e,t,n){var r=a.getFiberRoots(e),o=t.current,u=r.has(t),l=null==o.memoizedState||null==o.memoizedState.element;u||l?u&&l&&r.delete(t):r.add(t);var s=i.get(e);null!=s&&s.handleCommitFiberRoot(t,n)}};Object.defineProperty(e,"__REACT_DEVTOOLS_GLOBAL_HOOK__",{configurable:!1,enumerable:!1,get:function(){return a}})}(window);var $t=window.__REACT_DEVTOOLS_GLOBAL_HOOK__,Yt=[{type:1,value:7,isEnabled:!0}];function Kt(e){if(null!=$t){var t=e||{},n=t.host,r=void 0===n?"localhost":n,i=t.nativeStyleEditorValidAttributes,o=t.useHttps,u=void 0!==o&&o,a=t.port,l=void 0===a?8097:a,s=t.websocket,c=t.resolveRNStyle,f=void 0===c?null:c,d=t.isAppActive,p=u?"wss":"ws",h=null;if((void 0===d?function(){return!0}:d)()){var v=null,m=[],g=p+"://"+r+":"+l,y=s||new window.WebSocket(g);y.onclose=function(){null!==v&&v.emit("shutdown"),_()},y.onerror=function(){_()},y.onmessage=function(e){var t;try{if("string"!=typeof e.data)throw Error();t=JSON.parse(e.data)}catch(t){return void console.error("[React DevTools] Failed to parse JSON: "+e.data)}m.forEach((function(e){try{e(t)}catch(e){throw console.log("[React DevTools] Error calling listener",t),console.log("error:",e),e}}))},y.onopen=function(){(v=new xt({listen:function(e){return m.push(e),function(){var t=m.indexOf(e);t>=0&&m.splice(t,1)}},send:function(e,t,n){y.readyState===y.OPEN?y.send(JSON.stringify({event:e,payload:t})):(null!==v&&v.shutdown(),_())}})).addListener("inspectElement",(function(t){var n=t.id,r=t.rendererID,i=e.rendererInterfaces[r];if(null!=i){var o=i.findNativeNodesForFiberID(n);null!=o&&null!=o[0]&&e.emit("showNativeHighlight",o[0])}})),v.addListener("updateComponentFilters",(function(e){Yt=e})),null==window.__REACT_DEVTOOLS_COMPONENT_FILTERS__&&v.send("overrideComponentFilters",Yt);var e=new yt(v);if(e.addListener("shutdown",(function(){$t.emit("shutdown")})),function(e,t,n){if(null==e)return function(){};var r=[e.sub("renderer-attached",(function(e){var n=e.id,r=(e.renderer,e.rendererInterface);t.setRendererInterface(n,r),r.flushInitialOperations()})),e.sub("unsupported-renderer-version",(function(e){t.onUnsupportedRenderer(e)})),e.sub("operations",t.onHookOperations),e.sub("traceUpdates",t.onTraceUpdates)],i=function(t,r){var i=e.rendererInterfaces.get(t);null==i&&("function"==typeof r.findFiberByHostInstance?i=Ve(e,t,r,n):r.ComponentTree&&(i=function(e,t,n,r){var i,o=new Map,u=new WeakMap,a=new WeakMap,l=null;function s(e){if("object"!==Rt(e)||null===e)throw new Error("Invalid internal instance: "+e);if(!u.has(e)){var t=ce();u.set(e,t),o.set(t,e)}return u.get(e)}function c(e,t){if(e.length!==t.length)return!1;for(var n=0;n0?f[f.length-1]:0),f.push(i),a.set(n,s(r._topLevelWrapper));try{var o=e.apply(this,t);return f.pop(),o}catch(e){throw f=[],e}finally{if(0===f.length){var u=a.get(n);if(void 0===u)throw new Error("Expected to find root ID.");w(u)}}},performUpdateIfNecessary:function(e,t){var n=t[0];if(9===Lt(n))return e.apply(this,t);var r=s(n);f.push(r);var i=Bt(n);try{var o=e.apply(this,t),u=Bt(n);return c(i,u)||h(0,r,u),f.pop(),o}catch(e){throw f=[],e}finally{if(0===f.length){var l=a.get(n);if(void 0===l)throw new Error("Expected to find root ID.");w(l)}}},receiveComponent:function(e,t){var n=t[0];if(9===Lt(n))return e.apply(this,t);var r=s(n);f.push(r);var i=Bt(n);try{var o=e.apply(this,t),u=Bt(n);return c(i,u)||h(0,r,u),f.pop(),o}catch(e){throw f=[],e}finally{if(0===f.length){var l=a.get(n);if(void 0===l)throw new Error("Expected to find root ID.");w(l)}}},unmountComponent:function(e,t){var n=t[0];if(9===Lt(n))return e.apply(this,t);var r=s(n);f.push(r);try{var i=e.apply(this,t);return f.pop(),function(e,t){y.push(t),o.delete(t)}(0,r),i}catch(e){throw f=[],e}finally{if(0===f.length){var u=a.get(n);if(void 0===u)throw new Error("Expected to find root ID.");w(u)}}}}));var m=[],g=new Map,y=[],_=0,b=null;function w(n){if(0!==m.length||0!==y.length||null!==b){var r=y.length+(null===b?0:1),i=new Array(3+_+(r>0?2+r:0)+m.length),o=0;if(i[o++]=t,i[o++]=n,i[o++]=_,g.forEach((function(e,t){i[o++]=t.length;for(var n=fe(t),r=0;r0){i[o++]=2,i[o++]=r;for(var u=0;u"),"color: var(--dom-tag-name-color); font-weight: normal;"),null!==t.props&&console.log("Props:",t.props),null!==t.state&&console.log("State:",t.state),null!==t.context&&console.log("Context:",t.context);var r=i(e);null!==r&&console.log("Node:",r),(window.chrome||/firefox/i.test(navigator.userAgent))&&console.log("Right-click any value to save it as a global variable for further inspection."),n&&console.groupEnd()}else console.warn('Could not find element with id "'.concat(e,'"'))},overrideSuspense:function(){throw new Error("overrideSuspense not supported by this renderer")},overrideValueAtPath:function(e,t,n,r,i){var u=o.get(t);if(null!=u){var a=u._instance;if(null!=a)switch(e){case"context":ve(a.context,r,i),Pt(a);break;case"hooks":throw new Error("Hooks not supported by this renderer");case"props":var l=u._currentElement;u._currentElement=Nt(Nt({},l),{},{props:Ae(l.props,r,i)}),Pt(a);break;case"state":ve(a.state,r,i),Pt(a)}}},renamePath:function(e,t,n,r,i){var u=o.get(t);if(null!=u){var a=u._instance;if(null!=a)switch(e){case"context":he(a.context,r,i),Pt(a);break;case"hooks":throw new Error("Hooks not supported by this renderer");case"props":var l=u._currentElement;u._currentElement=Nt(Nt({},l),{},{props:xe(l.props,r,i)}),Pt(a);break;case"state":he(a.state,r,i),Pt(a)}}},prepareViewAttributeSource:function(e,t){var n=T(e);null!==n&&(window.$attribute=de(n,t))},prepareViewElementSource:function(e){var t=o.get(e);if(null!=t){var n=t._currentElement;null!=n?r.$type=n.type:console.warn('Could not find element with id "'.concat(e,'"'))}else console.warn('Could not find instance with id "'.concat(e,'"'))},renderer:n,setTraceUpdatesEnabled:function(e){},setTrackedPath:function(e){},startProfiling:function(){},stopProfiling:function(){},storeAsGlobal:function(e,t,n){var r=T(e);if(null!==r){var i=de(r,t),o="$reactTemp".concat(n);window[o]=i,console.log(o),console.log(i)}},updateComponentFilters:function(e){}}}(e,t,r,n)),null!=i&&e.rendererInterfaces.set(t,i)),null!=i?e.emit("renderer-attached",{id:t,renderer:r,rendererInterface:i}):e.emit("unsupported-renderer-version",t)};e.renderers.forEach((function(e,t){i(t,e)})),r.push(e.sub("renderer",(function(e){var t=e.id,n=e.renderer;i(t,n)}))),e.emit("react-devtools",t),e.reactDevtoolsAgent=t;var o=function(){r.forEach((function(e){return e()})),e.rendererInterfaces.forEach((function(e){e.cleanup()})),e.reactDevtoolsAgent=null};t.addListener("shutdown",o),r.push((function(){t.removeListener("shutdown",o)}))}($t,e,window),null!=f||null!=$t.resolveRNStyle)Wt(v,e,f||$t.resolveRNStyle,i||$t.nativeStyleEditorValidAttributes||null);else{var t,n,r=function(){null!==v&&Wt(v,e,t,n)};$t.hasOwnProperty("resolveRNStyle")||Object.defineProperty($t,"resolveRNStyle",{enumerable:!1,get:function(){return t},set:function(e){t=e,r()}}),$t.hasOwnProperty("nativeStyleEditorValidAttributes")||Object.defineProperty($t,"nativeStyleEditorValidAttributes",{enumerable:!1,get:function(){return n},set:function(e){n=e,r()}})}}}else _()}function _(){null===h&&(h=setTimeout((function(){return Kt(e)}),2e3))}}}])},6099:(e,t,n)=>{"use strict"; -/** @license React v16.13.1 - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var r=n(9381),i="function"==typeof Symbol&&Symbol.for,o=i?Symbol.for("react.element"):60103,u=i?Symbol.for("react.portal"):60106,a=i?Symbol.for("react.fragment"):60107,l=i?Symbol.for("react.strict_mode"):60108,s=i?Symbol.for("react.profiler"):60114,c=i?Symbol.for("react.provider"):60109,f=i?Symbol.for("react.context"):60110,d=i?Symbol.for("react.forward_ref"):60112,p=i?Symbol.for("react.suspense"):60113,h=i?Symbol.for("react.memo"):60115,v=i?Symbol.for("react.lazy"):60116,m="function"==typeof Symbol&&Symbol.iterator;function g(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nO.length&&O.push(e)}function N(e,t,n){return null==e?0:function e(t,n,r,i){var a=typeof t;"undefined"!==a&&"boolean"!==a||(t=null);var l=!1;if(null===t)l=!0;else switch(a){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case o:case u:l=!0}}if(l)return r(i,t,""===n?"."+M(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;s{"use strict";e.exports=n(6099)},3390:(e,t,n)=>{"use strict";const r=n(834),i=n(6458);e.exports=r(()=>{i(()=>{process.stderr.write("[?25h")},{alwaysLast:!0})})},706:(e,t)=>{"use strict"; -/** @license React v0.18.0 - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var n,r,i,o,u;if(Object.defineProperty(t,"__esModule",{value:!0}),"undefined"==typeof window||"function"!=typeof MessageChannel){var a=null,l=null,s=function(){if(null!==a)try{var e=t.unstable_now();a(!0,e),a=null}catch(e){throw setTimeout(s,0),e}},c=Date.now();t.unstable_now=function(){return Date.now()-c},n=function(e){null!==a?setTimeout(n,0,e):(a=e,setTimeout(s,0))},r=function(e,t){l=setTimeout(e,t)},i=function(){clearTimeout(l)},o=function(){return!1},u=t.unstable_forceFrameRate=function(){}}else{var f=window.performance,d=window.Date,p=window.setTimeout,h=window.clearTimeout;if("undefined"!=typeof console){var v=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof v&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof f&&"function"==typeof f.now)t.unstable_now=function(){return f.now()};else{var m=d.now();t.unstable_now=function(){return d.now()-m}}var g=!1,y=null,_=-1,b=5,w=0;o=function(){return t.unstable_now()>=w},u=function(){},t.unstable_forceFrameRate=function(e){0>e||125T(u,n))void 0!==l&&0>T(l,u)?(e[r]=l,e[a]=n,r=a):(e[r]=u,e[o]=n,r=o);else{if(!(void 0!==l&&0>T(l,n)))break e;e[r]=l,e[a]=n,r=a}}}return t}return null}function T(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var x=[],A=[],O=1,P=null,I=3,N=!1,M=!1,R=!1;function F(e){for(var t=C(A);null!==t;){if(null===t.callback)k(A);else{if(!(t.startTime<=e))break;k(A),t.sortIndex=t.expirationTime,S(x,t)}t=C(A)}}function L(e){if(R=!1,F(e),!M)if(null!==C(x))M=!0,n(B);else{var t=C(A);null!==t&&r(L,t.startTime-e)}}function B(e,n){M=!1,R&&(R=!1,i()),N=!0;var u=I;try{for(F(n),P=C(x);null!==P&&(!(P.expirationTime>n)||e&&!o());){var a=P.callback;if(null!==a){P.callback=null,I=P.priorityLevel;var l=a(P.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?P.callback=l:P===C(x)&&k(x),F(n)}else k(x);P=C(x)}if(null!==P)var s=!0;else{var c=C(A);null!==c&&r(L,c.startTime-n),s=!1}return s}finally{P=null,I=u,N=!1}}function j(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var U=u;t.unstable_ImmediatePriority=1,t.unstable_UserBlockingPriority=2,t.unstable_NormalPriority=3,t.unstable_IdlePriority=5,t.unstable_LowPriority=4,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=I;I=e;try{return t()}finally{I=n}},t.unstable_next=function(e){switch(I){case 1:case 2:case 3:var t=3;break;default:t=I}var n=I;I=t;try{return e()}finally{I=n}},t.unstable_scheduleCallback=function(e,o,u){var a=t.unstable_now();if("object"==typeof u&&null!==u){var l=u.delay;l="number"==typeof l&&0a?(e.sortIndex=l,S(A,e),null===C(x)&&e===C(A)&&(R?i():R=!0,r(L,l-a))):(e.sortIndex=u,S(x,e),M||N||(M=!0,n(B))),e},t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_wrapCallback=function(e){var t=I;return function(){var n=I;I=t;try{return e.apply(this,arguments)}finally{I=n}}},t.unstable_getCurrentPriorityLevel=function(){return I},t.unstable_shouldYield=function(){var e=t.unstable_now();F(e);var n=C(x);return n!==P&&null!==P&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime{"use strict";e.exports=n(706)},6458:(e,t,n)=>{var r,i=n(2357),o=n(8082),u=n(8614);function a(){c&&(c=!1,o.forEach((function(e){try{process.removeListener(e,s[e])}catch(e){}})),process.emit=h,process.reallyExit=d,r.count-=1)}function l(e,t,n){r.emitted[e]||(r.emitted[e]=!0,r.emit(e,t,n))}"function"!=typeof u&&(u=u.EventEmitter),process.__signal_exit_emitter__?r=process.__signal_exit_emitter__:((r=process.__signal_exit_emitter__=new u).count=0,r.emitted={}),r.infinite||(r.setMaxListeners(1/0),r.infinite=!0),e.exports=function(e,t){i.equal(typeof e,"function","a callback must be provided for exit handler"),!1===c&&f();var n="exit";t&&t.alwaysLast&&(n="afterexit");return r.on(n,e),function(){r.removeListener(n,e),0===r.listeners("exit").length&&0===r.listeners("afterexit").length&&a()}},e.exports.unload=a;var s={};o.forEach((function(e){s[e]=function(){process.listeners(e).length===r.count&&(a(),l("exit",null,e),l("afterexit",null,e),process.kill(process.pid,e))}})),e.exports.signals=function(){return o},e.exports.load=f;var c=!1;function f(){c||(c=!0,r.count+=1,o=o.filter((function(e){try{return process.on(e,s[e]),!0}catch(e){return!1}})),process.emit=v,process.reallyExit=p)}var d=process.reallyExit;function p(e){process.exitCode=e||0,l("exit",process.exitCode,null),l("afterexit",process.exitCode,null),d.call(process,process.exitCode)}var h=process.emit;function v(e,t){if("exit"===e){void 0!==t&&(process.exitCode=t);var n=h.apply(this,arguments);return l("exit",process.exitCode,null),l("afterexit",process.exitCode,null),n}return h.apply(this,arguments)}},8082:e=>{e.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"],"win32"!==process.platform&&e.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT"),"linux"===process.platform&&e.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")},1566:(e,t,n)=>{"use strict";const r=n(7347),i=n(409),o=n(8483),u=["","›"],a=e=>`${u[0]}[${e}m`,l=(e,t,n)=>{let r=[];e=[...e];for(let n of e){const i=n;n.match(";")&&(n=n.split(";")[0][0]+"0");const u=o.codes.get(parseInt(n,10));if(u){const n=e.indexOf(u.toString());n>=0?e.splice(n,1):r.push(a(t?u:i))}else{if(t){r.push(a(0));break}r.push(a(i))}}if(t&&(r=r.filter((e,t)=>r.indexOf(e)===t),void 0!==n)){const e=a(o.codes.get(parseInt(n,10)));r=r.reduce((t,n)=>n===e?[n,...t]:[...t,n],[])}return r.join("")};e.exports=(e,t,n)=>{const o=[...e.normalize()],a=[];n="number"==typeof n?n:o.length;let s,c=!1,f=0,d="";for(const[p,h]of o.entries()){let o=!1;if(u.includes(h)){const t=/\d[^m]*/.exec(e.slice(p,p+18));s=t&&t.length>0?t[0]:void 0,ft&&f<=n)d+=h;else if(f!==t||c||void 0===s){if(f>=n){d+=l(a,!0,s);break}}else d=l(a)}return d}},9796:(e,t,n)=>{"use strict";const r=n(8759),i=[].concat(n(2282).builtinModules,"bootstrap_node","node").map(e=>new RegExp(`(?:\\(${e}\\.js:\\d+:\\d+\\)$|^\\s*at ${e}\\.js:\\d+:\\d+$)`));i.push(/\(internal\/[^:]+:\d+:\d+\)$/,/\s*at internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);class o{constructor(e){"internals"in(e={ignoredPackages:[],...e})==!1&&(e.internals=o.nodeInternals()),"cwd"in e==!1&&(e.cwd=process.cwd()),this._cwd=e.cwd.replace(/\\/g,"/"),this._internals=[].concat(e.internals,function(e){if(0===e.length)return[];const t=e.map(e=>r(e));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${t.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...i]}clean(e,t=0){t=" ".repeat(t),Array.isArray(e)||(e=e.split("\n")),!/^\s*at /.test(e[0])&&/^\s*at /.test(e[1])&&(e=e.slice(1));let n=!1,r=null;const i=[];return e.forEach(e=>{if(e=e.replace(/\\/g,"/"),this._internals.some(t=>t.test(e)))return;const t=/^\s*at /.test(e);n?e=e.trimEnd().replace(/^(\s+)at /,"$1"):(e=e.trim(),t&&(e=e.slice(3))),(e=e.replace(this._cwd+"/",""))&&(t?(r&&(i.push(r),r=null),i.push(e)):(n=!0,r=e))}),i.map(e=>`${t}${e}\n`).join("")}captureString(e,t=this.captureString){"function"==typeof e&&(t=e,e=1/0);const{stackTraceLimit:n}=Error;e&&(Error.stackTraceLimit=e);const r={};Error.captureStackTrace(r,t);const{stack:i}=r;return Error.stackTraceLimit=n,this.clean(i)}capture(e,t=this.capture){"function"==typeof e&&(t=e,e=1/0);const{prepareStackTrace:n,stackTraceLimit:r}=Error;Error.prepareStackTrace=(e,t)=>this._wrapCallSite?t.map(this._wrapCallSite):t,e&&(Error.stackTraceLimit=e);const i={};Error.captureStackTrace(i,t);const{stack:o}=i;return Object.assign(Error,{prepareStackTrace:n,stackTraceLimit:r}),o}at(e=this.at){const[t]=this.capture(1,e);if(!t)return{};const n={line:t.getLineNumber(),column:t.getColumnNumber()};let r;u(n,t.getFileName(),this._cwd),t.isConstructor()&&(n.constructor=!0),t.isEval()&&(n.evalOrigin=t.getEvalOrigin()),t.isNative()&&(n.native=!0);try{r=t.getTypeName()}catch(e){}r&&"Object"!==r&&"[object Object]"!==r&&(n.type=r);const i=t.getFunctionName();i&&(n.function=i);const o=t.getMethodName();return o&&i!==o&&(n.method=o),n}parseLine(e){const t=e&&e.match(a);if(!t)return null;const n="new"===t[1];let r=t[2];const i=t[3],o=t[4],s=Number(t[5]),c=Number(t[6]);let f=t[7];const d=t[8],p=t[9],h="native"===t[10],v=")"===t[11];let m;const g={};if(d&&(g.line=Number(d)),p&&(g.column=Number(p)),v&&f){let e=0;for(let t=f.length-1;t>0;t--)if(")"===f.charAt(t))e++;else if("("===f.charAt(t)&&" "===f.charAt(t-1)&&(e--,-1===e&&" "===f.charAt(t-1))){const e=f.slice(0,t-1),n=f.slice(t+1);f=n,r+=" ("+e;break}}if(r){const e=r.match(l);e&&(r=e[1],m=e[2])}return u(g,f,this._cwd),n&&(g.constructor=!0),i&&(g.evalOrigin=i,g.evalLine=s,g.evalColumn=c,g.evalFile=o&&o.replace(/\\/g,"/")),h&&(g.native=!0),r&&(g.function=r),m&&r!==m&&(g.method=m),g}}function u(e,t,n){t&&((t=t.replace(/\\/g,"/")).startsWith(n+"/")&&(t=t.slice(n.length+1)),e.file=t)}const a=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),l=/^(.*?) \[as (.*?)\]$/;e.exports=o},3262:(e,t,n)=>{"use strict";const r=n(7402),i=n(5640),o=e=>r(e).replace(i()," ").length;e.exports=o,e.exports.default=o},5043:(e,t,n)=>{"use strict";const r=n(7915),i=n(7347),o=n(1013),u=e=>{if("string"!=typeof(e=e.replace(o()," "))||0===e.length)return 0;e=r(e);let t=0;for(let n=0;n=127&&r<=159||(r>=768&&r<=879||(r>65535&&n++,t+=i(r)?2:1))}return t};e.exports=u,e.exports.default=u},7402:(e,t,n)=>{"use strict";const r=n(5378),i=e=>"string"==typeof e?e.replace(r(),""):e;e.exports=i,e.exports.default=i},7915:(e,t,n)=>{"use strict";const r=n(1337);e.exports=e=>"string"==typeof e?e.replace(r(),""):e},9428:(e,t,n)=>{"use strict";const r=n(2087),i=n(3867),o=n(2918),{env:u}=process;let a;function l(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function s(e,t){if(0===a)return 0;if(o("color=16m")||o("color=full")||o("color=truecolor"))return 3;if(o("color=256"))return 2;if(e&&!t&&void 0===a)return 0;const n=a||0;if("dumb"===u.TERM)return n;if("win32"===process.platform){const e=r.release().split(".");return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in u)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(e=>e in u)||"codeship"===u.CI_NAME?1:n;if("TEAMCITY_VERSION"in u)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(u.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in u)return 1;if("truecolor"===u.COLORTERM)return 3;if("TERM_PROGRAM"in u){const e=parseInt((u.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(u.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(u.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(u.TERM)||"COLORTERM"in u?1:n}o("no-color")||o("no-colors")||o("color=false")||o("color=never")?a=0:(o("color")||o("colors")||o("color=true")||o("color=always"))&&(a=1),"FORCE_COLOR"in u&&(a="true"===u.FORCE_COLOR?1:"false"===u.FORCE_COLOR?0:0===u.FORCE_COLOR.length?1:Math.min(parseInt(u.FORCE_COLOR,10),3)),e.exports={supportsColor:function(e){return l(s(e,e&&e.isTTY))},stdout:l(s(!0,i.isatty(1))),stderr:l(s(!0,i.isatty(2)))}},8949:(e,t,n)=>{"use strict";const r=n(5043),i=e=>{let t=0;for(const n of e.split("\n"))t=Math.max(t,r(n));return t};e.exports=i,e.exports.default=i},4332:(e,t,n)=>{"use strict";const r=n(5043),i=n(7915),o=n(8483),u=new Set(["","›"]),a=e=>`${u.values().next().value}[${e}m`,l=(e,t,n)=>{const o=[...t];let a=!1,l=r(i(e[e.length-1]));for(const[t,i]of o.entries()){const s=r(i);if(l+s<=n?e[e.length-1]+=i:(e.push(i),l=0),u.has(i))a=!0;else if(a&&"m"===i){a=!1;continue}a||(l+=s,l===n&&t0&&e.length>1&&(e[e.length-2]+=e.pop())},s=e=>{const t=e.split(" ");let n=t.length;for(;n>0&&!(r(t[n-1])>0);)n--;return n===t.length?e:t.slice(0,n).join(" ")+t.slice(n).join("")},c=(e,t,n={})=>{if(!1!==n.trim&&""===e.trim())return"";let i,c="",f="";const d=(e=>e.split(" ").map(e=>r(e)))(e);let p=[""];for(const[i,o]of e.split(" ").entries()){!1!==n.trim&&(p[p.length-1]=p[p.length-1].trimLeft());let e=r(p[p.length-1]);if(0!==i&&(e>=t&&(!1===n.wordWrap||!1===n.trim)&&(p.push(""),e=0),(e>0||!1===n.trim)&&(p[p.length-1]+=" ",e++)),n.hard&&d[i]>t){const n=t-e,r=1+Math.floor((d[i]-n-1)/t);Math.floor((d[i]-1)/t)t&&e>0&&d[i]>0){if(!1===n.wordWrap&&et&&!1===n.wordWrap?l(p,o,t):p[p.length-1]+=o}}!1!==n.trim&&(p=p.map(s)),c=p.join("\n");for(const[e,t]of[...c].entries()){if(f+=t,u.has(t)){const t=parseFloat(/\d[^m]*/.exec(c.slice(e,e+4)));i=39===t?null:t}const n=o.codes.get(Number(i));i&&n&&("\n"===c[e+1]?f+=a(n):"\n"===t&&(f+=a(i)))}return f};e.exports=(e,t,n)=>String(e).normalize().replace(/\r\n/g,"\n").split("\n").map(e=>c(e,t,n)).join("\n")},3354:function(module,exports){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__,wrapper;wrapper=function(Module,cb){var Module;"function"==typeof Module&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(e,t){return function(){e&&e.apply(this,arguments);try{Module.ccall("nbind_init")}catch(e){return void t(e)}t(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb),Module||(Module=(void 0!==Module?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1,nodeFS,nodePath;if(Module.ENVIRONMENT)if("WEB"===Module.ENVIRONMENT)ENVIRONMENT_IS_WEB=!0;else if("WORKER"===Module.ENVIRONMENT)ENVIRONMENT_IS_WORKER=!0;else if("NODE"===Module.ENVIRONMENT)ENVIRONMENT_IS_NODE=!0;else{if("SHELL"!==Module.ENVIRONMENT)throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");ENVIRONMENT_IS_SHELL=!0}else ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_IS_NODE="object"==typeof process&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE)Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn),Module.read=function(e,t){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),e=nodePath.normalize(e);var n=nodeFS.readFileSync(e);return t?n:n.toString()},Module.readBinary=function(e){var t=Module.read(e,!0);return t.buffer||(t=new Uint8Array(t)),assert(t.buffer),t},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),module.exports=Module,Module.inspect=function(){return"[Emscripten Module object]"};else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),"undefined"!=typeof printErr&&(Module.printErr=printErr),"undefined"!=typeof read?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(e){if("function"==typeof readbuffer)return new Uint8Array(readbuffer(e));var t=read(e,"binary");return assert("object"==typeof t),t},"undefined"!=typeof scriptArgs?Module.arguments=scriptArgs:void 0!==arguments&&(Module.arguments=arguments),"function"==typeof quit&&(Module.quit=function(e,t){quit(e)});else{if(!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER)throw"Unknown runtime environment. Where are we?";if(Module.read=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),Module.readAsync=function(e,t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?t(r.response):n()},r.onerror=n,r.send(null)},void 0!==arguments&&(Module.arguments=arguments),"undefined"!=typeof console)Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&"undefined"!=typeof dump?function(e){dump(e)}:function(e){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),void 0===Module.setWindowTitle&&(Module.setWindowTitle=function(e){document.title=e})}function globalEval(e){eval.call(null,e)}for(var key in!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(e,t){throw t}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[],moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(e){return tempRet0=e,e},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(e){STACKTOP=e},getNativeTypeSize:function(e){switch(e){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:if("*"===e[e.length-1])return Runtime.QUANTUM_SIZE;if("i"===e[0]){var t=parseInt(e.substr(1));return assert(t%8==0),t/8}return 0}},getNativeFieldSize:function(e){return Math.max(Runtime.getNativeTypeSize(e),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(e,t){return"double"===t||"i64"===t?7&e&&(assert(4==(7&e)),e+=4):assert(0==(3&e)),e},getAlignSize:function(e,t,n){return n||"i64"!=e&&"double"!=e?e?Math.min(t||(e?Runtime.getNativeFieldSize(e):0),Runtime.QUANTUM_SIZE):Math.min(t,8):8},dynCall:function(e,t,n){return n&&n.length?Module["dynCall_"+e].apply(null,[t].concat(n)):Module["dynCall_"+e].call(null,t)},functionPointers:[],addFunction:function(e){for(var t=0;t>2],n=-16&(t+e+15|0);return HEAP32[DYNAMICTOP_PTR>>2]=n,n>=TOTAL_MEMORY&&!enlargeMemory()?(HEAP32[DYNAMICTOP_PTR>>2]=t,0):t},alignMemory:function(e,t){return e=Math.ceil(e/(t||16))*(t||16)},makeBigInt:function(e,t,n){return n?+(e>>>0)+4294967296*+(t>>>0):+(e>>>0)+4294967296*+(0|t)},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0,cwrap,ccall;function assert(e,t){e||abort("Assertion failed: "+t)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(e){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}function setValue(e,t,n,r){switch("*"===(n=n||"i8").charAt(n.length-1)&&(n="i32"),n){case"i1":case"i8":HEAP8[e>>0]=t;break;case"i16":HEAP16[e>>1]=t;break;case"i32":HEAP32[e>>2]=t;break;case"i64":tempI64=[t>>>0,(tempDouble=t,+Math_abs(tempDouble)>=1?tempDouble>0?(0|Math_min(+Math_floor(tempDouble/4294967296),4294967295))>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=t;break;case"double":HEAPF64[e>>3]=t;break;default:abort("invalid type for setValue: "+n)}}function getValue(e,t,n){switch("*"===(t=t||"i8").charAt(t.length-1)&&(t="i32"),t){case"i1":case"i8":return HEAP8[e>>0];case"i16":return HEAP16[e>>1];case"i32":case"i64":return HEAP32[e>>2];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];default:abort("invalid type for setValue: "+t)}return null}!function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(e){var t=Runtime.stackAlloc(e.length);return writeArrayToMemory(e,t),t},stringToC:function(e){var t=0;if(null!=e&&0!==e){var n=1+(e.length<<2);stringToUTF8(e,t=Runtime.stackAlloc(n),n)}return t}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,t,n,r,i){var o=getCFunc(e),u=[],a=0;if(r)for(var l=0;l>2]=0;for(l=u+o;r>0]=0;return u}if("i8"===a)return e.subarray||e.slice?HEAPU8.set(e,u):HEAPU8.set(new Uint8Array(e),u),u;for(var s,c,f,d=0;d>0],(0!=n||t)&&(i++,!t||i!=t););t||(t=i);var o="";if(r<128){for(var u;t>0;)u=String.fromCharCode.apply(String,HEAPU8.subarray(e,e+Math.min(t,1024))),o=o?o+u:u,e+=1024,t-=1024;return o}return Module.UTF8ToString(e)}function AsciiToString(e){for(var t="";;){var n=HEAP8[e++>>0];if(!n)return t;t+=String.fromCharCode(n)}}function stringToAscii(e,t){return writeAsciiToMemory(e,t,!1)}Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE,Module.allocate=allocate,Module.getMemory=getMemory,Module.Pointer_stringify=Pointer_stringify,Module.AsciiToString=AsciiToString,Module.stringToAscii=stringToAscii;var UTF8Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(e,t){for(var n=t;e[n];)++n;if(n-t>16&&e.subarray&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,n));for(var r,i,o,u,a,l="";;){if(!(r=e[t++]))return l;if(128&r)if(i=63&e[t++],192!=(224&r))if(o=63&e[t++],224==(240&r)?r=(15&r)<<12|i<<6|o:(u=63&e[t++],240==(248&r)?r=(7&r)<<18|i<<12|o<<6|u:(a=63&e[t++],r=248==(252&r)?(3&r)<<24|i<<18|o<<12|u<<6|a:(1&r)<<30|i<<24|o<<18|u<<12|a<<6|63&e[t++])),r<65536)l+=String.fromCharCode(r);else{var s=r-65536;l+=String.fromCharCode(55296|s>>10,56320|1023&s)}else l+=String.fromCharCode((31&r)<<6|i);else l+=String.fromCharCode(r)}}function UTF8ToString(e){return UTF8ArrayToString(HEAPU8,e)}function stringToUTF8Array(e,t,n,r){if(!(r>0))return 0;for(var i=n,o=n+r-1,u=0;u=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++u)),a<=127){if(n>=o)break;t[n++]=a}else if(a<=2047){if(n+1>=o)break;t[n++]=192|a>>6,t[n++]=128|63&a}else if(a<=65535){if(n+2>=o)break;t[n++]=224|a>>12,t[n++]=128|a>>6&63,t[n++]=128|63&a}else if(a<=2097151){if(n+3>=o)break;t[n++]=240|a>>18,t[n++]=128|a>>12&63,t[n++]=128|a>>6&63,t[n++]=128|63&a}else if(a<=67108863){if(n+4>=o)break;t[n++]=248|a>>24,t[n++]=128|a>>18&63,t[n++]=128|a>>12&63,t[n++]=128|a>>6&63,t[n++]=128|63&a}else{if(n+5>=o)break;t[n++]=252|a>>30,t[n++]=128|a>>24&63,t[n++]=128|a>>18&63,t[n++]=128|a>>12&63,t[n++]=128|a>>6&63,t[n++]=128|63&a}}return t[n]=0,n-i}function stringToUTF8(e,t,n){return stringToUTF8Array(e,HEAPU8,t,n)}function lengthBytesUTF8(e){for(var t=0,n=0;n=55296&&r<=57343&&(r=65536+((1023&r)<<10)|1023&e.charCodeAt(++n)),r<=127?++t:t+=r<=2047?2:r<=65535?3:r<=2097151?4:r<=67108863?5:6}return t}Module.UTF8ArrayToString=UTF8ArrayToString,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8Array=stringToUTF8Array,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;function demangle(e){var t=Module.___cxa_demangle||Module.__cxa_demangle;if(t){try{var n=e.substr(1),r=lengthBytesUTF8(n)+1,i=_malloc(r);stringToUTF8(n,i,r);var o=_malloc(4),u=t(i,0,0,o);if(0===getValue(o,"i32")&&u)return Pointer_stringify(u)}catch(e){}finally{i&&_free(i),o&&_free(o),u&&_free(u)}return e}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),e}function demangleAll(e){return e.replace(/__Z[\w\d_]+/g,(function(e){var t=demangle(e);return e===t?e:e+" ["+t+"]"}))}function jsStackTrace(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function stackTrace(){var e=jsStackTrace();return Module.extraStackTrace&&(e+="\n"+Module.extraStackTrace()),demangleAll(e)}function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}Module.stackTrace=stackTrace,STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;function getTotalMemory(){return TOTAL_MEMORY}if(TOTAL_MEMORY0;){var t=e.shift();if("function"!=typeof t){var n=t.func;"number"==typeof n?void 0===t.arg?Module.dynCall_v(n):Module.dynCall_vi(n,t.arg):n(void 0===t.arg?null:t.arg)}else t()}}Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}function addOnInit(e){__ATINIT__.unshift(e)}function addOnPreMain(e){__ATMAIN__.unshift(e)}function addOnExit(e){__ATEXIT__.unshift(e)}function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}function intArrayFromString(e,t,n){var r=n>0?n:lengthBytesUTF8(e)+1,i=new Array(r),o=stringToUTF8Array(e,i,0,i.length);return t&&(i.length=o),i}function intArrayToString(e){for(var t=[],n=0;n255&&(r&=255),t.push(String.fromCharCode(r))}return t.join("")}function writeStringToMemory(e,t,n){var r,i;Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),n&&(i=t+lengthBytesUTF8(e),r=HEAP8[i]),stringToUTF8(e,t,1/0),n&&(HEAP8[i]=r)}function writeArrayToMemory(e,t){HEAP8.set(e,t)}function writeAsciiToMemory(e,t,n){for(var r=0;r>0]=e.charCodeAt(r);n||(HEAP8[t>>0]=0)}if(Module.addOnPreRun=addOnPreRun,Module.addOnInit=addOnInit,Module.addOnPreMain=addOnPreMain,Module.addOnExit=addOnExit,Module.addOnPostRun=addOnPostRun,Module.intArrayFromString=intArrayFromString,Module.intArrayToString=intArrayToString,Module.writeStringToMemory=writeStringToMemory,Module.writeArrayToMemory=writeArrayToMemory,Module.writeAsciiToMemory=writeAsciiToMemory,Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(e,t){var n=65535&e,r=65535&t;return n*r+((e>>>16)*r+n*(t>>>16)<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(e){return froundBuffer[0]=e,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(e){e>>>=0;for(var t=0;t<32;t++)if(e&1<<31-t)return t;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(e){return e<0?Math.ceil(e):Math.floor(e)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}Module.addRunDependency=addRunDependency,Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(e,t,n,r,i,o,u,a){return _nbind.callbackSignatureList[e].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(e,t,n,r,i,o,u,a){return ASM_CONSTS[e](t,n,r,i,o,u,a)}function _emscripten_asm_const_iiiii(e,t,n,r,i){return ASM_CONSTS[e](t,n,r,i)}function _emscripten_asm_const_iiidddddd(e,t,n,r,i,o,u,a,l){return ASM_CONSTS[e](t,n,r,i,o,u,a,l)}function _emscripten_asm_const_iiididi(e,t,n,r,i,o,u){return ASM_CONSTS[e](t,n,r,i,o,u)}function _emscripten_asm_const_iiii(e,t,n,r){return ASM_CONSTS[e](t,n,r)}function _emscripten_asm_const_iiiid(e,t,n,r,i){return ASM_CONSTS[e](t,n,r,i)}function _emscripten_asm_const_iiiiii(e,t,n,r,i,o){return ASM_CONSTS[e](t,n,r,i,o)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;function _atexit(e,t){__ATEXIT__.unshift({func:e,arg:t})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(e,t,n,r){var i,o=arguments.length,u=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)u=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(u=(o<3?i(u):o>3?i(t,n,u):i(t,n))||u);return o>3&&u&&Object.defineProperty(t,n,u),u}function _defineHidden(e){return function(t,n){Object.defineProperty(t,n,{configurable:!1,enumerable:!1,value:e,writable:!0})}}STATICTOP+=16;var _nbind={};function __nbind_free_external(e){_nbind.externalList[e].dereference(e)}function __nbind_reference_external(e){_nbind.externalList[e].reference()}function _llvm_stackrestore(e){var t=_llvm_stacksave,n=t.LLVM_SAVEDSTACKS[e];t.LLVM_SAVEDSTACKS.splice(e,1),Runtime.stackRestore(n)}function __nbind_register_pool(e,t,n,r){_nbind.Pool.pageSize=e,_nbind.Pool.usedPtr=t/4,_nbind.Pool.rootPtr=n,_nbind.Pool.pagePtr=r/4,HEAP32[t/4]=16909060,1==HEAP8[t]&&(_nbind.bigEndian=!0),HEAP32[t/4]=0,_nbind.makeTypeKindTbl=((i={})[1024]=_nbind.PrimitiveType,i[64]=_nbind.Int64Type,i[2048]=_nbind.BindClass,i[3072]=_nbind.BindClassPtr,i[4096]=_nbind.SharedClassPtr,i[5120]=_nbind.ArrayType,i[6144]=_nbind.ArrayType,i[7168]=_nbind.CStringType,i[9216]=_nbind.CallbackType,i[10240]=_nbind.BindType,i),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var i,o=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});o.proto=Module,_nbind.BindClass.list.push(o)}function _emscripten_set_main_loop_timing(e,t){if(Browser.mainLoop.timingMode=e,Browser.mainLoop.timingValue=t,!Browser.mainLoop.func)return 1;if(0==e)Browser.mainLoop.scheduler=function(){var e=0|Math.max(0,Browser.mainLoop.tickStartTime+t-_emscripten_get_now());setTimeout(Browser.mainLoop.runner,e)},Browser.mainLoop.method="timeout";else if(1==e)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(2==e){if(!window.setImmediate){var n=[];window.addEventListener("message",(function(e){e.source===window&&"setimmediate"===e.data&&(e.stopPropagation(),n.shift()())}),!0),window.setImmediate=function(e){n.push(e),ENVIRONMENT_IS_WORKER?(void 0===Module.setImmediates&&(Module.setImmediates=[]),Module.setImmediates.push(e),window.postMessage({target:"setimmediate"})):window.postMessage("setimmediate","*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(e,t,n,r,i){var o;Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=e,Browser.mainLoop.arg=r,o=void 0!==r?function(){Module.dynCall_vi(e,r)}:function(){Module.dynCall_v(e)};var u=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT)if(Browser.mainLoop.queue.length>0){var e=Date.now(),t=Browser.mainLoop.queue.shift();if(t.func(t.arg),Browser.mainLoop.remainingBlockers){var n=Browser.mainLoop.remainingBlockers,r=n%1==0?n-1:Math.floor(n);t.counted?Browser.mainLoop.remainingBlockers=r:(r+=.5,Browser.mainLoop.remainingBlockers=(8*n+r)/9)}if(console.log('main loop blocker "'+t.name+'" took '+(Date.now()-e)+" ms"),Browser.mainLoop.updateStatus(),u1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0?Browser.mainLoop.scheduler():(0==Browser.mainLoop.timingMode&&(Browser.mainLoop.tickStartTime=_emscripten_get_now()),"timeout"===Browser.mainLoop.method&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(o),u0?_emscripten_set_main_loop_timing(0,1e3/t):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),n)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var e=Browser.mainLoop.timingMode,t=Browser.mainLoop.timingValue,n=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(n,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(e,t),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var e=Module.statusMessage||"Please wait...",t=Browser.mainLoop.remainingBlockers,n=Browser.mainLoop.expectedBlockers;t?t=6;){var u=r>>i-6&63;i-=6,n+=t[u]}return 2==i?(n+=t[(3&r)<<4],n+="=="):4==i&&(n+=t[(15&r)<<2],n+="="),n}(e),o(s))},s.src=l,Browser.safeSetTimeout((function(){o(s)}),1e4)}};Module.preloadPlugins.push(t);var n=Module.canvas;n&&(n.requestPointerLock=n.requestPointerLock||n.mozRequestPointerLock||n.webkitRequestPointerLock||n.msRequestPointerLock||function(){},n.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},n.exitPointerLock=n.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",r,!1),document.addEventListener("mozpointerlockchange",r,!1),document.addEventListener("webkitpointerlockchange",r,!1),document.addEventListener("mspointerlockchange",r,!1),Module.elementPointerLock&&n.addEventListener("click",(function(e){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),e.preventDefault())}),!1))}function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}},createContext:function(e,t,n,r){if(t&&Module.ctx&&e==Module.canvas)return Module.ctx;var i,o;if(t){var u={antialias:!1,alpha:!1};if(r)for(var a in r)u[a]=r[a];(o=GL.createContext(e,u))&&(i=GL.getContext(o).GLctx)}else i=e.getContext("2d");return i?(n&&(t||assert("undefined"==typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=i,t&&GL.makeContextCurrent(o),Module.useWebGL=t,Browser.moduleContextCreatedCallbacks.forEach((function(e){e()})),Browser.init()),i):null},destroyContext:function(e,t,n){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(e,t,n){Browser.lockPointer=e,Browser.resizeCanvas=t,Browser.vrDevice=n,void 0===Browser.lockPointer&&(Browser.lockPointer=!0),void 0===Browser.resizeCanvas&&(Browser.resizeCanvas=!1),void 0===Browser.vrDevice&&(Browser.vrDevice=null);var r=Module.canvas;function i(){Browser.isFullscreen=!1;var e=r.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===e?(r.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},r.exitFullscreen=r.exitFullscreen.bind(document),Browser.lockPointer&&r.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(e.parentNode.insertBefore(r,e),e.parentNode.removeChild(e),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(r)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",i,!1),document.addEventListener("mozfullscreenchange",i,!1),document.addEventListener("webkitfullscreenchange",i,!1),document.addEventListener("MSFullscreenChange",i,!1));var o=document.createElement("div");r.parentNode.insertBefore(o,r),o.appendChild(r),o.requestFullscreen=o.requestFullscreen||o.mozRequestFullScreen||o.msRequestFullscreen||(o.webkitRequestFullscreen?function(){o.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(o.webkitRequestFullScreen?function(){o.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),n?o.requestFullscreen({vrDisplay:n}):o.requestFullscreen()},requestFullScreen:function(e,t,n){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(e,t,n){return Browser.requestFullscreen(e,t,n)},Browser.requestFullscreen(e,t,n)},nextRAF:0,fakeRequestAnimationFrame:function(e){var t=Date.now();if(0===Browser.nextRAF)Browser.nextRAF=t+1e3/60;else for(;t+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var n=Math.max(Browser.nextRAF-t,0);setTimeout(e,n)},requestAnimationFrame:function(e){"undefined"==typeof window?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(e){return function(){if(!ABORT)return e.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var e=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],e.forEach((function(e){e()}))}},safeRequestAnimationFrame:function(e){return Browser.requestAnimationFrame((function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))}))},safeSetTimeout:function(e,t){return Module.noExitRuntime=!0,setTimeout((function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))}),t)},safeSetInterval:function(e,t){return Module.noExitRuntime=!0,setInterval((function(){ABORT||Browser.allowAsyncCallbacks&&e()}),t)},getMimetype:function(e){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[e.substr(e.lastIndexOf(".")+1)]},getUserMedia:function(e){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(e)},getMovementX:function(e){return e.movementX||e.mozMovementX||e.webkitMovementX||0},getMovementY:function(e){return e.movementY||e.mozMovementY||e.webkitMovementY||0},getMouseWheelDelta:function(e){var t=0;switch(e.type){case"DOMMouseScroll":t=e.detail;break;case"mousewheel":t=e.wheelDelta;break;case"wheel":t=e.deltaY;break;default:throw"unrecognized mouse wheel event: "+e.type}return t},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(e){if(Browser.pointerLock)"mousemove"!=e.type&&"mozMovementX"in e?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(e),Browser.mouseMovementY=Browser.getMovementY(e)),"undefined"!=typeof SDL?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var t=Module.canvas.getBoundingClientRect(),n=Module.canvas.width,r=Module.canvas.height,i=void 0!==window.scrollX?window.scrollX:window.pageXOffset,o=void 0!==window.scrollY?window.scrollY:window.pageYOffset;if("touchstart"===e.type||"touchend"===e.type||"touchmove"===e.type){var u=e.touch;if(void 0===u)return;var a=u.pageX-(i+t.left),l=u.pageY-(o+t.top),s={x:a*=n/t.width,y:l*=r/t.height};if("touchstart"===e.type)Browser.lastTouches[u.identifier]=s,Browser.touches[u.identifier]=s;else if("touchend"===e.type||"touchmove"===e.type){var c=Browser.touches[u.identifier];c||(c=s),Browser.lastTouches[u.identifier]=c,Browser.touches[u.identifier]=s}return}var f=e.pageX-(i+t.left),d=e.pageY-(o+t.top);f*=n/t.width,d*=r/t.height,Browser.mouseMovementX=f-Browser.mouseX,Browser.mouseMovementY=d-Browser.mouseY,Browser.mouseX=f,Browser.mouseY=d}},asyncLoad:function(e,t,n,r){var i=r?"":getUniqueRunDependency("al "+e);Module.readAsync(e,(function(n){assert(n,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(n)),i&&removeRunDependency(i)}),(function(t){if(!n)throw'Loading data file "'+e+'" failed.';n()})),i&&addRunDependency(i)},resizeListeners:[],updateResizeListeners:function(){var e=Module.canvas;Browser.resizeListeners.forEach((function(t){t(e.width,e.height)}))},setCanvasSize:function(e,t,n){var r=Module.canvas;Browser.updateCanvasDimensions(r,e,t),n||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if("undefined"!=typeof SDL){var e=HEAPU32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2];e|=8388608,HEAP32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2]=e}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if("undefined"!=typeof SDL){var e=HEAPU32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2];e&=-8388609,HEAP32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2]=e}Browser.updateResizeListeners()},updateCanvasDimensions:function(e,t,n){t&&n?(e.widthNative=t,e.heightNative=n):(t=e.widthNative,n=e.heightNative);var r=t,i=n;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(r/i>2]},getStr:function(){return Pointer_stringify(SYSCALLS.get())},get64:function(){var e=SYSCALLS.get(),t=SYSCALLS.get();return assert(e>=0?0===t:-1===t),e},getZero:function(){assert(0===SYSCALLS.get())}};function ___syscall6(e,t){SYSCALLS.varargs=t;try{var n=SYSCALLS.getStreamFromFD();return FS.close(n),0}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___syscall54(e,t){SYSCALLS.varargs=t;try{return 0}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function _typeModule(e){var t=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr"],[640,1,"std::unique_ptr"],[5120,1,"std::vector"],[6144,2,"std::array"],[9216,-1,"std::function"]];function n(e,t,n,r,i,o){if(1==t){var u=896&r;128!=u&&256!=u&&384!=u||(e="X const")}return(o?n.replace("X",e).replace("Y",i):e.replace("X",n).replace("Y",i)).replace(/([*&]) (?=[*&])/g,"$1")}function r(e,t){var n=t.flags,r=896&n,i=15360&n;return t.name||1024!=i||(1==t.ptrSize?t.name=(16&n?"":(8&n?"un":"")+"signed ")+"char":t.name=(8&n?"u":"")+(32&n?"float":"int")+8*t.ptrSize+"_t"),8!=t.ptrSize||32&n||(i=64),2048==i&&(512==r||640==r?i=4096:r&&(i=3072)),e(i,t)}var i={Type:function(){function e(e){this.id=e.id,this.name=e.name,this.flags=e.flags,this.spec=e}return e.prototype.toString=function(){return this.name},e}(),getComplexType:function e(i,o,u,a,l,s,c,f){void 0===s&&(s="X"),void 0===f&&(f=1);var d=u(i);if(d)return d;var p,h=a(i),v=h.placeholderFlag,m=t[v];c&&m&&(s=n(c[2],c[0],s,m[0],"?",!0)),0==v&&(p="Unbound"),v>=10&&(p="Corrupt"),f>20&&(p="Deeply nested"),p&&function(e,t,n,r,i){throw new Error(e+" type "+n.replace("X",t+"?")+(r?" with flag "+r:"")+" in "+i)}(p,i,s,v,l||"?");var g,y=e(h.paramList[0],o,u,a,l,s,m,f+1),_={flags:m[0],id:i,name:"",paramList:[y]},b=[],w="?";switch(h.placeholderFlag){case 1:g=y.spec;break;case 2:if(1024==(15360&y.flags)&&1==y.spec.ptrSize){_.flags=7168;break}case 3:case 6:case 5:g=y.spec,y.flags;break;case 8:w=""+h.paramList[1],_.paramList.push(h.paramList[1]);break;case 9:for(var E=0,D=h.paramList[1];E>2]=e),e}function _llvm_stacksave(){var e=_llvm_stacksave;return e.LLVM_SAVEDSTACKS||(e.LLVM_SAVEDSTACKS=[]),e.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),e.LLVM_SAVEDSTACKS.length-1}function ___syscall140(e,t){SYSCALLS.varargs=t;try{var n=SYSCALLS.getStreamFromFD(),r=(SYSCALLS.get(),SYSCALLS.get()),i=SYSCALLS.get(),o=SYSCALLS.get(),u=r;return FS.llseek(n,u,o),HEAP32[i>>2]=n.position,n.getdents&&0===u&&0===o&&(n.getdents=null),0}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___syscall146(e,t){SYSCALLS.varargs=t;try{var n=SYSCALLS.get(),r=SYSCALLS.get(),i=SYSCALLS.get(),o=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(e,t){var n=___syscall146.buffers[e];assert(n),0===t||10===t?((1===e?Module.print:Module.printErr)(UTF8ArrayToString(n,0)),n.length=0):n.push(t)});for(var u=0;u>2],l=HEAP32[r+(8*u+4)>>2],s=0;se.pageSize/2||t>e.pageSize-n?_nbind.typeNameTbl.NBind.proto.lalloc(t):(HEAPU32[e.usedPtr]=n+t,e.rootPtr+n)},e.lreset=function(t,n){HEAPU32[e.pagePtr]?_nbind.typeNameTbl.NBind.proto.lreset(t,n):HEAPU32[e.usedPtr]=t},e}();function constructType(e,t){var n=new(10240==e?_nbind.makeTypeNameTbl[t.name]||_nbind.BindType:_nbind.makeTypeKindTbl[e])(t);return typeIdTbl[t.id]=n,_nbind.typeNameTbl[t.name]=n,n}function getType(e){return typeIdTbl[e]}function queryType(e){var t=HEAPU8[e],n=_nbind.structureList[t][1];e/=4,n<0&&(++e,n=HEAPU32[e]+1);var r=Array.prototype.slice.call(HEAPU32.subarray(e+1,e+1+n));return 9==t&&(r=[r[0],r.slice(1)]),{paramList:r,placeholderFlag:t}}function getTypes(e,t){return e.map((function(e){return"number"==typeof e?_nbind.getComplexType(e,constructType,getType,queryType,t):_nbind.typeNameTbl[e]}))}function readTypeIdList(e,t){return Array.prototype.slice.call(HEAPU32,e/4,e/4+t)}function readAsciiString(e){for(var t=e;HEAPU8[t++];);return String.fromCharCode.apply("",HEAPU8.subarray(e,t-1))}function readPolicyList(e){var t={};if(e)for(;;){var n=HEAPU32[e/4];if(!n)break;t[readAsciiString(n)]=!0,e+=4}return t}function getDynCall(e,t){var n={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},r=e.map((function(e){return n[e.name]||"i"})).join(""),i=Module["dynCall_"+r];if(!i)throw new Error("dynCall_"+r+" not found for "+t+"("+e.map((function(e){return e.name})).join(", ")+")");return i}function addMethod(e,t,n,r){var i=e[t];e.hasOwnProperty(t)&&i?((i.arity||0===i.arity)&&(i=_nbind.makeOverloader(i,i.arity),e[t]=i),i.addMethod(n,r)):(n.arity=r,e[t]=n)}function throwError(e){throw new Error(e)}_nbind.Pool=Pool,_nbind.constructType=constructType,_nbind.getType=getType,_nbind.queryType=queryType,_nbind.getTypes=getTypes,_nbind.readTypeIdList=readTypeIdList,_nbind.readAsciiString=readAsciiString,_nbind.readPolicyList=readPolicyList,_nbind.getDynCall=getDynCall,_nbind.addMethod=addMethod,_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.heap=HEAPU32,t.ptrSize=4,t}return __extends(t,e),t.prototype.needsWireRead=function(e){return!!this.wireRead||!!this.makeWireRead},t.prototype.needsWireWrite=function(e){return!!this.wireWrite||!!this.makeWireWrite},t}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(e){function t(t){var n=e.call(this,t)||this,r=32&t.flags?{32:HEAPF32,64:HEAPF64}:8&t.flags?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return n.heap=r[8*t.ptrSize],n.ptrSize=t.ptrSize,n}return __extends(t,e),t.prototype.needsWireWrite=function(e){return!!e&&!!e.Strict},t.prototype.makeWireWrite=function(e,t){return t&&t.Strict&&function(e){if("number"==typeof e)return e;throw new Error("Type mismatch")}},t}(BindType);function pushCString(e,t){if(null==e){if(t&&t.Nullable)return 0;throw new Error("Type mismatch")}if(t&&t.Strict){if("string"!=typeof e)throw new Error("Type mismatch")}else e=e.toString();var n=Module.lengthBytesUTF8(e)+1,r=_nbind.Pool.lalloc(n);return Module.stringToUTF8Array(e,HEAPU8,r,n),r}function popCString(e){return 0===e?null:Module.Pointer_stringify(e)}_nbind.PrimitiveType=PrimitiveType,_nbind.pushCString=pushCString,_nbind.popCString=popCString;var CStringType=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.wireRead=popCString,t.wireWrite=pushCString,t.readResources=[_nbind.resources.pool],t.writeResources=[_nbind.resources.pool],t}return __extends(t,e),t.prototype.makeWireWrite=function(e,t){return function(e){return pushCString(e,t)}},t}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.wireRead=function(e){return!!e},t}return __extends(t,e),t.prototype.needsWireWrite=function(e){return!!e&&!!e.Strict},t.prototype.makeWireRead=function(e){return"!!("+e+")"},t.prototype.makeWireWrite=function(e,t){return t&&t.Strict&&function(e){if("boolean"==typeof e)return e;throw new Error("Type mismatch")}||e},t}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function e(){}return e.prototype.persist=function(){this.__nbindState|=1},e}();function makeBound(e,t){var n=function(e){function n(t,r,i,o){var u=e.call(this)||this;if(!(u instanceof n))return new(Function.prototype.bind.apply(n,Array.prototype.concat.apply([null],arguments)));var a=r,l=i,s=o;if(t!==_nbind.ptrMarker){var c=u.__nbindConstructor.apply(u,arguments);a=4608,s=HEAPU32[c/4],l=HEAPU32[c/4+1]}var f={configurable:!0,enumerable:!1,value:null,writable:!1},d={__nbindFlags:a,__nbindPtr:l};s&&(d.__nbindShared=s,_nbind.mark(u));for(var p=0,h=Object.keys(d);p>=1;var n=_nbind.valueList[e];return _nbind.valueList[e]=firstFreeValue,firstFreeValue=e,n}if(t)return _nbind.popShared(e,t);throw new Error("Invalid value slot "+e)}_nbind.pushValue=pushValue,_nbind.popValue=popValue;var valueBase=0x10000000000000000;function push64(e){return"number"==typeof e?e:4096*pushValue(e)+valueBase}function pop64(e){return e=3?Buffer.from(o):new Buffer(o)).copy(r):getBuffer(r).set(o)}}_nbind.BufferType=BufferType,_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var e=0,t=dirtyList;e>2]=DYNAMIC_BASE,staticSealed=!0,Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(e,t,n){"use asm";var r=new e.Int8Array(n);var i=new e.Int16Array(n);var o=new e.Int32Array(n);var u=new e.Uint8Array(n);var a=new e.Uint16Array(n);var l=new e.Uint32Array(n);var s=new e.Float32Array(n);var c=new e.Float64Array(n);var f=t.DYNAMICTOP_PTR|0;var d=t.tempDoublePtr|0;var p=t.ABORT|0;var h=t.STACKTOP|0;var v=t.STACK_MAX|0;var m=t.cttz_i8|0;var g=t.___dso_handle|0;var y=0;var _=0;var b=0;var w=0;var E=e.NaN,D=e.Infinity;var S=0,C=0,k=0,T=0,x=0.0;var A=0;var O=e.Math.floor;var P=e.Math.abs;var I=e.Math.sqrt;var N=e.Math.pow;var M=e.Math.cos;var R=e.Math.sin;var F=e.Math.tan;var L=e.Math.acos;var B=e.Math.asin;var j=e.Math.atan;var U=e.Math.atan2;var z=e.Math.exp;var W=e.Math.log;var H=e.Math.ceil;var V=e.Math.imul;var q=e.Math.min;var G=e.Math.max;var $=e.Math.clz32;var Y=e.Math.fround;var K=t.abort;var X=t.assert;var Q=t.enlargeMemory;var J=t.getTotalMemory;var Z=t.abortOnCannotGrowMemory;var ee=t.invoke_viiiii;var te=t.invoke_vif;var ne=t.invoke_vid;var re=t.invoke_fiff;var ie=t.invoke_vi;var oe=t.invoke_vii;var ue=t.invoke_ii;var ae=t.invoke_viddi;var le=t.invoke_vidd;var se=t.invoke_iiii;var ce=t.invoke_diii;var fe=t.invoke_di;var de=t.invoke_iid;var pe=t.invoke_iii;var he=t.invoke_viiddi;var ve=t.invoke_viiiiii;var me=t.invoke_dii;var ge=t.invoke_i;var ye=t.invoke_iiiiii;var _e=t.invoke_viiid;var be=t.invoke_viififi;var we=t.invoke_viii;var Ee=t.invoke_v;var De=t.invoke_viid;var Se=t.invoke_idd;var Ce=t.invoke_viiii;var ke=t._emscripten_asm_const_iiiii;var Te=t._emscripten_asm_const_iiidddddd;var xe=t._emscripten_asm_const_iiiid;var Ae=t.__nbind_reference_external;var Oe=t._emscripten_asm_const_iiiiiiii;var Pe=t._removeAccessorPrefix;var Ie=t._typeModule;var Ne=t.__nbind_register_pool;var Me=t.__decorate;var Re=t._llvm_stackrestore;var Fe=t.___cxa_atexit;var Le=t.__extends;var Be=t.__nbind_get_value_object;var je=t.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj;var Ue=t._emscripten_set_main_loop_timing;var ze=t.__nbind_register_primitive;var We=t.__nbind_register_type;var He=t._emscripten_memcpy_big;var Ve=t.__nbind_register_function;var qe=t.___setErrNo;var Ge=t.__nbind_register_class;var $e=t.__nbind_finish;var Ye=t._abort;var Ke=t._nbind_value;var Xe=t._llvm_stacksave;var Qe=t.___syscall54;var Je=t._defineHidden;var Ze=t._emscripten_set_main_loop;var et=t._emscripten_get_now;var tt=t.__nbind_register_callback_signature;var nt=t._emscripten_asm_const_iiiiii;var rt=t.__nbind_free_external;var it=t._emscripten_asm_const_iiii;var ot=t._emscripten_asm_const_iiididi;var ut=t.___syscall6;var at=t._atexit;var lt=t.___syscall140;var st=t.___syscall146;var ct=Y(0);const ft=Y(0);function dt(e){e=e|0;var t=0;t=h;h=h+e|0;h=h+15&-16;return t|0}function pt(){return h|0}function ht(e){e=e|0;h=e}function vt(e,t){e=e|0;t=t|0;h=e;v=t}function mt(e,t){e=e|0;t=t|0;if(!y){y=e;_=t}}function gt(e){e=e|0;A=e}function yt(){return A|0}function _t(){var e=0,t=0;ix(8104,8,400)|0;ix(8504,408,540)|0;e=9044;t=e+44|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));r[9088]=0;r[9089]=1;o[2273]=0;o[2274]=948;o[2275]=948;Fe(17,8104,g|0)|0;return}function bt(e){e=e|0;qt(e+948|0);return}function wt(e){e=Y(e);return((Ii(e)|0)&2147483647)>>>0>2139095040|0}function Et(e,t,n){e=e|0;t=t|0;n=n|0;e:do{if(!(o[e+(t<<3)+4>>2]|0)){if((t|2|0)==3?o[e+60>>2]|0:0){e=e+56|0;break}switch(t|0){case 0:case 2:case 4:case 5:{if(o[e+52>>2]|0){e=e+48|0;break e}break}default:{}}if(!(o[e+68>>2]|0)){e=(t|1|0)==5?948:n;break}else{e=e+64|0;break}}else e=e+(t<<3)|0}while(0);return e|0}function Dt(e){e=e|0;var t=0;t=qk(1e3)|0;St(e,(t|0)!=0,2456);o[2276]=(o[2276]|0)+1;ix(t|0,8104,1e3)|0;if(r[e+2>>0]|0){o[t+4>>2]=2;o[t+12>>2]=4}o[t+976>>2]=e;return t|0}function St(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;i=h;h=h+16|0;r=i;if(!t){o[r>>2]=n;Lr(e,5,3197,r)}h=i;return}function Ct(){return Dt(956)|0}function kt(e){e=e|0;var t=0;t=$T(1e3)|0;Tt(t,e);St(o[e+976>>2]|0,1,2456);o[2276]=(o[2276]|0)+1;o[t+944>>2]=0;return t|0}function Tt(e,t){e=e|0;t=t|0;var n=0;ix(e|0,t|0,948)|0;Ur(e+948|0,t+948|0);n=e+960|0;e=t+960|0;t=n+40|0;do{o[n>>2]=o[e>>2];n=n+4|0;e=e+4|0}while((n|0)<(t|0));return}function xt(e){e=e|0;var t=0,n=0,r=0,i=0;t=e+944|0;n=o[t>>2]|0;if(n|0){At(n+948|0,e)|0;o[t>>2]=0}n=Ot(e)|0;if(n|0){t=0;do{o[(Pt(e,t)|0)+944>>2]=0;t=t+1|0}while((t|0)!=(n|0))}n=e+948|0;r=o[n>>2]|0;i=e+952|0;t=o[i>>2]|0;if((t|0)!=(r|0))o[i>>2]=t+(~((t+-4-r|0)>>>2)<<2);It(n);Gk(e);o[2276]=(o[2276]|0)+-1;return}function At(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0;r=o[e>>2]|0;l=e+4|0;n=o[l>>2]|0;u=n;e:do{if((r|0)==(n|0)){i=r;a=4}else{e=r;while(1){if((o[e>>2]|0)==(t|0)){i=e;a=4;break e}e=e+4|0;if((e|0)==(n|0)){e=0;break}}}}while(0);if((a|0)==4)if((i|0)!=(n|0)){r=i+4|0;e=u-r|0;t=e>>2;if(t){sx(i|0,r|0,e|0)|0;n=o[l>>2]|0}e=i+(t<<2)|0;if((n|0)==(e|0))e=1;else{o[l>>2]=n+(~((n+-4-e|0)>>>2)<<2);e=1}}else e=0;return e|0}function Ot(e){e=e|0;return(o[e+952>>2]|0)-(o[e+948>>2]|0)>>2|0}function Pt(e,t){e=e|0;t=t|0;var n=0;n=o[e+948>>2]|0;if((o[e+952>>2]|0)-n>>2>>>0>t>>>0)e=o[n+(t<<2)>>2]|0;else e=0;return e|0}function It(e){e=e|0;var t=0,n=0,r=0,i=0;r=h;h=h+32|0;t=r;i=o[e>>2]|0;n=(o[e+4>>2]|0)-i|0;if(((o[e+8>>2]|0)-i|0)>>>0>n>>>0){i=n>>2;Ni(t,i,i,e+8|0);Mi(e,t);Ri(t)}h=r;return}function Nt(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0;c=Ot(e)|0;do{if(c|0){if((o[(Pt(e,0)|0)+944>>2]|0)==(e|0)){if(!(At(e+948|0,t)|0))break;ix(t+400|0,8504,540)|0;o[t+944>>2]=0;Vt(e);break}a=o[(o[e+976>>2]|0)+12>>2]|0;l=e+948|0;s=(a|0)==0;n=0;u=0;do{r=o[(o[l>>2]|0)+(u<<2)>>2]|0;if((r|0)==(t|0))Vt(e);else{i=kt(r)|0;o[(o[l>>2]|0)+(n<<2)>>2]=i;o[i+944>>2]=e;if(!s)RA[a&15](r,i,e,n);n=n+1|0}u=u+1|0}while((u|0)!=(c|0));if(n>>>0>>0){s=e+948|0;l=e+952|0;a=n;n=o[l>>2]|0;do{u=(o[s>>2]|0)+(a<<2)|0;r=u+4|0;i=n-r|0;t=i>>2;if(!t)i=n;else{sx(u|0,r|0,i|0)|0;n=o[l>>2]|0;i=n}r=u+(t<<2)|0;if((i|0)!=(r|0)){n=i+(~((i+-4-r|0)>>>2)<<2)|0;o[l>>2]=n}a=a+1|0}while((a|0)!=(c|0))}}}while(0);return}function Mt(e){e=e|0;var t=0,n=0,i=0,u=0;Rt(e,(Ot(e)|0)==0,2491);Rt(e,(o[e+944>>2]|0)==0,2545);t=e+948|0;n=o[t>>2]|0;i=e+952|0;u=o[i>>2]|0;if((u|0)!=(n|0))o[i>>2]=u+(~((u+-4-n|0)>>>2)<<2);It(t);t=e+976|0;n=o[t>>2]|0;ix(e|0,8104,1e3)|0;if(r[n+2>>0]|0){o[e+4>>2]=2;o[e+12>>2]=4}o[t>>2]=n;return}function Rt(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;i=h;h=h+16|0;r=i;if(!t){o[r>>2]=n;Cr(e,5,3197,r)}h=i;return}function Ft(){return o[2276]|0}function Lt(){var e=0;e=qk(20)|0;Bt((e|0)!=0,2592);o[2277]=(o[2277]|0)+1;o[e>>2]=o[239];o[e+4>>2]=o[240];o[e+8>>2]=o[241];o[e+12>>2]=o[242];o[e+16>>2]=o[243];return e|0}function Bt(e,t){e=e|0;t=t|0;var n=0,r=0;r=h;h=h+16|0;n=r;if(!e){o[n>>2]=t;Cr(0,5,3197,n)}h=r;return}function jt(e){e=e|0;Gk(e);o[2277]=(o[2277]|0)+-1;return}function Ut(e,t){e=e|0;t=t|0;var n=0;if(!t){n=0;t=0}else{Rt(e,(Ot(e)|0)==0,2629);n=1}o[e+964>>2]=t;o[e+988>>2]=n;return}function zt(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;u=r+8|0;i=r+4|0;a=r;o[i>>2]=t;Rt(e,(o[t+944>>2]|0)==0,2709);Rt(e,(o[e+964>>2]|0)==0,2763);Wt(e);t=e+948|0;o[a>>2]=(o[t>>2]|0)+(n<<2);o[u>>2]=o[a>>2];Ht(t,u,i)|0;o[(o[i>>2]|0)+944>>2]=e;Vt(e);h=r;return}function Wt(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0;n=Ot(e)|0;if(n|0?(o[(Pt(e,0)|0)+944>>2]|0)!=(e|0):0){r=o[(o[e+976>>2]|0)+12>>2]|0;i=e+948|0;u=(r|0)==0;t=0;do{a=o[(o[i>>2]|0)+(t<<2)>>2]|0;l=kt(a)|0;o[(o[i>>2]|0)+(t<<2)>>2]=l;o[l+944>>2]=e;if(!u)RA[r&15](a,l,e,t);t=t+1|0}while((t|0)!=(n|0))}return}function Ht(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0;y=h;h=h+64|0;d=y+52|0;l=y+48|0;p=y+28|0;v=y+24|0;m=y+20|0;g=y;r=o[e>>2]|0;u=r;t=r+((o[t>>2]|0)-u>>2<<2)|0;r=e+4|0;i=o[r>>2]|0;a=e+8|0;do{if(i>>>0<(o[a>>2]|0)>>>0){if((t|0)==(i|0)){o[t>>2]=o[n>>2];o[r>>2]=(o[r>>2]|0)+4;break}Fi(e,t,i,t+4|0);if(t>>>0<=n>>>0)n=(o[r>>2]|0)>>>0>n>>>0?n+4|0:n;o[t>>2]=o[n>>2]}else{r=(i-u>>2)+1|0;i=Hr(e)|0;if(i>>>0>>0)UT(e);f=o[e>>2]|0;c=(o[a>>2]|0)-f|0;u=c>>1;Ni(g,c>>2>>>0>>1>>>0?u>>>0>>0?r:u:i,t-f>>2,e+8|0);f=g+8|0;r=o[f>>2]|0;u=g+12|0;c=o[u>>2]|0;a=c;s=r;do{if((r|0)==(c|0)){c=g+4|0;r=o[c>>2]|0;_=o[g>>2]|0;i=_;if(r>>>0<=_>>>0){r=a-i>>1;r=(r|0)==0?1:r;Ni(p,r,r>>>2,o[g+16>>2]|0);o[v>>2]=o[c>>2];o[m>>2]=o[f>>2];o[l>>2]=o[v>>2];o[d>>2]=o[m>>2];Bi(p,l,d);r=o[g>>2]|0;o[g>>2]=o[p>>2];o[p>>2]=r;r=p+4|0;_=o[c>>2]|0;o[c>>2]=o[r>>2];o[r>>2]=_;r=p+8|0;_=o[f>>2]|0;o[f>>2]=o[r>>2];o[r>>2]=_;r=p+12|0;_=o[u>>2]|0;o[u>>2]=o[r>>2];o[r>>2]=_;Ri(p);r=o[f>>2]|0;break}u=r;a=((u-i>>2)+1|0)/-2|0;l=r+(a<<2)|0;i=s-u|0;u=i>>2;if(u){sx(l|0,r|0,i|0)|0;r=o[c>>2]|0}_=l+(u<<2)|0;o[f>>2]=_;o[c>>2]=r+(a<<2);r=_}}while(0);o[r>>2]=o[n>>2];o[f>>2]=(o[f>>2]|0)+4;t=Li(e,g,t)|0;Ri(g)}}while(0);h=y;return t|0}function Vt(e){e=e|0;var t=0;do{t=e+984|0;if(r[t>>0]|0)break;r[t>>0]=1;s[e+504>>2]=Y(E);e=o[e+944>>2]|0}while((e|0)!=0);return}function qt(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-4-r|0)>>>2)<<2);KT(n)}return}function Gt(e){e=e|0;return o[e+944>>2]|0}function $t(e){e=e|0;Rt(e,(o[e+964>>2]|0)!=0,2832);Vt(e);return}function Yt(e){e=e|0;return(r[e+984>>0]|0)!=0|0}function Kt(e,t){e=e|0;t=t|0;if(iT(e,t,400)|0){ix(e|0,t|0,400)|0;Vt(e)}return}function Xt(e){e=e|0;var t=ft;t=Y(s[e+44>>2]);e=wt(t)|0;return Y(e?Y(0.0):t)}function Qt(e){e=e|0;var t=ft;t=Y(s[e+48>>2]);if(wt(t)|0)t=r[(o[e+976>>2]|0)+2>>0]|0?Y(1.0):Y(0.0);return Y(t)}function Jt(e,t){e=e|0;t=t|0;o[e+980>>2]=t;return}function Zt(e){e=e|0;return o[e+980>>2]|0}function en(e,t){e=e|0;t=t|0;var n=0;n=e+4|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function tn(e){e=e|0;return o[e+4>>2]|0}function nn(e,t){e=e|0;t=t|0;var n=0;n=e+8|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function rn(e){e=e|0;return o[e+8>>2]|0}function on(e,t){e=e|0;t=t|0;var n=0;n=e+12|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function un(e){e=e|0;return o[e+12>>2]|0}function an(e,t){e=e|0;t=t|0;var n=0;n=e+16|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function ln(e){e=e|0;return o[e+16>>2]|0}function sn(e,t){e=e|0;t=t|0;var n=0;n=e+20|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function cn(e){e=e|0;return o[e+20>>2]|0}function fn(e,t){e=e|0;t=t|0;var n=0;n=e+24|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function dn(e){e=e|0;return o[e+24>>2]|0}function pn(e,t){e=e|0;t=t|0;var n=0;n=e+28|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function hn(e){e=e|0;return o[e+28>>2]|0}function vn(e,t){e=e|0;t=t|0;var n=0;n=e+32|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function mn(e){e=e|0;return o[e+32>>2]|0}function gn(e,t){e=e|0;t=t|0;var n=0;n=e+36|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function yn(e){e=e|0;return o[e+36>>2]|0}function _n(e,t){e=e|0;t=Y(t);var n=0;n=e+40|0;if(Y(s[n>>2])!=t){s[n>>2]=t;Vt(e)}return}function bn(e,t){e=e|0;t=Y(t);var n=0;n=e+44|0;if(Y(s[n>>2])!=t){s[n>>2]=t;Vt(e)}return}function wn(e,t){e=e|0;t=Y(t);var n=0;n=e+48|0;if(Y(s[n>>2])!=t){s[n>>2]=t;Vt(e)}return}function En(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+52|0;i=e+56|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Dn(e,t){e=e|0;t=Y(t);var n=0,r=0;r=e+52|0;n=e+56|0;if(!(!(Y(s[r>>2])!=t)?(o[n>>2]|0)==2:0)){s[r>>2]=t;r=wt(t)|0;o[n>>2]=r?3:2;Vt(e)}return}function Sn(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+52|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function Cn(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=(u^1)&1;i=e+132+(t<<3)|0;t=e+132+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function kn(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=u?0:2;i=e+132+(t<<3)|0;t=e+132+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function Tn(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=t+132+(n<<3)|0;t=o[r+4>>2]|0;n=e;o[n>>2]=o[r>>2];o[n+4>>2]=t;return}function xn(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=(u^1)&1;i=e+60+(t<<3)|0;t=e+60+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function An(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=u?0:2;i=e+60+(t<<3)|0;t=e+60+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function On(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=t+60+(n<<3)|0;t=o[r+4>>2]|0;n=e;o[n>>2]=o[r>>2];o[n+4>>2]=t;return}function Pn(e,t){e=e|0;t=t|0;var n=0;n=e+60+(t<<3)+4|0;if((o[n>>2]|0)!=3){s[e+60+(t<<3)>>2]=Y(E);o[n>>2]=3;Vt(e)}return}function In(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=(u^1)&1;i=e+204+(t<<3)|0;t=e+204+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function Nn(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=u?0:2;i=e+204+(t<<3)|0;t=e+204+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function Mn(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=t+204+(n<<3)|0;t=o[r+4>>2]|0;n=e;o[n>>2]=o[r>>2];o[n+4>>2]=t;return}function Rn(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=(u^1)&1;i=e+276+(t<<3)|0;t=e+276+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function Fn(e,t){e=e|0;t=t|0;return Y(s[e+276+(t<<3)>>2])}function Ln(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+348|0;i=e+352|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Bn(e,t){e=e|0;t=Y(t);var n=0,r=0;r=e+348|0;n=e+352|0;if(!(!(Y(s[r>>2])!=t)?(o[n>>2]|0)==2:0)){s[r>>2]=t;r=wt(t)|0;o[n>>2]=r?3:2;Vt(e)}return}function jn(e){e=e|0;var t=0;t=e+352|0;if((o[t>>2]|0)!=3){s[e+348>>2]=Y(E);o[t>>2]=3;Vt(e)}return}function Un(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+348|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function zn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+356|0;i=e+360|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Wn(e,t){e=e|0;t=Y(t);var n=0,r=0;r=e+356|0;n=e+360|0;if(!(!(Y(s[r>>2])!=t)?(o[n>>2]|0)==2:0)){s[r>>2]=t;r=wt(t)|0;o[n>>2]=r?3:2;Vt(e)}return}function Hn(e){e=e|0;var t=0;t=e+360|0;if((o[t>>2]|0)!=3){s[e+356>>2]=Y(E);o[t>>2]=3;Vt(e)}return}function Vn(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+356|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function qn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+364|0;i=e+368|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Gn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=u?0:2;r=e+364|0;i=e+368|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function $n(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+364|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function Yn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+372|0;i=e+376|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Kn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=u?0:2;r=e+372|0;i=e+376|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Xn(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+372|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function Qn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+380|0;i=e+384|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Jn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=u?0:2;r=e+380|0;i=e+384|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Zn(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+380|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function er(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+388|0;i=e+392|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function tr(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=u?0:2;r=e+388|0;i=e+392|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function nr(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+388|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function rr(e,t){e=e|0;t=Y(t);var n=0;n=e+396|0;if(Y(s[n>>2])!=t){s[n>>2]=t;Vt(e)}return}function ir(e){e=e|0;return Y(s[e+396>>2])}function or(e){e=e|0;return Y(s[e+400>>2])}function ur(e){e=e|0;return Y(s[e+404>>2])}function ar(e){e=e|0;return Y(s[e+408>>2])}function lr(e){e=e|0;return Y(s[e+412>>2])}function sr(e){e=e|0;return Y(s[e+416>>2])}function cr(e){e=e|0;return Y(s[e+420>>2])}function fr(e,t){e=e|0;t=t|0;Rt(e,(t|0)<6,2918);switch(t|0){case 0:{t=(o[e+496>>2]|0)==2?5:4;break}case 2:{t=(o[e+496>>2]|0)==2?4:5;break}default:{}}return Y(s[e+424+(t<<2)>>2])}function dr(e,t){e=e|0;t=t|0;Rt(e,(t|0)<6,2918);switch(t|0){case 0:{t=(o[e+496>>2]|0)==2?5:4;break}case 2:{t=(o[e+496>>2]|0)==2?4:5;break}default:{}}return Y(s[e+448+(t<<2)>>2])}function pr(e,t){e=e|0;t=t|0;Rt(e,(t|0)<6,2918);switch(t|0){case 0:{t=(o[e+496>>2]|0)==2?5:4;break}case 2:{t=(o[e+496>>2]|0)==2?4:5;break}default:{}}return Y(s[e+472+(t<<2)>>2])}function hr(e,t){e=e|0;t=t|0;var n=0,r=ft;n=o[e+4>>2]|0;if((n|0)==(o[t+4>>2]|0)){if(!n)e=1;else{r=Y(s[e>>2]);e=Y(P(Y(r-Y(s[t>>2]))))>2]=0;o[i+4>>2]=0;o[i+8>>2]=0;je(i|0,e|0,t|0,0);Cr(e,3,(r[i+11>>0]|0)<0?o[i>>2]|0:i,n);XT(i);h=n;return}function yr(e,t,n,r){e=Y(e);t=Y(t);n=n|0;r=r|0;var i=ft;e=Y(e*t);i=Y(LT(e,Y(1.0)));do{if(!(vr(i,Y(0.0))|0)){e=Y(e-i);if(vr(i,Y(1.0))|0){e=Y(e+Y(1.0));break}if(n){e=Y(e+Y(1.0));break}if(!r){if(i>Y(.5))i=Y(1.0);else{r=vr(i,Y(.5))|0;i=r?Y(1.0):Y(0.0)}e=Y(e+i)}}else e=Y(e-i)}while(0);return Y(e/t)}function _r(e,t,n,r,i,o,u,a,l,c,f,d,p){e=e|0;t=Y(t);n=n|0;r=Y(r);i=i|0;o=Y(o);u=u|0;a=Y(a);l=Y(l);c=Y(c);f=Y(f);d=Y(d);p=p|0;var h=0,v=ft,m=ft,g=ft,y=ft,_=ft,b=ft;if(l>2]),v!=Y(0.0)):0){g=Y(yr(t,v,0,0));y=Y(yr(r,v,0,0));m=Y(yr(o,v,0,0));v=Y(yr(a,v,0,0))}else{m=o;g=t;v=a;y=r}if((i|0)==(e|0))h=vr(m,g)|0;else h=0;if((u|0)==(n|0))p=vr(v,y)|0;else p=0;if((!h?(_=Y(t-f),!(br(e,_,l)|0)):0)?!(wr(e,_,i,l)|0):0)h=Er(e,_,i,o,l)|0;else h=1;if((!p?(b=Y(r-d),!(br(n,b,c)|0)):0)?!(wr(n,b,u,c)|0):0)p=Er(n,b,u,a,c)|0;else p=1;p=h&p}return p|0}function br(e,t,n){e=e|0;t=Y(t);n=Y(n);if((e|0)==1)e=vr(t,n)|0;else e=0;return e|0}function wr(e,t,n,r){e=e|0;t=Y(t);n=n|0;r=Y(r);if((e|0)==2&(n|0)==0){if(!(t>=r))e=vr(t,r)|0;else e=1}else e=0;return e|0}function Er(e,t,n,r,i){e=e|0;t=Y(t);n=n|0;r=Y(r);i=Y(i);if((e|0)==2&(n|0)==2&r>t){if(!(i<=t))e=vr(t,i)|0;else e=1}else e=0;return e|0}function Dr(e,t,n,i,u,a,l,f,d,p,v){e=e|0;t=Y(t);n=Y(n);i=i|0;u=u|0;a=a|0;l=Y(l);f=Y(f);d=d|0;p=p|0;v=v|0;var m=0,g=0,y=0,_=0,b=ft,w=ft,E=0,D=0,S=0,C=0,k=0,T=0,x=0,A=0,O=0,P=0,I=0,N=ft,M=ft,R=ft,F=0.0,L=0.0;I=h;h=h+160|0;A=I+152|0;x=I+120|0;T=I+104|0;S=I+72|0;_=I+56|0;k=I+8|0;D=I;C=(o[2279]|0)+1|0;o[2279]=C;O=e+984|0;if((r[O>>0]|0)!=0?(o[e+512>>2]|0)!=(o[2278]|0):0)E=4;else if((o[e+516>>2]|0)==(i|0))P=0;else E=4;if((E|0)==4){o[e+520>>2]=0;o[e+924>>2]=-1;o[e+928>>2]=-1;s[e+932>>2]=Y(-1.0);s[e+936>>2]=Y(-1.0);P=1}e:do{if(!(o[e+964>>2]|0)){if(d){m=e+916|0;if(!(vr(Y(s[m>>2]),t)|0)){E=21;break}if(!(vr(Y(s[e+920>>2]),n)|0)){E=21;break}if((o[e+924>>2]|0)!=(u|0)){E=21;break}m=(o[e+928>>2]|0)==(a|0)?m:0;E=22;break}y=o[e+520>>2]|0;if(!y)E=21;else{g=0;while(1){m=e+524+(g*24|0)|0;if(((vr(Y(s[m>>2]),t)|0?vr(Y(s[e+524+(g*24|0)+4>>2]),n)|0:0)?(o[e+524+(g*24|0)+8>>2]|0)==(u|0):0)?(o[e+524+(g*24|0)+12>>2]|0)==(a|0):0){E=22;break e}g=g+1|0;if(g>>>0>=y>>>0){E=21;break}}}}else{b=Y(Sr(e,2,l));w=Y(Sr(e,0,l));m=e+916|0;R=Y(s[m>>2]);M=Y(s[e+920>>2]);N=Y(s[e+932>>2]);if(!(_r(u,t,a,n,o[e+924>>2]|0,R,o[e+928>>2]|0,M,N,Y(s[e+936>>2]),b,w,v)|0)){y=o[e+520>>2]|0;if(!y)E=21;else{g=0;while(1){m=e+524+(g*24|0)|0;N=Y(s[m>>2]);M=Y(s[e+524+(g*24|0)+4>>2]);R=Y(s[e+524+(g*24|0)+16>>2]);if(_r(u,t,a,n,o[e+524+(g*24|0)+8>>2]|0,N,o[e+524+(g*24|0)+12>>2]|0,M,R,Y(s[e+524+(g*24|0)+20>>2]),b,w,v)|0){E=22;break e}g=g+1|0;if(g>>>0>=y>>>0){E=21;break}}}}else E=22}}while(0);do{if((E|0)==21){if(!(r[11697]|0)){m=0;E=31}else{m=0;E=28}}else if((E|0)==22){g=(r[11697]|0)!=0;if(!((m|0)!=0&(P^1)))if(g){E=28;break}else{E=31;break}_=m+16|0;o[e+908>>2]=o[_>>2];y=m+20|0;o[e+912>>2]=o[y>>2];if(!((r[11698]|0)==0|g^1)){o[D>>2]=kr(C)|0;o[D+4>>2]=C;Cr(e,4,2972,D);g=o[e+972>>2]|0;if(g|0)hA[g&127](e);u=Tr(u,d)|0;a=Tr(a,d)|0;L=+Y(s[_>>2]);F=+Y(s[y>>2]);o[k>>2]=u;o[k+4>>2]=a;c[k+8>>3]=+t;c[k+16>>3]=+n;c[k+24>>3]=L;c[k+32>>3]=F;o[k+40>>2]=p;Cr(e,4,2989,k)}}}while(0);if((E|0)==28){g=kr(C)|0;o[_>>2]=g;o[_+4>>2]=C;o[_+8>>2]=P?3047:11699;Cr(e,4,3038,_);g=o[e+972>>2]|0;if(g|0)hA[g&127](e);k=Tr(u,d)|0;E=Tr(a,d)|0;o[S>>2]=k;o[S+4>>2]=E;c[S+8>>3]=+t;c[S+16>>3]=+n;o[S+24>>2]=p;Cr(e,4,3049,S);E=31}if((E|0)==31){xr(e,t,n,i,u,a,l,f,d,v);if(r[11697]|0){g=o[2279]|0;k=kr(g)|0;o[T>>2]=k;o[T+4>>2]=g;o[T+8>>2]=P?3047:11699;Cr(e,4,3083,T);g=o[e+972>>2]|0;if(g|0)hA[g&127](e);k=Tr(u,d)|0;T=Tr(a,d)|0;F=+Y(s[e+908>>2]);L=+Y(s[e+912>>2]);o[x>>2]=k;o[x+4>>2]=T;c[x+8>>3]=F;c[x+16>>3]=L;o[x+24>>2]=p;Cr(e,4,3092,x)}o[e+516>>2]=i;if(!m){g=e+520|0;m=o[g>>2]|0;if((m|0)==16){if(r[11697]|0)Cr(e,4,3124,A);o[g>>2]=0;m=0}if(d)m=e+916|0;else{o[g>>2]=m+1;m=e+524+(m*24|0)|0}s[m>>2]=t;s[m+4>>2]=n;o[m+8>>2]=u;o[m+12>>2]=a;o[m+16>>2]=o[e+908>>2];o[m+20>>2]=o[e+912>>2];m=0}}if(d){o[e+416>>2]=o[e+908>>2];o[e+420>>2]=o[e+912>>2];r[e+985>>0]=1;r[O>>0]=0}o[2279]=(o[2279]|0)+-1;o[e+512>>2]=o[2278];h=I;return P|(m|0)==0|0}function Sr(e,t,n){e=e|0;t=t|0;n=Y(n);var r=ft;r=Y(Vr(e,t,n));return Y(r+Y(qr(e,t,n)))}function Cr(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=h;h=h+16|0;i=u;o[i>>2]=r;if(!e)r=0;else r=o[e+976>>2]|0;Br(r,e,t,n,i);h=u;return}function kr(e){e=e|0;return(e>>>0>60?3201:3201+(60-e)|0)|0}function Tr(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+32|0;n=i+12|0;r=i;o[n>>2]=o[254];o[n+4>>2]=o[255];o[n+8>>2]=o[256];o[r>>2]=o[257];o[r+4>>2]=o[258];o[r+8>>2]=o[259];if((e|0)>2)e=11699;else e=o[(t?r:n)+(e<<2)>>2]|0;h=i;return e|0}function xr(e,t,n,i,a,l,c,f,p,v){e=e|0;t=Y(t);n=Y(n);i=i|0;a=a|0;l=l|0;c=Y(c);f=Y(f);p=p|0;v=v|0;var m=0,g=0,y=0,_=0,b=ft,w=ft,E=ft,D=ft,S=ft,C=ft,k=ft,T=0,x=0,A=0,O=ft,P=ft,I=0,N=ft,M=0,R=0,F=0,L=0,B=0,j=0,U=0,z=0,W=0,H=0,V=0,q=0,G=0,$=0,K=0,X=0,Q=0,J=0,Z=ft,ee=ft,te=ft,ne=ft,re=ft,ie=0,oe=0,ue=0,ae=0,le=0,se=ft,ce=ft,fe=ft,de=ft,pe=ft,he=ft,ve=0,me=ft,ge=ft,ye=ft,_e=ft,be=ft,we=ft,Ee=0,De=0,Se=ft,Ce=ft,ke=0,Te=0,xe=0,Ae=0,Oe=ft,Pe=0,Ie=0,Ne=0,Me=0,Re=0,Fe=0,Le=0,Be=ft,je=0,Ue=0;Le=h;h=h+16|0;ie=Le+12|0;oe=Le+8|0;ue=Le+4|0;ae=Le;Rt(e,(a|0)==0|(wt(t)|0)^1,3326);Rt(e,(l|0)==0|(wt(n)|0)^1,3406);Ie=Yr(e,i)|0;o[e+496>>2]=Ie;Re=Kr(2,Ie)|0;Fe=Kr(0,Ie)|0;s[e+440>>2]=Y(Vr(e,Re,c));s[e+444>>2]=Y(qr(e,Re,c));s[e+428>>2]=Y(Vr(e,Fe,c));s[e+436>>2]=Y(qr(e,Fe,c));s[e+464>>2]=Y(Xr(e,Re));s[e+468>>2]=Y(Qr(e,Re));s[e+452>>2]=Y(Xr(e,Fe));s[e+460>>2]=Y(Qr(e,Fe));s[e+488>>2]=Y(Jr(e,Re,c));s[e+492>>2]=Y(Zr(e,Re,c));s[e+476>>2]=Y(Jr(e,Fe,c));s[e+484>>2]=Y(Zr(e,Fe,c));do{if(!(o[e+964>>2]|0)){Ne=e+948|0;Me=(o[e+952>>2]|0)-(o[Ne>>2]|0)>>2;if(!Me){ti(e,t,n,a,l,c,f);break}if(!p?ni(e,t,n,a,l,c,f)|0:0)break;Wt(e);X=e+508|0;r[X>>0]=0;Re=Kr(o[e+4>>2]|0,Ie)|0;Fe=ri(Re,Ie)|0;Pe=Gr(Re)|0;Q=o[e+8>>2]|0;Te=e+28|0;J=(o[Te>>2]|0)!=0;be=Pe?c:f;Se=Pe?f:c;Z=Y(ii(e,Re,c));ee=Y(oi(e,Re,c));b=Y(ii(e,Fe,c));we=Y(ui(e,Re,c));Ce=Y(ui(e,Fe,c));A=Pe?a:l;ke=Pe?l:a;Oe=Pe?we:Ce;S=Pe?Ce:we;_e=Y(Sr(e,2,c));D=Y(Sr(e,0,c));w=Y(Y(Nr(e+364|0,c))-Oe);E=Y(Y(Nr(e+380|0,c))-Oe);C=Y(Y(Nr(e+372|0,f))-S);k=Y(Y(Nr(e+388|0,f))-S);te=Pe?w:C;ne=Pe?E:k;_e=Y(t-_e);t=Y(_e-Oe);if(wt(t)|0)Oe=t;else Oe=Y(NT(Y(RT(t,E)),w));ge=Y(n-D);t=Y(ge-S);if(wt(t)|0)ye=t;else ye=Y(NT(Y(RT(t,k)),C));w=Pe?Oe:ye;me=Pe?ye:Oe;e:do{if((A|0)==1){i=0;g=0;while(1){m=Pt(e,g)|0;if(!i){if(Y(li(m))>Y(0.0)?Y(si(m))>Y(0.0):0)i=m;else i=0}else if(ai(m)|0){_=0;break e}g=g+1|0;if(g>>>0>=Me>>>0){_=i;break}}}else _=0}while(0);T=_+500|0;x=_+504|0;i=0;m=0;t=Y(0.0);y=0;do{g=o[(o[Ne>>2]|0)+(y<<2)>>2]|0;if((o[g+36>>2]|0)==1){ci(g);r[g+985>>0]=1;r[g+984>>0]=0}else{Pr(g);if(p)Mr(g,Yr(g,Ie)|0,w,me,Oe);do{if((o[g+24>>2]|0)!=1){if((g|0)==(_|0)){o[T>>2]=o[2278];s[x>>2]=Y(0.0);break}else{fi(e,g,Oe,a,ye,Oe,ye,l,Ie,v);break}}else{if(m|0)o[m+960>>2]=g;o[g+960>>2]=0;m=g;i=(i|0)==0?g:i}}while(0);he=Y(s[g+504>>2]);t=Y(t+Y(he+Y(Sr(g,Re,Oe))))}y=y+1|0}while((y|0)!=(Me|0));F=t>w;ve=J&((A|0)==2&F)?1:A;M=(ke|0)==1;B=M&(p^1);j=(ve|0)==1;U=(ve|0)==2;z=976+(Re<<2)|0;W=(ke|2|0)==2;$=M&(J^1);H=1040+(Fe<<2)|0;V=1040+(Re<<2)|0;q=976+(Fe<<2)|0;G=(ke|0)!=1;F=J&((A|0)!=0&F);R=e+976|0;M=M^1;t=w;I=0;L=0;he=Y(0.0);re=Y(0.0);while(1){e:do{if(I>>>0>>0){x=o[Ne>>2]|0;y=0;k=Y(0.0);C=Y(0.0);E=Y(0.0);w=Y(0.0);g=0;m=0;_=I;while(1){T=o[x+(_<<2)>>2]|0;if((o[T+36>>2]|0)!=1?(o[T+940>>2]=L,(o[T+24>>2]|0)!=1):0){D=Y(Sr(T,Re,Oe));K=o[z>>2]|0;n=Y(Nr(T+380+(K<<3)|0,be));S=Y(s[T+504>>2]);n=Y(RT(n,S));n=Y(NT(Y(Nr(T+364+(K<<3)|0,be)),n));if(J&(y|0)!=0&Y(D+Y(C+n))>t){l=y;D=k;A=_;break e}D=Y(D+n);n=Y(C+D);D=Y(k+D);if(ai(T)|0){E=Y(E+Y(li(T)));w=Y(w-Y(S*Y(si(T))))}if(m|0)o[m+960>>2]=T;o[T+960>>2]=0;y=y+1|0;m=T;g=(g|0)==0?T:g}else{D=k;n=C}_=_+1|0;if(_>>>0>>0){k=D;C=n}else{l=y;A=_;break}}}else{l=0;D=Y(0.0);E=Y(0.0);w=Y(0.0);g=0;A=I}}while(0);K=E>Y(0.0)&EY(0.0)&wne&((wt(ne)|0)^1))){if(!(r[(o[R>>2]|0)+3>>0]|0)){if(!(O==Y(0.0))?!(Y(li(e))==Y(0.0)):0){K=53;break}t=D;K=53}else K=51}else{t=ne;K=51}}else{t=te;K=51}}else K=51}while(0);if((K|0)==51){K=0;if(wt(t)|0)K=53;else{P=Y(t-D);N=t}}if((K|0)==53){K=0;if(D>2]|0;_=PY(0.0);C=Y(P/O);E=Y(0.0);D=Y(0.0);t=Y(0.0);m=g;do{n=Y(Nr(m+380+(y<<3)|0,be));w=Y(Nr(m+364+(y<<3)|0,be));w=Y(RT(n,Y(NT(w,Y(s[m+504>>2])))));if(_){n=Y(w*Y(si(m)));if(n!=Y(-0.0)?(Be=Y(w-Y(S*n)),se=Y(di(m,Re,Be,N,Oe)),Be!=se):0){E=Y(E-Y(se-w));t=Y(t+n)}}else if((T?(ce=Y(li(m)),ce!=Y(0.0)):0)?(Be=Y(w+Y(C*ce)),fe=Y(di(m,Re,Be,N,Oe)),Be!=fe):0){E=Y(E-Y(fe-w));D=Y(D-ce)}m=o[m+960>>2]|0}while((m|0)!=0);t=Y(k+t);w=Y(P+E);if(!le){S=Y(O+D);_=o[z>>2]|0;T=wY(0.0);S=Y(w/S);t=Y(0.0);do{Be=Y(Nr(g+380+(_<<3)|0,be));E=Y(Nr(g+364+(_<<3)|0,be));E=Y(RT(Be,Y(NT(E,Y(s[g+504>>2])))));if(T){Be=Y(E*Y(si(g)));w=Y(-Be);if(Be!=Y(-0.0)){Be=Y(C*w);w=Y(di(g,Re,Y(E+(x?w:Be)),N,Oe))}else w=E}else if(y?(de=Y(li(g)),de!=Y(0.0)):0)w=Y(di(g,Re,Y(E+Y(S*de)),N,Oe));else w=E;t=Y(t-Y(w-E));D=Y(Sr(g,Re,Oe));n=Y(Sr(g,Fe,Oe));w=Y(w+D);s[oe>>2]=w;o[ae>>2]=1;E=Y(s[g+396>>2]);e:do{if(wt(E)|0){m=wt(me)|0;do{if(!m){if(F|(Ir(g,Fe,me)|0|M))break;if((pi(e,g)|0)!=4)break;if((o[(hi(g,Fe)|0)+4>>2]|0)==3)break;if((o[(vi(g,Fe)|0)+4>>2]|0)==3)break;s[ie>>2]=me;o[ue>>2]=1;break e}}while(0);if(Ir(g,Fe,me)|0){m=o[g+992+(o[q>>2]<<2)>>2]|0;Be=Y(n+Y(Nr(m,me)));s[ie>>2]=Be;m=G&(o[m+4>>2]|0)==2;o[ue>>2]=((wt(Be)|0|m)^1)&1;break}else{s[ie>>2]=me;o[ue>>2]=m?0:2;break}}else{Be=Y(w-D);O=Y(Be/E);Be=Y(E*Be);o[ue>>2]=1;s[ie>>2]=Y(n+(Pe?O:Be))}}while(0);mi(g,Re,N,Oe,ae,oe);mi(g,Fe,me,Oe,ue,ie);do{if(!(Ir(g,Fe,me)|0)?(pi(e,g)|0)==4:0){if((o[(hi(g,Fe)|0)+4>>2]|0)==3){m=0;break}m=(o[(vi(g,Fe)|0)+4>>2]|0)!=3}else m=0}while(0);Be=Y(s[oe>>2]);O=Y(s[ie>>2]);je=o[ae>>2]|0;Ue=o[ue>>2]|0;Dr(g,Pe?Be:O,Pe?O:Be,Ie,Pe?je:Ue,Pe?Ue:je,Oe,ye,p&(m^1),3488,v)|0;r[X>>0]=r[X>>0]|r[g+508>>0];g=o[g+960>>2]|0}while((g|0)!=0)}else t=Y(0.0)}else t=Y(0.0);t=Y(P+t);Ue=t>0]=Ue|u[X>>0];if(U&t>Y(0.0)){m=o[z>>2]|0;if((o[e+364+(m<<3)+4>>2]|0)!=0?(pe=Y(Nr(e+364+(m<<3)|0,be)),pe>=Y(0.0)):0)w=Y(NT(Y(0.0),Y(pe-Y(N-t))));else w=Y(0.0)}else w=t;T=I>>>0>>0;if(T){_=o[Ne>>2]|0;y=I;m=0;do{g=o[_+(y<<2)>>2]|0;if(!(o[g+24>>2]|0)){m=((o[(hi(g,Re)|0)+4>>2]|0)==3&1)+m|0;m=m+((o[(vi(g,Re)|0)+4>>2]|0)==3&1)|0}y=y+1|0}while((y|0)!=(A|0));if(m){D=Y(0.0);n=Y(0.0)}else K=101}else K=101;e:do{if((K|0)==101){K=0;switch(Q|0){case 1:{m=0;D=Y(w*Y(.5));n=Y(0.0);break e}case 2:{m=0;D=w;n=Y(0.0);break e}case 3:{if(l>>>0<=1){m=0;D=Y(0.0);n=Y(0.0);break e}n=Y((l+-1|0)>>>0);m=0;D=Y(0.0);n=Y(Y(NT(w,Y(0.0)))/n);break e}case 5:{n=Y(w/Y((l+1|0)>>>0));m=0;D=n;break e}case 4:{n=Y(w/Y(l>>>0));m=0;D=Y(n*Y(.5));break e}default:{m=0;D=Y(0.0);n=Y(0.0);break e}}}}while(0);t=Y(Z+D);if(T){E=Y(w/Y(m|0));y=o[Ne>>2]|0;g=I;w=Y(0.0);do{m=o[y+(g<<2)>>2]|0;e:do{if((o[m+36>>2]|0)!=1){switch(o[m+24>>2]|0){case 1:{if(gi(m,Re)|0){if(!p)break e;Be=Y(yi(m,Re,N));Be=Y(Be+Y(Xr(e,Re)));Be=Y(Be+Y(Vr(m,Re,Oe)));s[m+400+(o[V>>2]<<2)>>2]=Be;break e}break}case 0:{Ue=(o[(hi(m,Re)|0)+4>>2]|0)==3;Be=Y(E+t);t=Ue?Be:t;if(p){Ue=m+400+(o[V>>2]<<2)|0;s[Ue>>2]=Y(t+Y(s[Ue>>2]))}Ue=(o[(vi(m,Re)|0)+4>>2]|0)==3;Be=Y(E+t);t=Ue?Be:t;if(B){Be=Y(n+Y(Sr(m,Re,Oe)));w=me;t=Y(t+Y(Be+Y(s[m+504>>2])));break e}else{t=Y(t+Y(n+Y(_i(m,Re,Oe))));w=Y(NT(w,Y(_i(m,Fe,Oe))));break e}}default:{}}if(p){Be=Y(D+Y(Xr(e,Re)));Ue=m+400+(o[V>>2]<<2)|0;s[Ue>>2]=Y(Be+Y(s[Ue>>2]))}}}while(0);g=g+1|0}while((g|0)!=(A|0))}else w=Y(0.0);n=Y(ee+t);if(W)D=Y(Y(di(e,Fe,Y(Ce+w),Se,c))-Ce);else D=me;E=Y(Y(di(e,Fe,Y(Ce+($?me:w)),Se,c))-Ce);if(T&p){g=I;do{y=o[(o[Ne>>2]|0)+(g<<2)>>2]|0;do{if((o[y+36>>2]|0)!=1){if((o[y+24>>2]|0)==1){if(gi(y,Fe)|0){Be=Y(yi(y,Fe,me));Be=Y(Be+Y(Xr(e,Fe)));Be=Y(Be+Y(Vr(y,Fe,Oe)));m=o[H>>2]|0;s[y+400+(m<<2)>>2]=Be;if(!(wt(Be)|0))break}else m=o[H>>2]|0;Be=Y(Xr(e,Fe));s[y+400+(m<<2)>>2]=Y(Be+Y(Vr(y,Fe,Oe)));break}m=pi(e,y)|0;do{if((m|0)==4){if((o[(hi(y,Fe)|0)+4>>2]|0)==3){K=139;break}if((o[(vi(y,Fe)|0)+4>>2]|0)==3){K=139;break}if(Ir(y,Fe,me)|0){t=b;break}je=o[y+908+(o[z>>2]<<2)>>2]|0;o[ie>>2]=je;t=Y(s[y+396>>2]);Ue=wt(t)|0;w=(o[d>>2]=je,Y(s[d>>2]));if(Ue)t=E;else{P=Y(Sr(y,Fe,Oe));Be=Y(w/t);t=Y(t*w);t=Y(P+(Pe?Be:t))}s[oe>>2]=t;s[ie>>2]=Y(Y(Sr(y,Re,Oe))+w);o[ue>>2]=1;o[ae>>2]=1;mi(y,Re,N,Oe,ue,ie);mi(y,Fe,me,Oe,ae,oe);t=Y(s[ie>>2]);P=Y(s[oe>>2]);Be=Pe?t:P;t=Pe?P:t;Ue=((wt(Be)|0)^1)&1;Dr(y,Be,t,Ie,Ue,((wt(t)|0)^1)&1,Oe,ye,1,3493,v)|0;t=b}else K=139}while(0);e:do{if((K|0)==139){K=0;t=Y(D-Y(_i(y,Fe,Oe)));do{if((o[(hi(y,Fe)|0)+4>>2]|0)==3){if((o[(vi(y,Fe)|0)+4>>2]|0)!=3)break;t=Y(b+Y(NT(Y(0.0),Y(t*Y(.5)))));break e}}while(0);if((o[(vi(y,Fe)|0)+4>>2]|0)==3){t=b;break}if((o[(hi(y,Fe)|0)+4>>2]|0)==3){t=Y(b+Y(NT(Y(0.0),t)));break}switch(m|0){case 1:{t=b;break e}case 2:{t=Y(b+Y(t*Y(.5)));break e}default:{t=Y(b+t);break e}}}}while(0);Be=Y(he+t);Ue=y+400+(o[H>>2]<<2)|0;s[Ue>>2]=Y(Be+Y(s[Ue>>2]))}}while(0);g=g+1|0}while((g|0)!=(A|0))}he=Y(he+E);re=Y(NT(re,n));l=L+1|0;if(A>>>0>=Me>>>0)break;else{t=N;I=A;L=l}}do{if(p){m=l>>>0>1;if(!m?!(bi(e)|0):0)break;if(!(wt(me)|0)){t=Y(me-he);e:do{switch(o[e+12>>2]|0){case 3:{b=Y(b+t);C=Y(0.0);break}case 2:{b=Y(b+Y(t*Y(.5)));C=Y(0.0);break}case 4:{if(me>he)C=Y(t/Y(l>>>0));else C=Y(0.0);break}case 7:if(me>he){b=Y(b+Y(t/Y(l<<1>>>0)));C=Y(t/Y(l>>>0));C=m?C:Y(0.0);break e}else{b=Y(b+Y(t*Y(.5)));C=Y(0.0);break e}case 6:{C=Y(t/Y(L>>>0));C=me>he&m?C:Y(0.0);break}default:C=Y(0.0)}}while(0);if(l|0){T=1040+(Fe<<2)|0;x=976+(Fe<<2)|0;_=0;g=0;while(1){e:do{if(g>>>0>>0){w=Y(0.0);E=Y(0.0);t=Y(0.0);y=g;while(1){m=o[(o[Ne>>2]|0)+(y<<2)>>2]|0;do{if((o[m+36>>2]|0)!=1?(o[m+24>>2]|0)==0:0){if((o[m+940>>2]|0)!=(_|0))break e;if(wi(m,Fe)|0){Be=Y(s[m+908+(o[x>>2]<<2)>>2]);t=Y(NT(t,Y(Be+Y(Sr(m,Fe,Oe)))))}if((pi(e,m)|0)!=5)break;pe=Y(Ei(m));pe=Y(pe+Y(Vr(m,0,Oe)));Be=Y(s[m+912>>2]);Be=Y(Y(Be+Y(Sr(m,0,Oe)))-pe);pe=Y(NT(E,pe));Be=Y(NT(w,Be));w=Be;E=pe;t=Y(NT(t,Y(pe+Be)))}}while(0);m=y+1|0;if(m>>>0>>0)y=m;else{y=m;break}}}else{E=Y(0.0);t=Y(0.0);y=g}}while(0);S=Y(C+t);n=b;b=Y(b+S);if(g>>>0>>0){D=Y(n+E);m=g;do{g=o[(o[Ne>>2]|0)+(m<<2)>>2]|0;e:do{if((o[g+36>>2]|0)!=1?(o[g+24>>2]|0)==0:0)switch(pi(e,g)|0){case 1:{Be=Y(n+Y(Vr(g,Fe,Oe)));s[g+400+(o[T>>2]<<2)>>2]=Be;break e}case 3:{Be=Y(Y(b-Y(qr(g,Fe,Oe)))-Y(s[g+908+(o[x>>2]<<2)>>2]));s[g+400+(o[T>>2]<<2)>>2]=Be;break e}case 2:{Be=Y(n+Y(Y(S-Y(s[g+908+(o[x>>2]<<2)>>2]))*Y(.5)));s[g+400+(o[T>>2]<<2)>>2]=Be;break e}case 4:{Be=Y(n+Y(Vr(g,Fe,Oe)));s[g+400+(o[T>>2]<<2)>>2]=Be;if(Ir(g,Fe,me)|0)break e;if(Pe){w=Y(s[g+908>>2]);t=Y(w+Y(Sr(g,Re,Oe)));E=S}else{E=Y(s[g+912>>2]);E=Y(E+Y(Sr(g,Fe,Oe)));t=S;w=Y(s[g+908>>2])}if(vr(t,w)|0?vr(E,Y(s[g+912>>2]))|0:0)break e;Dr(g,t,E,Ie,1,1,Oe,ye,1,3501,v)|0;break e}case 5:{s[g+404>>2]=Y(Y(D-Y(Ei(g)))+Y(yi(g,0,me)));break e}default:break e}}while(0);m=m+1|0}while((m|0)!=(y|0))}_=_+1|0;if((_|0)==(l|0))break;else g=y}}}}}while(0);s[e+908>>2]=Y(di(e,2,_e,c,c));s[e+912>>2]=Y(di(e,0,ge,f,c));if((ve|0)!=0?(Ee=o[e+32>>2]|0,De=(ve|0)==2,!(De&(Ee|0)!=2)):0){if(De&(Ee|0)==2){t=Y(we+N);t=Y(NT(Y(RT(t,Y(Di(e,Re,re,be)))),we));K=198}}else{t=Y(di(e,Re,re,be,c));K=198}if((K|0)==198)s[e+908+(o[976+(Re<<2)>>2]<<2)>>2]=t;if((ke|0)!=0?(xe=o[e+32>>2]|0,Ae=(ke|0)==2,!(Ae&(xe|0)!=2)):0){if(Ae&(xe|0)==2){t=Y(Ce+me);t=Y(NT(Y(RT(t,Y(Di(e,Fe,Y(Ce+he),Se)))),Ce));K=204}}else{t=Y(di(e,Fe,Y(Ce+he),Se,c));K=204}if((K|0)==204)s[e+908+(o[976+(Fe<<2)>>2]<<2)>>2]=t;if(p){if((o[Te>>2]|0)==2){g=976+(Fe<<2)|0;y=1040+(Fe<<2)|0;m=0;do{_=Pt(e,m)|0;if(!(o[_+24>>2]|0)){je=o[g>>2]|0;Be=Y(s[e+908+(je<<2)>>2]);Ue=_+400+(o[y>>2]<<2)|0;Be=Y(Be-Y(s[Ue>>2]));s[Ue>>2]=Y(Be-Y(s[_+908+(je<<2)>>2]))}m=m+1|0}while((m|0)!=(Me|0))}if(i|0){m=Pe?ve:a;do{Si(e,i,Oe,m,ye,Ie,v);i=o[i+960>>2]|0}while((i|0)!=0)}m=(Re|2|0)==3;g=(Fe|2|0)==3;if(m|g){i=0;do{y=o[(o[Ne>>2]|0)+(i<<2)>>2]|0;if((o[y+36>>2]|0)!=1){if(m)Ci(e,y,Re);if(g)Ci(e,y,Fe)}i=i+1|0}while((i|0)!=(Me|0))}}}else ei(e,t,n,a,l,c,f)}while(0);h=Le;return}function Ar(e,t){e=e|0;t=Y(t);var n=0;St(e,t>=Y(0.0),3147);n=t==Y(0.0);s[e+4>>2]=n?Y(0.0):t;return}function Or(e,t,n,i){e=e|0;t=Y(t);n=Y(n);i=i|0;var u=ft,a=ft,l=0,c=0,f=0;o[2278]=(o[2278]|0)+1;Pr(e);if(!(Ir(e,2,t)|0)){u=Y(Nr(e+380|0,t));if(!(u>=Y(0.0))){f=((wt(t)|0)^1)&1;u=t}else f=2}else{u=Y(Nr(o[e+992>>2]|0,t));f=1;u=Y(u+Y(Sr(e,2,t)))}if(!(Ir(e,0,n)|0)){a=Y(Nr(e+388|0,n));if(!(a>=Y(0.0))){c=((wt(n)|0)^1)&1;a=n}else c=2}else{a=Y(Nr(o[e+996>>2]|0,n));c=1;a=Y(a+Y(Sr(e,0,t)))}l=e+976|0;if(Dr(e,u,a,i,f,c,t,n,1,3189,o[l>>2]|0)|0?(Mr(e,o[e+496>>2]|0,t,n,t),Rr(e,Y(s[(o[l>>2]|0)+4>>2]),Y(0.0),Y(0.0)),r[11696]|0):0)mr(e,7);return}function Pr(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;a=l+24|0;u=l+16|0;r=l+8|0;i=l;n=0;do{t=e+380+(n<<3)|0;if(!((o[e+380+(n<<3)+4>>2]|0)!=0?(s=t,c=o[s+4>>2]|0,f=r,o[f>>2]=o[s>>2],o[f+4>>2]=c,f=e+364+(n<<3)|0,c=o[f+4>>2]|0,s=i,o[s>>2]=o[f>>2],o[s+4>>2]=c,o[u>>2]=o[r>>2],o[u+4>>2]=o[r+4>>2],o[a>>2]=o[i>>2],o[a+4>>2]=o[i+4>>2],hr(u,a)|0):0))t=e+348+(n<<3)|0;o[e+992+(n<<2)>>2]=t;n=n+1|0}while((n|0)!=2);h=l;return}function Ir(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0;e=o[e+992+(o[976+(t<<2)>>2]<<2)>>2]|0;switch(o[e+4>>2]|0){case 0:case 3:{e=0;break}case 1:{if(Y(s[e>>2])>2])>2]|0){case 2:{t=Y(Y(Y(s[e>>2])*t)/Y(100.0));break}case 1:{t=Y(s[e>>2]);break}default:t=Y(E)}return Y(t)}function Mr(e,t,n,r,i){e=e|0;t=t|0;n=Y(n);r=Y(r);i=Y(i);var u=0,a=ft;t=o[e+944>>2]|0?t:1;u=Kr(o[e+4>>2]|0,t)|0;t=ri(u,t)|0;n=Y(Pi(e,u,n));r=Y(Pi(e,t,r));a=Y(n+Y(Vr(e,u,i)));s[e+400+(o[1040+(u<<2)>>2]<<2)>>2]=a;n=Y(n+Y(qr(e,u,i)));s[e+400+(o[1e3+(u<<2)>>2]<<2)>>2]=n;n=Y(r+Y(Vr(e,t,i)));s[e+400+(o[1040+(t<<2)>>2]<<2)>>2]=n;i=Y(r+Y(qr(e,t,i)));s[e+400+(o[1e3+(t<<2)>>2]<<2)>>2]=i;return}function Rr(e,t,n,r){e=e|0;t=Y(t);n=Y(n);r=Y(r);var i=0,u=0,a=ft,l=ft,c=0,f=0,d=ft,p=0,h=ft,v=ft,m=ft,g=ft;if(!(t==Y(0.0))){i=e+400|0;g=Y(s[i>>2]);u=e+404|0;m=Y(s[u>>2]);p=e+416|0;v=Y(s[p>>2]);f=e+420|0;a=Y(s[f>>2]);h=Y(g+n);d=Y(m+r);r=Y(h+v);l=Y(d+a);c=(o[e+988>>2]|0)==1;s[i>>2]=Y(yr(g,t,0,c));s[u>>2]=Y(yr(m,t,0,c));n=Y(LT(Y(v*t),Y(1.0)));if(vr(n,Y(0.0))|0)u=0;else u=(vr(n,Y(1.0))|0)^1;n=Y(LT(Y(a*t),Y(1.0)));if(vr(n,Y(0.0))|0)i=0;else i=(vr(n,Y(1.0))|0)^1;g=Y(yr(r,t,c&u,c&(u^1)));s[p>>2]=Y(g-Y(yr(h,t,0,c)));g=Y(yr(l,t,c&i,c&(i^1)));s[f>>2]=Y(g-Y(yr(d,t,0,c)));u=(o[e+952>>2]|0)-(o[e+948>>2]|0)>>2;if(u|0){i=0;do{Rr(Pt(e,i)|0,t,h,d);i=i+1|0}while((i|0)!=(u|0))}}return}function Fr(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;switch(n|0){case 5:case 0:{e=oT(o[489]|0,r,i)|0;break}default:e=jT(r,i)|0}return e|0}function Lr(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;i=h;h=h+16|0;u=i;o[u>>2]=r;Br(e,0,t,n,u);h=i;return}function Br(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;e=e|0?e:956;xA[o[e+8>>2]&1](e,t,n,r,i)|0;if((n|0)==5)Ye();else return}function jr(e,t,n){e=e|0;t=t|0;n=n|0;r[e+t>>0]=n&1;return}function Ur(e,t){e=e|0;t=t|0;var n=0,r=0;o[e>>2]=0;o[e+4>>2]=0;o[e+8>>2]=0;n=t+4|0;r=(o[n>>2]|0)-(o[t>>2]|0)>>2;if(r|0){zr(e,r);Wr(e,o[t>>2]|0,o[n>>2]|0,r)}return}function zr(e,t){e=e|0;t=t|0;var n=0;if((Hr(e)|0)>>>0>>0)UT(e);if(t>>>0>1073741823)Ye();else{n=$T(t<<2)|0;o[e+4>>2]=n;o[e>>2]=n;o[e+8>>2]=n+(t<<2);return}}function Wr(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;r=e+4|0;e=n-t|0;if((e|0)>0){ix(o[r>>2]|0,t|0,e|0)|0;o[r>>2]=(o[r>>2]|0)+(e>>>2<<2)}return}function Hr(e){e=e|0;return 1073741823}function Vr(e,t,n){e=e|0;t=t|0;n=Y(n);if(Gr(t)|0?(o[e+96>>2]|0)!=0:0)e=e+92|0;else e=Et(e+60|0,o[1040+(t<<2)>>2]|0,992)|0;return Y($r(e,n))}function qr(e,t,n){e=e|0;t=t|0;n=Y(n);if(Gr(t)|0?(o[e+104>>2]|0)!=0:0)e=e+100|0;else e=Et(e+60|0,o[1e3+(t<<2)>>2]|0,992)|0;return Y($r(e,n))}function Gr(e){e=e|0;return(e|1|0)==3|0}function $r(e,t){e=e|0;t=Y(t);if((o[e+4>>2]|0)==3)t=Y(0.0);else t=Y(Nr(e,t));return Y(t)}function Yr(e,t){e=e|0;t=t|0;e=o[e>>2]|0;return((e|0)==0?(t|0)>1?t:1:e)|0}function Kr(e,t){e=e|0;t=t|0;var n=0;e:do{if((t|0)==2){switch(e|0){case 2:{e=3;break e}case 3:break;default:{n=4;break e}}e=2}else n=4}while(0);return e|0}function Xr(e,t){e=e|0;t=t|0;var n=ft;if(!((Gr(t)|0?(o[e+312>>2]|0)!=0:0)?(n=Y(s[e+308>>2]),n>=Y(0.0)):0))n=Y(NT(Y(s[(Et(e+276|0,o[1040+(t<<2)>>2]|0,992)|0)>>2]),Y(0.0)));return Y(n)}function Qr(e,t){e=e|0;t=t|0;var n=ft;if(!((Gr(t)|0?(o[e+320>>2]|0)!=0:0)?(n=Y(s[e+316>>2]),n>=Y(0.0)):0))n=Y(NT(Y(s[(Et(e+276|0,o[1e3+(t<<2)>>2]|0,992)|0)>>2]),Y(0.0)));return Y(n)}function Jr(e,t,n){e=e|0;t=t|0;n=Y(n);var r=ft;if(!((Gr(t)|0?(o[e+240>>2]|0)!=0:0)?(r=Y(Nr(e+236|0,n)),r>=Y(0.0)):0))r=Y(NT(Y(Nr(Et(e+204|0,o[1040+(t<<2)>>2]|0,992)|0,n)),Y(0.0)));return Y(r)}function Zr(e,t,n){e=e|0;t=t|0;n=Y(n);var r=ft;if(!((Gr(t)|0?(o[e+248>>2]|0)!=0:0)?(r=Y(Nr(e+244|0,n)),r>=Y(0.0)):0))r=Y(NT(Y(Nr(Et(e+204|0,o[1e3+(t<<2)>>2]|0,992)|0,n)),Y(0.0)));return Y(r)}function ei(e,t,n,r,i,u,a){e=e|0;t=Y(t);n=Y(n);r=r|0;i=i|0;u=Y(u);a=Y(a);var l=ft,c=ft,f=ft,d=ft,p=ft,v=ft,m=0,g=0,y=0;y=h;h=h+16|0;m=y;g=e+964|0;Rt(e,(o[g>>2]|0)!=0,3519);l=Y(ui(e,2,t));c=Y(ui(e,0,t));f=Y(Sr(e,2,t));d=Y(Sr(e,0,t));if(wt(t)|0)p=t;else p=Y(NT(Y(0.0),Y(Y(t-f)-l)));if(wt(n)|0)v=n;else v=Y(NT(Y(0.0),Y(Y(n-d)-c)));if((r|0)==1&(i|0)==1){s[e+908>>2]=Y(di(e,2,Y(t-f),u,u));t=Y(di(e,0,Y(n-d),a,u))}else{OA[o[g>>2]&1](m,e,p,r,v,i);p=Y(l+Y(s[m>>2]));v=Y(t-f);s[e+908>>2]=Y(di(e,2,(r|2|0)==2?p:v,u,u));v=Y(c+Y(s[m+4>>2]));t=Y(n-d);t=Y(di(e,0,(i|2|0)==2?v:t,a,u))}s[e+912>>2]=t;h=y;return}function ti(e,t,n,r,i,o,u){e=e|0;t=Y(t);n=Y(n);r=r|0;i=i|0;o=Y(o);u=Y(u);var a=ft,l=ft,c=ft,f=ft;c=Y(ui(e,2,o));a=Y(ui(e,0,o));f=Y(Sr(e,2,o));l=Y(Sr(e,0,o));t=Y(t-f);s[e+908>>2]=Y(di(e,2,(r|2|0)==2?c:t,o,o));n=Y(n-l);s[e+912>>2]=Y(di(e,0,(i|2|0)==2?a:n,u,o));return}function ni(e,t,n,r,i,o,u){e=e|0;t=Y(t);n=Y(n);r=r|0;i=i|0;o=Y(o);u=Y(u);var a=0,l=ft,c=ft;a=(r|0)==2;if((!(t<=Y(0.0)&a)?!(n<=Y(0.0)&(i|0)==2):0)?!((r|0)==1&(i|0)==1):0)e=0;else{l=Y(Sr(e,0,o));c=Y(Sr(e,2,o));a=t>2]=Y(di(e,2,a?Y(0.0):t,o,o));t=Y(n-l);a=n>2]=Y(di(e,0,a?Y(0.0):t,u,o));e=1}return e|0}function ri(e,t){e=e|0;t=t|0;if(ki(e)|0)e=Kr(2,t)|0;else e=0;return e|0}function ii(e,t,n){e=e|0;t=t|0;n=Y(n);n=Y(Jr(e,t,n));return Y(n+Y(Xr(e,t)))}function oi(e,t,n){e=e|0;t=t|0;n=Y(n);n=Y(Zr(e,t,n));return Y(n+Y(Qr(e,t)))}function ui(e,t,n){e=e|0;t=t|0;n=Y(n);var r=ft;r=Y(ii(e,t,n));return Y(r+Y(oi(e,t,n)))}function ai(e){e=e|0;if(!(o[e+24>>2]|0)){if(Y(li(e))!=Y(0.0))e=1;else e=Y(si(e))!=Y(0.0)}else e=0;return e|0}function li(e){e=e|0;var t=ft;if(o[e+944>>2]|0){t=Y(s[e+44>>2]);if(wt(t)|0){t=Y(s[e+40>>2]);e=t>Y(0.0)&((wt(t)|0)^1);return Y(e?t:Y(0.0))}}else t=Y(0.0);return Y(t)}function si(e){e=e|0;var t=ft,n=0,i=ft;do{if(o[e+944>>2]|0){t=Y(s[e+48>>2]);if(wt(t)|0){n=r[(o[e+976>>2]|0)+2>>0]|0;if(n<<24>>24==0?(i=Y(s[e+40>>2]),i>24?Y(1.0):Y(0.0)}}else t=Y(0.0)}while(0);return Y(t)}function ci(e){e=e|0;var t=0,n=0;tx(e+400|0,0,540)|0;r[e+985>>0]=1;Wt(e);n=Ot(e)|0;if(n|0){t=e+948|0;e=0;do{ci(o[(o[t>>2]|0)+(e<<2)>>2]|0);e=e+1|0}while((e|0)!=(n|0))}return}function fi(e,t,n,r,i,u,a,l,c,f){e=e|0;t=t|0;n=Y(n);r=r|0;i=Y(i);u=Y(u);a=Y(a);l=l|0;c=c|0;f=f|0;var d=0,p=ft,v=0,m=0,g=ft,y=ft,_=0,b=ft,w=0,D=ft,S=0,C=0,k=0,T=0,x=0,A=0,O=0,P=0,I=0,N=0;I=h;h=h+16|0;k=I+12|0;T=I+8|0;x=I+4|0;A=I;P=Kr(o[e+4>>2]|0,c)|0;S=Gr(P)|0;p=Y(Nr(Ti(t)|0,S?u:a));C=Ir(t,2,u)|0;O=Ir(t,0,a)|0;do{if(!(wt(p)|0)?!(wt(S?n:i)|0):0){d=t+504|0;if(!(wt(Y(s[d>>2]))|0)){if(!(xi(o[t+976>>2]|0,0)|0))break;if((o[t+500>>2]|0)==(o[2278]|0))break}s[d>>2]=Y(NT(p,Y(ui(t,P,u))))}else v=7}while(0);do{if((v|0)==7){w=S^1;if(!(w|C^1)){a=Y(Nr(o[t+992>>2]|0,u));s[t+504>>2]=Y(NT(a,Y(ui(t,2,u))));break}if(!(S|O^1)){a=Y(Nr(o[t+996>>2]|0,a));s[t+504>>2]=Y(NT(a,Y(ui(t,0,u))));break}s[k>>2]=Y(E);s[T>>2]=Y(E);o[x>>2]=0;o[A>>2]=0;b=Y(Sr(t,2,u));D=Y(Sr(t,0,u));if(C){g=Y(b+Y(Nr(o[t+992>>2]|0,u)));s[k>>2]=g;o[x>>2]=1;m=1}else{m=0;g=Y(E)}if(O){p=Y(D+Y(Nr(o[t+996>>2]|0,a)));s[T>>2]=p;o[A>>2]=1;d=1}else{d=0;p=Y(E)}v=o[e+32>>2]|0;if(!(S&(v|0)==2)){if(wt(g)|0?!(wt(n)|0):0){s[k>>2]=n;o[x>>2]=2;m=2;g=n}}else v=2;if((!((v|0)==2&w)?wt(p)|0:0)?!(wt(i)|0):0){s[T>>2]=i;o[A>>2]=2;d=2;p=i}y=Y(s[t+396>>2]);_=wt(y)|0;do{if(!_){if((m|0)==1&w){s[T>>2]=Y(Y(g-b)/y);o[A>>2]=1;d=1;v=1;break}if(S&(d|0)==1){s[k>>2]=Y(y*Y(p-D));o[x>>2]=1;d=1;v=1}else v=m}else v=m}while(0);N=wt(n)|0;m=(pi(e,t)|0)!=4;if(!(S|C|((r|0)!=1|N)|(m|(v|0)==1))?(s[k>>2]=n,o[x>>2]=1,!_):0){s[T>>2]=Y(Y(n-b)/y);o[A>>2]=1;d=1}if(!(O|w|((l|0)!=1|(wt(i)|0))|(m|(d|0)==1))?(s[T>>2]=i,o[A>>2]=1,!_):0){s[k>>2]=Y(y*Y(i-D));o[x>>2]=1}mi(t,2,u,u,x,k);mi(t,0,a,u,A,T);n=Y(s[k>>2]);i=Y(s[T>>2]);Dr(t,n,i,c,o[x>>2]|0,o[A>>2]|0,u,a,0,3565,f)|0;a=Y(s[t+908+(o[976+(P<<2)>>2]<<2)>>2]);s[t+504>>2]=Y(NT(a,Y(ui(t,P,u))))}}while(0);o[t+500>>2]=o[2278];h=I;return}function di(e,t,n,r,i){e=e|0;t=t|0;n=Y(n);r=Y(r);i=Y(i);r=Y(Di(e,t,n,r));return Y(NT(r,Y(ui(e,t,i))))}function pi(e,t){e=e|0;t=t|0;t=t+20|0;t=o[((o[t>>2]|0)==0?e+16|0:t)>>2]|0;if((t|0)==5?ki(o[e+4>>2]|0)|0:0)t=1;return t|0}function hi(e,t){e=e|0;t=t|0;if(Gr(t)|0?(o[e+96>>2]|0)!=0:0)t=4;else t=o[1040+(t<<2)>>2]|0;return e+60+(t<<3)|0}function vi(e,t){e=e|0;t=t|0;if(Gr(t)|0?(o[e+104>>2]|0)!=0:0)t=5;else t=o[1e3+(t<<2)>>2]|0;return e+60+(t<<3)|0}function mi(e,t,n,r,i,u){e=e|0;t=t|0;n=Y(n);r=Y(r);i=i|0;u=u|0;n=Y(Nr(e+380+(o[976+(t<<2)>>2]<<3)|0,n));n=Y(n+Y(Sr(e,t,r)));switch(o[i>>2]|0){case 2:case 1:{i=wt(n)|0;r=Y(s[u>>2]);s[u>>2]=i|r>2]=2;s[u>>2]=n}break}default:{}}return}function gi(e,t){e=e|0;t=t|0;e=e+132|0;if(Gr(t)|0?(o[(Et(e,4,948)|0)+4>>2]|0)!=0:0)e=1;else e=(o[(Et(e,o[1040+(t<<2)>>2]|0,948)|0)+4>>2]|0)!=0;return e|0}function yi(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0;e=e+132|0;if(Gr(t)|0?(r=Et(e,4,948)|0,(o[r+4>>2]|0)!=0):0)i=4;else{r=Et(e,o[1040+(t<<2)>>2]|0,948)|0;if(!(o[r+4>>2]|0))n=Y(0.0);else i=4}if((i|0)==4)n=Y(Nr(r,n));return Y(n)}function _i(e,t,n){e=e|0;t=t|0;n=Y(n);var r=ft;r=Y(s[e+908+(o[976+(t<<2)>>2]<<2)>>2]);r=Y(r+Y(Vr(e,t,n)));return Y(r+Y(qr(e,t,n)))}function bi(e){e=e|0;var t=0,n=0,r=0;e:do{if(!(ki(o[e+4>>2]|0)|0)){if((o[e+16>>2]|0)!=5){n=Ot(e)|0;if(!n)t=0;else{t=0;while(1){r=Pt(e,t)|0;if((o[r+24>>2]|0)==0?(o[r+20>>2]|0)==5:0){t=1;break e}t=t+1|0;if(t>>>0>=n>>>0){t=0;break}}}}else t=1}else t=0}while(0);return t|0}function wi(e,t){e=e|0;t=t|0;var n=ft;n=Y(s[e+908+(o[976+(t<<2)>>2]<<2)>>2]);return n>=Y(0.0)&((wt(n)|0)^1)|0}function Ei(e){e=e|0;var t=ft,n=0,r=0,i=0,u=0,a=0,l=0,c=ft;n=o[e+968>>2]|0;if(!n){u=Ot(e)|0;do{if(u|0){n=0;i=0;while(1){r=Pt(e,i)|0;if(o[r+940>>2]|0){a=8;break}if((o[r+24>>2]|0)!=1){l=(pi(e,r)|0)==5;if(l){n=r;break}else n=(n|0)==0?r:n}i=i+1|0;if(i>>>0>=u>>>0){a=8;break}}if((a|0)==8)if(!n)break;t=Y(Ei(n));return Y(t+Y(s[n+404>>2]))}}while(0);t=Y(s[e+912>>2])}else{c=Y(s[e+908>>2]);t=Y(s[e+912>>2]);t=Y(pA[n&0](e,c,t));Rt(e,(wt(t)|0)^1,3573)}return Y(t)}function Di(e,t,n,r){e=e|0;t=t|0;n=Y(n);r=Y(r);var i=ft,o=0;if(!(ki(t)|0)){if(Gr(t)|0){t=0;o=3}else{r=Y(E);i=Y(E)}}else{t=1;o=3}if((o|0)==3){i=Y(Nr(e+364+(t<<3)|0,r));r=Y(Nr(e+380+(t<<3)|0,r))}o=r=Y(0.0)&((wt(r)|0)^1));n=o?r:n;o=i>=Y(0.0)&((wt(i)|0)^1)&n>2]|0,u)|0;m=ri(y,u)|0;g=Gr(y)|0;p=Y(Sr(t,2,n));h=Y(Sr(t,0,n));if(!(Ir(t,2,n)|0)){if(gi(t,2)|0?Ai(t,2)|0:0){l=Y(s[e+908>>2]);c=Y(Xr(e,2));c=Y(l-Y(c+Y(Qr(e,2))));l=Y(yi(t,2,n));l=Y(di(t,2,Y(c-Y(l+Y(Oi(t,2,n)))),n,n))}else l=Y(E)}else l=Y(p+Y(Nr(o[t+992>>2]|0,n)));if(!(Ir(t,0,i)|0)){if(gi(t,0)|0?Ai(t,0)|0:0){c=Y(s[e+912>>2]);b=Y(Xr(e,0));b=Y(c-Y(b+Y(Qr(e,0))));c=Y(yi(t,0,i));c=Y(di(t,0,Y(b-Y(c+Y(Oi(t,0,i)))),i,n))}else c=Y(E)}else c=Y(h+Y(Nr(o[t+996>>2]|0,i)));f=wt(l)|0;d=wt(c)|0;do{if(f^d?(v=Y(s[t+396>>2]),!(wt(v)|0)):0)if(f){l=Y(p+Y(Y(c-h)*v));break}else{b=Y(h+Y(Y(l-p)/v));c=d?b:c;break}}while(0);d=wt(l)|0;f=wt(c)|0;if(d|f){w=(d^1)&1;r=n>Y(0.0)&((r|0)!=0&d);l=g?l:r?n:l;Dr(t,l,c,u,g?w:r?2:w,d&(f^1)&1,l,c,0,3623,a)|0;l=Y(s[t+908>>2]);l=Y(l+Y(Sr(t,2,n)));c=Y(s[t+912>>2]);c=Y(c+Y(Sr(t,0,n)))}Dr(t,l,c,u,1,1,l,c,1,3635,a)|0;if(Ai(t,y)|0?!(gi(t,y)|0):0){w=o[976+(y<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(b-Y(s[t+908+(w<<2)>>2]));b=Y(b-Y(Qr(e,y)));b=Y(b-Y(qr(t,y,n)));b=Y(b-Y(Oi(t,y,g?n:i)));s[t+400+(o[1040+(y<<2)>>2]<<2)>>2]=b}else _=21;do{if((_|0)==21){if(!(gi(t,y)|0)?(o[e+8>>2]|0)==1:0){w=o[976+(y<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(Y(b-Y(s[t+908+(w<<2)>>2]))*Y(.5));s[t+400+(o[1040+(y<<2)>>2]<<2)>>2]=b;break}if(!(gi(t,y)|0)?(o[e+8>>2]|0)==2:0){w=o[976+(y<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(b-Y(s[t+908+(w<<2)>>2]));s[t+400+(o[1040+(y<<2)>>2]<<2)>>2]=b}}}while(0);if(Ai(t,m)|0?!(gi(t,m)|0):0){w=o[976+(m<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(b-Y(s[t+908+(w<<2)>>2]));b=Y(b-Y(Qr(e,m)));b=Y(b-Y(qr(t,m,n)));b=Y(b-Y(Oi(t,m,g?i:n)));s[t+400+(o[1040+(m<<2)>>2]<<2)>>2]=b}else _=30;do{if((_|0)==30?!(gi(t,m)|0):0){if((pi(e,t)|0)==2){w=o[976+(m<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(Y(b-Y(s[t+908+(w<<2)>>2]))*Y(.5));s[t+400+(o[1040+(m<<2)>>2]<<2)>>2]=b;break}w=(pi(e,t)|0)==3;if(w^(o[e+28>>2]|0)==2){w=o[976+(m<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(b-Y(s[t+908+(w<<2)>>2]));s[t+400+(o[1040+(m<<2)>>2]<<2)>>2]=b}}}while(0);return}function Ci(e,t,n){e=e|0;t=t|0;n=n|0;var r=ft,i=0;i=o[976+(n<<2)>>2]|0;r=Y(s[t+908+(i<<2)>>2]);r=Y(Y(s[e+908+(i<<2)>>2])-r);r=Y(r-Y(s[t+400+(o[1040+(n<<2)>>2]<<2)>>2]));s[t+400+(o[1e3+(n<<2)>>2]<<2)>>2]=r;return}function ki(e){e=e|0;return(e|1|0)==1|0}function Ti(e){e=e|0;var t=ft;switch(o[e+56>>2]|0){case 0:case 3:{t=Y(s[e+40>>2]);if(t>Y(0.0)&((wt(t)|0)^1))e=r[(o[e+976>>2]|0)+2>>0]|0?1056:992;else e=1056;break}default:e=e+52|0}return e|0}function xi(e,t){e=e|0;t=t|0;return(r[e+t>>0]|0)!=0|0}function Ai(e,t){e=e|0;t=t|0;e=e+132|0;if(Gr(t)|0?(o[(Et(e,5,948)|0)+4>>2]|0)!=0:0)e=1;else e=(o[(Et(e,o[1e3+(t<<2)>>2]|0,948)|0)+4>>2]|0)!=0;return e|0}function Oi(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0;e=e+132|0;if(Gr(t)|0?(r=Et(e,5,948)|0,(o[r+4>>2]|0)!=0):0)i=4;else{r=Et(e,o[1e3+(t<<2)>>2]|0,948)|0;if(!(o[r+4>>2]|0))n=Y(0.0);else i=4}if((i|0)==4)n=Y(Nr(r,n));return Y(n)}function Pi(e,t,n){e=e|0;t=t|0;n=Y(n);if(gi(e,t)|0)n=Y(yi(e,t,n));else n=Y(-Y(Oi(e,t,n)));return Y(n)}function Ii(e){e=Y(e);return(s[d>>2]=e,o[d>>2]|0)|0}function Ni(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>1073741823)Ye();else{i=$T(t<<2)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<2)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<2);return}function Mi(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>2)<<2)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Ri(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-4-t|0)>>>2)<<2);e=o[e>>2]|0;if(e|0)KT(e);return}function Fi(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;a=e+4|0;l=o[a>>2]|0;i=l-r|0;u=i>>2;e=t+(u<<2)|0;if(e>>>0>>0){r=l;do{o[r>>2]=o[e>>2];e=e+4|0;r=(o[a>>2]|0)+4|0;o[a>>2]=r}while(e>>>0>>0)}if(u|0)sx(l+(0-u<<2)|0,t|0,i|0)|0;return}function Li(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0;l=t+4|0;s=o[l>>2]|0;i=o[e>>2]|0;a=n;u=a-i|0;r=s+(0-(u>>2)<<2)|0;o[l>>2]=r;if((u|0)>0)ix(r|0,i|0,u|0)|0;i=e+4|0;u=t+8|0;r=(o[i>>2]|0)-a|0;if((r|0)>0){ix(o[u>>2]|0,n|0,r|0)|0;o[u>>2]=(o[u>>2]|0)+(r>>>2<<2)}a=o[e>>2]|0;o[e>>2]=o[l>>2];o[l>>2]=a;a=o[i>>2]|0;o[i>>2]=o[u>>2];o[u>>2]=a;a=e+8|0;n=t+12|0;e=o[a>>2]|0;o[a>>2]=o[n>>2];o[n>>2]=e;o[t>>2]=o[l>>2];return s|0}function Bi(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;a=o[t>>2]|0;u=o[n>>2]|0;if((a|0)!=(u|0)){i=e+8|0;n=((u+-4-a|0)>>>2)+1|0;e=a;r=o[i>>2]|0;do{o[r>>2]=o[e>>2];r=(o[i>>2]|0)+4|0;o[i>>2]=r;e=e+4|0}while((e|0)!=(u|0));o[t>>2]=a+(n<<2)}return}function ji(){_t();return}function Ui(){var e=0;e=$T(4)|0;zi(e);return e|0}function zi(e){e=e|0;o[e>>2]=Lt()|0;return}function Wi(e){e=e|0;if(e|0){Hi(e);KT(e)}return}function Hi(e){e=e|0;jt(o[e>>2]|0);return}function Vi(e,t,n){e=e|0;t=t|0;n=n|0;jr(o[e>>2]|0,t,n);return}function qi(e,t){e=e|0;t=Y(t);Ar(o[e>>2]|0,t);return}function Gi(e,t){e=e|0;t=t|0;return xi(o[e>>2]|0,t)|0}function $i(){var e=0;e=$T(8)|0;Yi(e,0);return e|0}function Yi(e,t){e=e|0;t=t|0;if(!t)t=Ct()|0;else t=Dt(o[t>>2]|0)|0;o[e>>2]=t;o[e+4>>2]=0;Jt(t,e);return}function Ki(e){e=e|0;var t=0;t=$T(8)|0;Yi(t,e);return t|0}function Xi(e){e=e|0;if(e|0){Qi(e);KT(e)}return}function Qi(e){e=e|0;var t=0;xt(o[e>>2]|0);t=e+4|0;e=o[t>>2]|0;o[t>>2]=0;if(e|0){Ji(e);KT(e)}return}function Ji(e){e=e|0;Zi(e);return}function Zi(e){e=e|0;e=o[e>>2]|0;if(e|0)rt(e|0);return}function eo(e){e=e|0;return Zt(e)|0}function to(e){e=e|0;var t=0,n=0;n=e+4|0;t=o[n>>2]|0;o[n>>2]=0;if(t|0){Ji(t);KT(t)}Mt(o[e>>2]|0);return}function no(e,t){e=e|0;t=t|0;Kt(o[e>>2]|0,o[t>>2]|0);return}function ro(e,t){e=e|0;t=t|0;fn(o[e>>2]|0,t);return}function io(e,t,n){e=e|0;t=t|0;n=+n;Cn(o[e>>2]|0,t,Y(n));return}function oo(e,t,n){e=e|0;t=t|0;n=+n;kn(o[e>>2]|0,t,Y(n));return}function uo(e,t){e=e|0;t=t|0;on(o[e>>2]|0,t);return}function ao(e,t){e=e|0;t=t|0;an(o[e>>2]|0,t);return}function lo(e,t){e=e|0;t=t|0;sn(o[e>>2]|0,t);return}function so(e,t){e=e|0;t=t|0;en(o[e>>2]|0,t);return}function co(e,t){e=e|0;t=t|0;pn(o[e>>2]|0,t);return}function fo(e,t){e=e|0;t=t|0;nn(o[e>>2]|0,t);return}function po(e,t,n){e=e|0;t=t|0;n=+n;xn(o[e>>2]|0,t,Y(n));return}function ho(e,t,n){e=e|0;t=t|0;n=+n;An(o[e>>2]|0,t,Y(n));return}function vo(e,t){e=e|0;t=t|0;Pn(o[e>>2]|0,t);return}function mo(e,t){e=e|0;t=t|0;vn(o[e>>2]|0,t);return}function go(e,t){e=e|0;t=t|0;gn(o[e>>2]|0,t);return}function yo(e,t){e=e|0;t=+t;_n(o[e>>2]|0,Y(t));return}function _o(e,t){e=e|0;t=+t;En(o[e>>2]|0,Y(t));return}function bo(e,t){e=e|0;t=+t;Dn(o[e>>2]|0,Y(t));return}function wo(e,t){e=e|0;t=+t;bn(o[e>>2]|0,Y(t));return}function Eo(e,t){e=e|0;t=+t;wn(o[e>>2]|0,Y(t));return}function Do(e,t){e=e|0;t=+t;Ln(o[e>>2]|0,Y(t));return}function So(e,t){e=e|0;t=+t;Bn(o[e>>2]|0,Y(t));return}function Co(e){e=e|0;jn(o[e>>2]|0);return}function ko(e,t){e=e|0;t=+t;zn(o[e>>2]|0,Y(t));return}function To(e,t){e=e|0;t=+t;Wn(o[e>>2]|0,Y(t));return}function xo(e){e=e|0;Hn(o[e>>2]|0);return}function Ao(e,t){e=e|0;t=+t;qn(o[e>>2]|0,Y(t));return}function Oo(e,t){e=e|0;t=+t;Gn(o[e>>2]|0,Y(t));return}function Po(e,t){e=e|0;t=+t;Yn(o[e>>2]|0,Y(t));return}function Io(e,t){e=e|0;t=+t;Kn(o[e>>2]|0,Y(t));return}function No(e,t){e=e|0;t=+t;Qn(o[e>>2]|0,Y(t));return}function Mo(e,t){e=e|0;t=+t;Jn(o[e>>2]|0,Y(t));return}function Ro(e,t){e=e|0;t=+t;er(o[e>>2]|0,Y(t));return}function Fo(e,t){e=e|0;t=+t;tr(o[e>>2]|0,Y(t));return}function Lo(e,t){e=e|0;t=+t;rr(o[e>>2]|0,Y(t));return}function Bo(e,t,n){e=e|0;t=t|0;n=+n;Rn(o[e>>2]|0,t,Y(n));return}function jo(e,t,n){e=e|0;t=t|0;n=+n;In(o[e>>2]|0,t,Y(n));return}function Uo(e,t,n){e=e|0;t=t|0;n=+n;Nn(o[e>>2]|0,t,Y(n));return}function zo(e){e=e|0;return dn(o[e>>2]|0)|0}function Wo(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;r=h;h=h+16|0;i=r;Tn(i,o[t>>2]|0,n);Ho(e,i);h=r;return}function Ho(e,t){e=e|0;t=t|0;Vo(e,o[t+4>>2]|0,+Y(s[t>>2]));return}function Vo(e,t,n){e=e|0;t=t|0;n=+n;o[e>>2]=t;c[e+8>>3]=n;return}function qo(e){e=e|0;return un(o[e>>2]|0)|0}function Go(e){e=e|0;return ln(o[e>>2]|0)|0}function $o(e){e=e|0;return cn(o[e>>2]|0)|0}function Yo(e){e=e|0;return tn(o[e>>2]|0)|0}function Ko(e){e=e|0;return hn(o[e>>2]|0)|0}function Xo(e){e=e|0;return rn(o[e>>2]|0)|0}function Qo(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;r=h;h=h+16|0;i=r;On(i,o[t>>2]|0,n);Ho(e,i);h=r;return}function Jo(e){e=e|0;return mn(o[e>>2]|0)|0}function Zo(e){e=e|0;return yn(o[e>>2]|0)|0}function eu(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Sn(r,o[t>>2]|0);Ho(e,r);h=n;return}function tu(e){e=e|0;return+ +Y(Xt(o[e>>2]|0))}function nu(e){e=e|0;return+ +Y(Qt(o[e>>2]|0))}function ru(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Un(r,o[t>>2]|0);Ho(e,r);h=n;return}function iu(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Vn(r,o[t>>2]|0);Ho(e,r);h=n;return}function ou(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;$n(r,o[t>>2]|0);Ho(e,r);h=n;return}function uu(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Xn(r,o[t>>2]|0);Ho(e,r);h=n;return}function au(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Zn(r,o[t>>2]|0);Ho(e,r);h=n;return}function lu(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;nr(r,o[t>>2]|0);Ho(e,r);h=n;return}function su(e){e=e|0;return+ +Y(ir(o[e>>2]|0))}function cu(e,t){e=e|0;t=t|0;return+ +Y(Fn(o[e>>2]|0,t))}function fu(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;r=h;h=h+16|0;i=r;Mn(i,o[t>>2]|0,n);Ho(e,i);h=r;return}function du(e,t,n){e=e|0;t=t|0;n=n|0;zt(o[e>>2]|0,o[t>>2]|0,n);return}function pu(e,t){e=e|0;t=t|0;Nt(o[e>>2]|0,o[t>>2]|0);return}function hu(e){e=e|0;return Ot(o[e>>2]|0)|0}function vu(e){e=e|0;e=Gt(o[e>>2]|0)|0;if(!e)e=0;else e=eo(e)|0;return e|0}function mu(e,t){e=e|0;t=t|0;e=Pt(o[e>>2]|0,t)|0;if(!e)e=0;else e=eo(e)|0;return e|0}function gu(e,t){e=e|0;t=t|0;var n=0,r=0;r=$T(4)|0;yu(r,t);n=e+4|0;t=o[n>>2]|0;o[n>>2]=r;if(t|0){Ji(t);KT(t)}Ut(o[e>>2]|0,1);return}function yu(e,t){e=e|0;t=t|0;Bu(e,t);return}function _u(e,t,n,r,i,o){e=e|0;t=t|0;n=Y(n);r=r|0;i=Y(i);o=o|0;var u=0,a=0;u=h;h=h+16|0;a=u;bu(a,Zt(t)|0,+n,r,+i,o);s[e>>2]=Y(+c[a>>3]);s[e+4>>2]=Y(+c[a+8>>3]);h=u;return}function bu(e,t,n,r,i,u){e=e|0;t=t|0;n=+n;r=r|0;i=+i;u=u|0;var a=0,l=0,s=0,f=0,d=0;a=h;h=h+32|0;d=a+8|0;f=a+20|0;s=a;l=a+16|0;c[d>>3]=n;o[f>>2]=r;c[s>>3]=i;o[l>>2]=u;wu(e,o[t+4>>2]|0,d,f,s,l);h=a;return}function wu(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;var a=0,l=0;a=h;h=h+16|0;l=a;Dk(l);t=Eu(t)|0;Du(e,t,+c[n>>3],o[r>>2]|0,+c[i>>3],o[u>>2]|0);Ck(l);h=a;return}function Eu(e){e=e|0;return o[e>>2]|0}function Du(e,t,n,r,i,o){e=e|0;t=t|0;n=+n;r=r|0;i=+i;o=o|0;var u=0;u=Cu(Su()|0)|0;n=+ku(n);r=Tu(r)|0;i=+ku(i);xu(e,ot(0,u|0,t|0,+n,r|0,+i,Tu(o)|0)|0);return}function Su(){var e=0;if(!(r[7608]|0)){Ru(9120);e=7608;o[e>>2]=1;o[e+4>>2]=0}return 9120}function Cu(e){e=e|0;return o[e+8>>2]|0}function ku(e){e=+e;return+ +Mu(e)}function Tu(e){e=e|0;return Nu(e)|0}function xu(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+32|0;n=i;r=t;if(!(r&1)){o[e>>2]=o[t>>2];o[e+4>>2]=o[t+4>>2];o[e+8>>2]=o[t+8>>2];o[e+12>>2]=o[t+12>>2]}else{Au(n,0);Be(r|0,n|0)|0;Ou(e,n);Pu(n)}h=i;return}function Au(e,t){e=e|0;t=t|0;Iu(e,t);o[e+8>>2]=0;r[e+24>>0]=0;return}function Ou(e,t){e=e|0;t=t|0;t=t+8|0;o[e>>2]=o[t>>2];o[e+4>>2]=o[t+4>>2];o[e+8>>2]=o[t+8>>2];o[e+12>>2]=o[t+12>>2];return}function Pu(e){e=e|0;r[e+24>>0]=0;return}function Iu(e,t){e=e|0;t=t|0;o[e>>2]=t;return}function Nu(e){e=e|0;return e|0}function Mu(e){e=+e;return+e}function Ru(e){e=e|0;Lu(e,Fu()|0,4);return}function Fu(){return 1064}function Lu(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;o[e+8>>2]=tt(t|0,n+1|0)|0;return}function Bu(e,t){e=e|0;t=t|0;t=o[t>>2]|0;o[e>>2]=t;Ae(t|0);return}function ju(e){e=e|0;var t=0,n=0;n=e+4|0;t=o[n>>2]|0;o[n>>2]=0;if(t|0){Ji(t);KT(t)}Ut(o[e>>2]|0,0);return}function Uu(e){e=e|0;$t(o[e>>2]|0);return}function zu(e){e=e|0;return Yt(o[e>>2]|0)|0}function Wu(e,t,n,r){e=e|0;t=+t;n=+n;r=r|0;Or(o[e>>2]|0,Y(t),Y(n),r);return}function Hu(e){e=e|0;return+ +Y(or(o[e>>2]|0))}function Vu(e){e=e|0;return+ +Y(ar(o[e>>2]|0))}function qu(e){e=e|0;return+ +Y(ur(o[e>>2]|0))}function Gu(e){e=e|0;return+ +Y(lr(o[e>>2]|0))}function $u(e){e=e|0;return+ +Y(sr(o[e>>2]|0))}function Yu(e){e=e|0;return+ +Y(cr(o[e>>2]|0))}function Ku(e,t){e=e|0;t=t|0;c[e>>3]=+Y(or(o[t>>2]|0));c[e+8>>3]=+Y(ar(o[t>>2]|0));c[e+16>>3]=+Y(ur(o[t>>2]|0));c[e+24>>3]=+Y(lr(o[t>>2]|0));c[e+32>>3]=+Y(sr(o[t>>2]|0));c[e+40>>3]=+Y(cr(o[t>>2]|0));return}function Xu(e,t){e=e|0;t=t|0;return+ +Y(fr(o[e>>2]|0,t))}function Qu(e,t){e=e|0;t=t|0;return+ +Y(dr(o[e>>2]|0,t))}function Ju(e,t){e=e|0;t=t|0;return+ +Y(pr(o[e>>2]|0,t))}function Zu(){return Ft()|0}function ea(){ta();na();ra();ia();oa();ua();return}function ta(){zb(11713,4938,1);return}function na(){tb(10448);return}function ra(){R_(10408);return}function ia(){Jy(10324);return}function oa(){qm(10096);return}function ua(){aa(9132);return}function aa(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0,b=0,w=0,E=0,D=0,S=0,C=0,k=0,T=0,x=0,A=0,O=0,P=0,I=0,N=0,M=0,R=0,F=0,L=0,B=0,j=0,U=0,z=0,W=0,H=0,V=0,q=0,G=0,$=0,Y=0,K=0,X=0,Q=0,J=0,Z=0,ee=0,te=0,ne=0,re=0,ie=0,oe=0,ue=0,ae=0,le=0,se=0,ce=0,fe=0,de=0,pe=0,he=0,ve=0,me=0,ge=0,ye=0,_e=0,be=0,we=0,Ee=0,De=0,Se=0,Ce=0,ke=0,Te=0,xe=0,Ae=0,Oe=0,Pe=0,Ie=0;t=h;h=h+672|0;n=t+656|0;Ie=t+648|0;Pe=t+640|0;Oe=t+632|0;Ae=t+624|0;xe=t+616|0;Te=t+608|0;ke=t+600|0;Ce=t+592|0;Se=t+584|0;De=t+576|0;Ee=t+568|0;we=t+560|0;be=t+552|0;_e=t+544|0;ye=t+536|0;ge=t+528|0;me=t+520|0;ve=t+512|0;he=t+504|0;pe=t+496|0;de=t+488|0;fe=t+480|0;ce=t+472|0;se=t+464|0;le=t+456|0;ae=t+448|0;ue=t+440|0;oe=t+432|0;ie=t+424|0;re=t+416|0;ne=t+408|0;te=t+400|0;ee=t+392|0;Z=t+384|0;J=t+376|0;Q=t+368|0;X=t+360|0;K=t+352|0;Y=t+344|0;$=t+336|0;G=t+328|0;q=t+320|0;V=t+312|0;H=t+304|0;W=t+296|0;z=t+288|0;U=t+280|0;j=t+272|0;B=t+264|0;L=t+256|0;F=t+248|0;R=t+240|0;M=t+232|0;N=t+224|0;I=t+216|0;P=t+208|0;O=t+200|0;A=t+192|0;x=t+184|0;T=t+176|0;k=t+168|0;C=t+160|0;S=t+152|0;D=t+144|0;E=t+136|0;w=t+128|0;b=t+120|0;_=t+112|0;y=t+104|0;g=t+96|0;m=t+88|0;v=t+80|0;p=t+72|0;d=t+64|0;f=t+56|0;c=t+48|0;s=t+40|0;l=t+32|0;a=t+24|0;u=t+16|0;i=t+8|0;r=t;la(e,3646);sa(e,3651,2)|0;ca(e,3665,2)|0;fa(e,3682,18)|0;o[Ie>>2]=19;o[Ie+4>>2]=0;o[n>>2]=o[Ie>>2];o[n+4>>2]=o[Ie+4>>2];da(e,3690,n)|0;o[Pe>>2]=1;o[Pe+4>>2]=0;o[n>>2]=o[Pe>>2];o[n+4>>2]=o[Pe+4>>2];pa(e,3696,n)|0;o[Oe>>2]=2;o[Oe+4>>2]=0;o[n>>2]=o[Oe>>2];o[n+4>>2]=o[Oe+4>>2];ha(e,3706,n)|0;o[Ae>>2]=1;o[Ae+4>>2]=0;o[n>>2]=o[Ae>>2];o[n+4>>2]=o[Ae+4>>2];va(e,3722,n)|0;o[xe>>2]=2;o[xe+4>>2]=0;o[n>>2]=o[xe>>2];o[n+4>>2]=o[xe+4>>2];va(e,3734,n)|0;o[Te>>2]=3;o[Te+4>>2]=0;o[n>>2]=o[Te>>2];o[n+4>>2]=o[Te+4>>2];ha(e,3753,n)|0;o[ke>>2]=4;o[ke+4>>2]=0;o[n>>2]=o[ke>>2];o[n+4>>2]=o[ke+4>>2];ha(e,3769,n)|0;o[Ce>>2]=5;o[Ce+4>>2]=0;o[n>>2]=o[Ce>>2];o[n+4>>2]=o[Ce+4>>2];ha(e,3783,n)|0;o[Se>>2]=6;o[Se+4>>2]=0;o[n>>2]=o[Se>>2];o[n+4>>2]=o[Se+4>>2];ha(e,3796,n)|0;o[De>>2]=7;o[De+4>>2]=0;o[n>>2]=o[De>>2];o[n+4>>2]=o[De+4>>2];ha(e,3813,n)|0;o[Ee>>2]=8;o[Ee+4>>2]=0;o[n>>2]=o[Ee>>2];o[n+4>>2]=o[Ee+4>>2];ha(e,3825,n)|0;o[we>>2]=3;o[we+4>>2]=0;o[n>>2]=o[we>>2];o[n+4>>2]=o[we+4>>2];va(e,3843,n)|0;o[be>>2]=4;o[be+4>>2]=0;o[n>>2]=o[be>>2];o[n+4>>2]=o[be+4>>2];va(e,3853,n)|0;o[_e>>2]=9;o[_e+4>>2]=0;o[n>>2]=o[_e>>2];o[n+4>>2]=o[_e+4>>2];ha(e,3870,n)|0;o[ye>>2]=10;o[ye+4>>2]=0;o[n>>2]=o[ye>>2];o[n+4>>2]=o[ye+4>>2];ha(e,3884,n)|0;o[ge>>2]=11;o[ge+4>>2]=0;o[n>>2]=o[ge>>2];o[n+4>>2]=o[ge+4>>2];ha(e,3896,n)|0;o[me>>2]=1;o[me+4>>2]=0;o[n>>2]=o[me>>2];o[n+4>>2]=o[me+4>>2];ma(e,3907,n)|0;o[ve>>2]=2;o[ve+4>>2]=0;o[n>>2]=o[ve>>2];o[n+4>>2]=o[ve+4>>2];ma(e,3915,n)|0;o[he>>2]=3;o[he+4>>2]=0;o[n>>2]=o[he>>2];o[n+4>>2]=o[he+4>>2];ma(e,3928,n)|0;o[pe>>2]=4;o[pe+4>>2]=0;o[n>>2]=o[pe>>2];o[n+4>>2]=o[pe+4>>2];ma(e,3948,n)|0;o[de>>2]=5;o[de+4>>2]=0;o[n>>2]=o[de>>2];o[n+4>>2]=o[de+4>>2];ma(e,3960,n)|0;o[fe>>2]=6;o[fe+4>>2]=0;o[n>>2]=o[fe>>2];o[n+4>>2]=o[fe+4>>2];ma(e,3974,n)|0;o[ce>>2]=7;o[ce+4>>2]=0;o[n>>2]=o[ce>>2];o[n+4>>2]=o[ce+4>>2];ma(e,3983,n)|0;o[se>>2]=20;o[se+4>>2]=0;o[n>>2]=o[se>>2];o[n+4>>2]=o[se+4>>2];da(e,3999,n)|0;o[le>>2]=8;o[le+4>>2]=0;o[n>>2]=o[le>>2];o[n+4>>2]=o[le+4>>2];ma(e,4012,n)|0;o[ae>>2]=9;o[ae+4>>2]=0;o[n>>2]=o[ae>>2];o[n+4>>2]=o[ae+4>>2];ma(e,4022,n)|0;o[ue>>2]=21;o[ue+4>>2]=0;o[n>>2]=o[ue>>2];o[n+4>>2]=o[ue+4>>2];da(e,4039,n)|0;o[oe>>2]=10;o[oe+4>>2]=0;o[n>>2]=o[oe>>2];o[n+4>>2]=o[oe+4>>2];ma(e,4053,n)|0;o[ie>>2]=11;o[ie+4>>2]=0;o[n>>2]=o[ie>>2];o[n+4>>2]=o[ie+4>>2];ma(e,4065,n)|0;o[re>>2]=12;o[re+4>>2]=0;o[n>>2]=o[re>>2];o[n+4>>2]=o[re+4>>2];ma(e,4084,n)|0;o[ne>>2]=13;o[ne+4>>2]=0;o[n>>2]=o[ne>>2];o[n+4>>2]=o[ne+4>>2];ma(e,4097,n)|0;o[te>>2]=14;o[te+4>>2]=0;o[n>>2]=o[te>>2];o[n+4>>2]=o[te+4>>2];ma(e,4117,n)|0;o[ee>>2]=15;o[ee+4>>2]=0;o[n>>2]=o[ee>>2];o[n+4>>2]=o[ee+4>>2];ma(e,4129,n)|0;o[Z>>2]=16;o[Z+4>>2]=0;o[n>>2]=o[Z>>2];o[n+4>>2]=o[Z+4>>2];ma(e,4148,n)|0;o[J>>2]=17;o[J+4>>2]=0;o[n>>2]=o[J>>2];o[n+4>>2]=o[J+4>>2];ma(e,4161,n)|0;o[Q>>2]=18;o[Q+4>>2]=0;o[n>>2]=o[Q>>2];o[n+4>>2]=o[Q+4>>2];ma(e,4181,n)|0;o[X>>2]=5;o[X+4>>2]=0;o[n>>2]=o[X>>2];o[n+4>>2]=o[X+4>>2];va(e,4196,n)|0;o[K>>2]=6;o[K+4>>2]=0;o[n>>2]=o[K>>2];o[n+4>>2]=o[K+4>>2];va(e,4206,n)|0;o[Y>>2]=7;o[Y+4>>2]=0;o[n>>2]=o[Y>>2];o[n+4>>2]=o[Y+4>>2];va(e,4217,n)|0;o[$>>2]=3;o[$+4>>2]=0;o[n>>2]=o[$>>2];o[n+4>>2]=o[$+4>>2];ga(e,4235,n)|0;o[G>>2]=1;o[G+4>>2]=0;o[n>>2]=o[G>>2];o[n+4>>2]=o[G+4>>2];ya(e,4251,n)|0;o[q>>2]=4;o[q+4>>2]=0;o[n>>2]=o[q>>2];o[n+4>>2]=o[q+4>>2];ga(e,4263,n)|0;o[V>>2]=5;o[V+4>>2]=0;o[n>>2]=o[V>>2];o[n+4>>2]=o[V+4>>2];ga(e,4279,n)|0;o[H>>2]=6;o[H+4>>2]=0;o[n>>2]=o[H>>2];o[n+4>>2]=o[H+4>>2];ga(e,4293,n)|0;o[W>>2]=7;o[W+4>>2]=0;o[n>>2]=o[W>>2];o[n+4>>2]=o[W+4>>2];ga(e,4306,n)|0;o[z>>2]=8;o[z+4>>2]=0;o[n>>2]=o[z>>2];o[n+4>>2]=o[z+4>>2];ga(e,4323,n)|0;o[U>>2]=9;o[U+4>>2]=0;o[n>>2]=o[U>>2];o[n+4>>2]=o[U+4>>2];ga(e,4335,n)|0;o[j>>2]=2;o[j+4>>2]=0;o[n>>2]=o[j>>2];o[n+4>>2]=o[j+4>>2];ya(e,4353,n)|0;o[B>>2]=12;o[B+4>>2]=0;o[n>>2]=o[B>>2];o[n+4>>2]=o[B+4>>2];_a(e,4363,n)|0;o[L>>2]=1;o[L+4>>2]=0;o[n>>2]=o[L>>2];o[n+4>>2]=o[L+4>>2];ba(e,4376,n)|0;o[F>>2]=2;o[F+4>>2]=0;o[n>>2]=o[F>>2];o[n+4>>2]=o[F+4>>2];ba(e,4388,n)|0;o[R>>2]=13;o[R+4>>2]=0;o[n>>2]=o[R>>2];o[n+4>>2]=o[R+4>>2];_a(e,4402,n)|0;o[M>>2]=14;o[M+4>>2]=0;o[n>>2]=o[M>>2];o[n+4>>2]=o[M+4>>2];_a(e,4411,n)|0;o[N>>2]=15;o[N+4>>2]=0;o[n>>2]=o[N>>2];o[n+4>>2]=o[N+4>>2];_a(e,4421,n)|0;o[I>>2]=16;o[I+4>>2]=0;o[n>>2]=o[I>>2];o[n+4>>2]=o[I+4>>2];_a(e,4433,n)|0;o[P>>2]=17;o[P+4>>2]=0;o[n>>2]=o[P>>2];o[n+4>>2]=o[P+4>>2];_a(e,4446,n)|0;o[O>>2]=18;o[O+4>>2]=0;o[n>>2]=o[O>>2];o[n+4>>2]=o[O+4>>2];_a(e,4458,n)|0;o[A>>2]=3;o[A+4>>2]=0;o[n>>2]=o[A>>2];o[n+4>>2]=o[A+4>>2];ba(e,4471,n)|0;o[x>>2]=1;o[x+4>>2]=0;o[n>>2]=o[x>>2];o[n+4>>2]=o[x+4>>2];wa(e,4486,n)|0;o[T>>2]=10;o[T+4>>2]=0;o[n>>2]=o[T>>2];o[n+4>>2]=o[T+4>>2];ga(e,4496,n)|0;o[k>>2]=11;o[k+4>>2]=0;o[n>>2]=o[k>>2];o[n+4>>2]=o[k+4>>2];ga(e,4508,n)|0;o[C>>2]=3;o[C+4>>2]=0;o[n>>2]=o[C>>2];o[n+4>>2]=o[C+4>>2];ya(e,4519,n)|0;o[S>>2]=4;o[S+4>>2]=0;o[n>>2]=o[S>>2];o[n+4>>2]=o[S+4>>2];Ea(e,4530,n)|0;o[D>>2]=19;o[D+4>>2]=0;o[n>>2]=o[D>>2];o[n+4>>2]=o[D+4>>2];Da(e,4542,n)|0;o[E>>2]=12;o[E+4>>2]=0;o[n>>2]=o[E>>2];o[n+4>>2]=o[E+4>>2];Sa(e,4554,n)|0;o[w>>2]=13;o[w+4>>2]=0;o[n>>2]=o[w>>2];o[n+4>>2]=o[w+4>>2];Ca(e,4568,n)|0;o[b>>2]=2;o[b+4>>2]=0;o[n>>2]=o[b>>2];o[n+4>>2]=o[b+4>>2];ka(e,4578,n)|0;o[_>>2]=20;o[_+4>>2]=0;o[n>>2]=o[_>>2];o[n+4>>2]=o[_+4>>2];Ta(e,4587,n)|0;o[y>>2]=22;o[y+4>>2]=0;o[n>>2]=o[y>>2];o[n+4>>2]=o[y+4>>2];da(e,4602,n)|0;o[g>>2]=23;o[g+4>>2]=0;o[n>>2]=o[g>>2];o[n+4>>2]=o[g+4>>2];da(e,4619,n)|0;o[m>>2]=14;o[m+4>>2]=0;o[n>>2]=o[m>>2];o[n+4>>2]=o[m+4>>2];xa(e,4629,n)|0;o[v>>2]=1;o[v+4>>2]=0;o[n>>2]=o[v>>2];o[n+4>>2]=o[v+4>>2];Aa(e,4637,n)|0;o[p>>2]=4;o[p+4>>2]=0;o[n>>2]=o[p>>2];o[n+4>>2]=o[p+4>>2];ba(e,4653,n)|0;o[d>>2]=5;o[d+4>>2]=0;o[n>>2]=o[d>>2];o[n+4>>2]=o[d+4>>2];ba(e,4669,n)|0;o[f>>2]=6;o[f+4>>2]=0;o[n>>2]=o[f>>2];o[n+4>>2]=o[f+4>>2];ba(e,4686,n)|0;o[c>>2]=7;o[c+4>>2]=0;o[n>>2]=o[c>>2];o[n+4>>2]=o[c+4>>2];ba(e,4701,n)|0;o[s>>2]=8;o[s+4>>2]=0;o[n>>2]=o[s>>2];o[n+4>>2]=o[s+4>>2];ba(e,4719,n)|0;o[l>>2]=9;o[l+4>>2]=0;o[n>>2]=o[l>>2];o[n+4>>2]=o[l+4>>2];ba(e,4736,n)|0;o[a>>2]=21;o[a+4>>2]=0;o[n>>2]=o[a>>2];o[n+4>>2]=o[a+4>>2];Oa(e,4754,n)|0;o[u>>2]=2;o[u+4>>2]=0;o[n>>2]=o[u>>2];o[n+4>>2]=o[u+4>>2];wa(e,4772,n)|0;o[i>>2]=3;o[i+4>>2]=0;o[n>>2]=o[i>>2];o[n+4>>2]=o[i+4>>2];wa(e,4790,n)|0;o[r>>2]=4;o[r+4>>2]=0;o[n>>2]=o[r>>2];o[n+4>>2]=o[r+4>>2];wa(e,4808,n)|0;h=t;return}function la(e,t){e=e|0;t=t|0;var n=0;n=Mm()|0;o[e>>2]=n;Rm(n,t);cw(o[e>>2]|0);return}function sa(e,t,n){e=e|0;t=t|0;n=n|0;gm(e,Ia(t)|0,n,0);return e|0}function ca(e,t,n){e=e|0;t=t|0;n=n|0;Xv(e,Ia(t)|0,n,0);return e|0}function fa(e,t,n){e=e|0;t=t|0;n=n|0;Nv(e,Ia(t)|0,n,0);return e|0}function da(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];hv(e,t,i);h=r;return e|0}function pa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Gh(e,t,i);h=r;return e|0}function ha(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Th(e,t,i);h=r;return e|0}function va(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];lh(e,t,i);h=r;return e|0}function ma(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Hp(e,t,i);h=r;return e|0}function ga(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Sp(e,t,i);h=r;return e|0}function ya(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];op(e,t,i);h=r;return e|0}function _a(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Cd(e,t,i);h=r;return e|0}function ba(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ud(e,t,i);h=r;return e|0}function wa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];zf(e,t,i);h=r;return e|0}function Ea(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Ef(e,t,i);h=r;return e|0}function Da(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Zc(e,t,i);h=r;return e|0}function Sa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Nc(e,t,i);h=r;return e|0}function Ca(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];hc(e,t,i);h=r;return e|0}function ka(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];qs(e,t,i);h=r;return e|0}function Ta(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ws(e,t,i);h=r;return e|0}function xa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ts(e,t,i);h=r;return e|0}function Aa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Ol(e,t,i);h=r;return e|0}function Oa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Pa(e,t,i);h=r;return e|0}function Pa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Na(e,n,i,1);h=r;return}function Ia(e){e=e|0;return e|0}function Na(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Ma()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Ra(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Fa(u,r)|0,r);h=i;return}function Ma(){var e=0,t=0;if(!(r[7616]|0)){Ya(9136);Fe(24,9136,g|0)|0;t=7616;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9136)|0)){e=9136;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Ya(9136)}return 9136}function Ra(e){e=e|0;return 0}function Fa(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Ma()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Wa(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Ha(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function La(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;var a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0;a=h;h=h+32|0;p=a+24|0;d=a+20|0;s=a+16|0;f=a+12|0;c=a+8|0;l=a+4|0;v=a;o[d>>2]=t;o[s>>2]=n;o[f>>2]=r;o[c>>2]=i;o[l>>2]=u;u=e+28|0;o[v>>2]=o[u>>2];o[p>>2]=o[v>>2];Ba(e+24|0,p,d,f,c,s,l)|0;o[u>>2]=o[o[u>>2]>>2];h=a;return}function Ba(e,t,n,r,i,u,a){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;a=a|0;e=ja(t)|0;t=$T(24)|0;Ua(t+4|0,o[n>>2]|0,o[r>>2]|0,o[i>>2]|0,o[u>>2]|0,o[a>>2]|0);o[t>>2]=o[e>>2];o[e>>2]=t;return t|0}function ja(e){e=e|0;return o[e>>2]|0}function Ua(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;o[e>>2]=t;o[e+4>>2]=n;o[e+8>>2]=r;o[e+12>>2]=i;o[e+16>>2]=u;return}function za(e,t){e=e|0;t=t|0;return t|e|0}function Wa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Ha(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Va(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;qa(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Wa(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Ga(e,l);$a(l);h=c;return}}function Va(e){e=e|0;return 357913941}function qa(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Ga(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function $a(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Ya(e){e=e|0;Ja(e);return}function Ka(e){e=e|0;Qa(e+24|0);return}function Xa(e){e=e|0;return o[e>>2]|0}function Qa(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Ja(e){e=e|0;var t=0;t=Za()|0;nl(e,2,3,t,el()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Za(){return 9228}function el(){return 1140}function tl(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=rl(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=il(t,r)|0;h=n;return t|0}function nl(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;o[e>>2]=t;o[e+4>>2]=n;o[e+8>>2]=r;o[e+12>>2]=i;o[e+16>>2]=u;return}function rl(e){e=e|0;return(o[(Ma()|0)+24>>2]|0)+(e*12|0)|0}function il(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+48|0;r=i;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;vA[n&31](r,e);r=ol(r)|0;h=i;return r|0}function ol(e){e=e|0;var t=0,n=0,r=0,i=0;i=h;h=h+32|0;t=i+12|0;n=i;r=al(ul()|0)|0;if(!r)e=dl(e)|0;else{ll(t,r);sl(n,t);cl(e,n);e=fl(t)|0}h=i;return e|0}function ul(){var e=0;if(!(r[7632]|0)){Dl(9184);Fe(25,9184,g|0)|0;e=7632;o[e>>2]=1;o[e+4>>2]=0}return 9184}function al(e){e=e|0;return o[e+36>>2]|0}function ll(e,t){e=e|0;t=t|0;o[e>>2]=t;o[e+4>>2]=e;o[e+8>>2]=0;return}function sl(e,t){e=e|0;t=t|0;o[e>>2]=o[t>>2];o[e+4>>2]=o[t+4>>2];o[e+8>>2]=0;return}function cl(e,t){e=e|0;t=t|0;gl(t,e,e+8|0,e+16|0,e+24|0,e+32|0,e+40|0)|0;return}function fl(e){e=e|0;return o[(o[e+4>>2]|0)+8>>2]|0}function dl(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0,s=0;s=h;h=h+16|0;n=s+4|0;r=s;i=UD(8)|0;u=i;a=$T(48)|0;l=a;t=l+48|0;do{o[l>>2]=o[e>>2];l=l+4|0;e=e+4|0}while((l|0)<(t|0));t=u+4|0;o[t>>2]=a;l=$T(8)|0;a=o[t>>2]|0;o[r>>2]=0;o[n>>2]=o[r>>2];pl(l,a,n);o[i>>2]=l;h=s;return u|0}function pl(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;n=$T(16)|0;o[n+4>>2]=0;o[n+8>>2]=0;o[n>>2]=1092;o[n+12>>2]=t;o[e+4>>2]=n;return}function hl(e){e=e|0;zT(e);KT(e);return}function vl(e){e=e|0;e=o[e+12>>2]|0;if(e|0)KT(e);return}function ml(e){e=e|0;KT(e);return}function gl(e,t,n,r,i,u,a){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;a=a|0;u=yl(o[e>>2]|0,t,n,r,i,u,a)|0;a=e+4|0;o[(o[a>>2]|0)+8>>2]=u;return o[(o[a>>2]|0)+8>>2]|0}function yl(e,t,n,r,i,o,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;u=u|0;var a=0,l=0;a=h;h=h+16|0;l=a;Dk(l);e=Eu(e)|0;u=_l(e,+c[t>>3],+c[n>>3],+c[r>>3],+c[i>>3],+c[o>>3],+c[u>>3])|0;Ck(l);h=a;return u|0}function _l(e,t,n,r,i,o,u){e=e|0;t=+t;n=+n;r=+r;i=+i;o=+o;u=+u;var a=0;a=Cu(bl()|0)|0;t=+ku(t);n=+ku(n);r=+ku(r);i=+ku(i);o=+ku(o);return Te(0,a|0,e|0,+t,+n,+r,+i,+o,+ +ku(u))|0}function bl(){var e=0;if(!(r[7624]|0)){wl(9172);e=7624;o[e>>2]=1;o[e+4>>2]=0}return 9172}function wl(e){e=e|0;Lu(e,El()|0,6);return}function El(){return 1112}function Dl(e){e=e|0;Al(e);return}function Sl(e){e=e|0;Cl(e+24|0);kl(e+16|0);return}function Cl(e){e=e|0;xl(e);return}function kl(e){e=e|0;Tl(e);return}function Tl(e){e=e|0;var t=0,n=0;t=o[e>>2]|0;if(t|0)do{n=t;t=o[t>>2]|0;KT(n)}while((t|0)!=0);o[e>>2]=0;return}function xl(e){e=e|0;var t=0,n=0;t=o[e>>2]|0;if(t|0)do{n=t;t=o[t>>2]|0;KT(n)}while((t|0)!=0);o[e>>2]=0;return}function Al(e){e=e|0;var t=0;o[e+16>>2]=0;o[e+20>>2]=0;t=e+24|0;o[t>>2]=0;o[e+28>>2]=t;o[e+36>>2]=0;r[e+40>>0]=0;r[e+41>>0]=0;return}function Ol(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Pl(e,n,i,0);h=r;return}function Pl(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Il()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Nl(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Ml(u,r)|0,r);h=i;return}function Il(){var e=0,t=0;if(!(r[7640]|0)){zl(9232);Fe(26,9232,g|0)|0;t=7640;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9232)|0)){e=9232;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));zl(9232)}return 9232}function Nl(e){e=e|0;return 0}function Ml(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Il()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Rl(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Fl(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Rl(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Fl(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Ll(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Bl(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Rl(u,r,n);o[s>>2]=(o[s>>2]|0)+12;jl(e,l);Ul(l);h=c;return}}function Ll(e){e=e|0;return 357913941}function Bl(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function jl(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Ul(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function zl(e){e=e|0;Vl(e);return}function Wl(e){e=e|0;Hl(e+24|0);return}function Hl(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Vl(e){e=e|0;var t=0;t=Za()|0;nl(e,2,1,t,ql()|0,3);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ql(){return 1144}function Gl(e,t,n,r,i){e=e|0;t=t|0;n=+n;r=+r;i=i|0;var u=0,a=0,l=0,s=0;u=h;h=h+16|0;a=u+8|0;l=u;s=$l(e)|0;e=o[s+4>>2]|0;o[l>>2]=o[s>>2];o[l+4>>2]=e;o[a>>2]=o[l>>2];o[a+4>>2]=o[l+4>>2];Yl(t,a,n,r,i);h=u;return}function $l(e){e=e|0;return(o[(Il()|0)+24>>2]|0)+(e*12|0)|0}function Yl(e,t,n,r,i){e=e|0;t=t|0;n=+n;r=+r;i=i|0;var u=0,a=0,l=0,s=0,c=0;c=h;h=h+16|0;a=c+2|0;l=c+1|0;s=c;u=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)u=o[(o[e>>2]|0)+u>>2]|0;Kl(a,n);n=+Xl(a,n);Kl(l,r);r=+Xl(l,r);Ql(s,i);s=Jl(s,i)|0;gA[u&1](e,n,r,s);h=c;return}function Kl(e,t){e=e|0;t=+t;return}function Xl(e,t){e=e|0;t=+t;return+ +es(t)}function Ql(e,t){e=e|0;t=t|0;return}function Jl(e,t){e=e|0;t=t|0;return Zl(t)|0}function Zl(e){e=e|0;return e|0}function es(e){e=+e;return+e}function ts(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ns(e,n,i,1);h=r;return}function ns(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=rs()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=is(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,os(u,r)|0,r);h=i;return}function rs(){var e=0,t=0;if(!(r[7648]|0)){ds(9268);Fe(27,9268,g|0)|0;t=7648;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9268)|0)){e=9268;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));ds(9268)}return 9268}function is(e){e=e|0;return 0}function os(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=rs()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];us(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{as(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function us(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function as(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=ls(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;ss(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];us(u,r,n);o[s>>2]=(o[s>>2]|0)+12;cs(e,l);fs(l);h=c;return}}function ls(e){e=e|0;return 357913941}function ss(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function cs(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function fs(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function ds(e){e=e|0;vs(e);return}function ps(e){e=e|0;hs(e+24|0);return}function hs(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function vs(e){e=e|0;var t=0;t=Za()|0;nl(e,2,4,t,ms()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ms(){return 1160}function gs(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=ys(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=_s(t,r)|0;h=n;return t|0}function ys(e){e=e|0;return(o[(rs()|0)+24>>2]|0)+(e*12|0)|0}function _s(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;return bs(mA[n&31](e)|0)|0}function bs(e){e=e|0;return e&1|0}function ws(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Es(e,n,i,0);h=r;return}function Es(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Ds()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Ss(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Cs(u,r)|0,r);h=i;return}function Ds(){var e=0,t=0;if(!(r[7656]|0)){Is(9304);Fe(28,9304,g|0)|0;t=7656;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9304)|0)){e=9304;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Is(9304)}return 9304}function Ss(e){e=e|0;return 0}function Cs(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Ds()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];ks(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Ts(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function ks(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Ts(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=xs(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;As(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];ks(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Os(e,l);Ps(l);h=c;return}}function xs(e){e=e|0;return 357913941}function As(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Os(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Ps(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Is(e){e=e|0;Rs(e);return}function Ns(e){e=e|0;Ms(e+24|0);return}function Ms(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Rs(e){e=e|0;var t=0;t=Za()|0;nl(e,2,5,t,Fs()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Fs(){return 1164}function Ls(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=Bs(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];js(t,i,n);h=r;return}function Bs(e){e=e|0;return(o[(Ds()|0)+24>>2]|0)+(e*12|0)|0}function js(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Us(i,n);n=zs(i,n)|0;vA[r&31](e,n);Ws(i);h=u;return}function Us(e,t){e=e|0;t=t|0;Hs(e,t);return}function zs(e,t){e=e|0;t=t|0;return e|0}function Ws(e){e=e|0;Ji(e);return}function Hs(e,t){e=e|0;t=t|0;Vs(e,t);return}function Vs(e,t){e=e|0;t=t|0;o[e>>2]=t;return}function qs(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Gs(e,n,i,0);h=r;return}function Gs(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=$s()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Ys(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Ks(u,r)|0,r);h=i;return}function $s(){var e=0,t=0;if(!(r[7664]|0)){nc(9340);Fe(29,9340,g|0)|0;t=7664;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9340)|0)){e=9340;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));nc(9340)}return 9340}function Ys(e){e=e|0;return 0}function Ks(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=$s()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Xs(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Qs(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Xs(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Qs(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Js(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Zs(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Xs(u,r,n);o[s>>2]=(o[s>>2]|0)+12;ec(e,l);tc(l);h=c;return}}function Js(e){e=e|0;return 357913941}function Zs(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function ec(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function tc(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function nc(e){e=e|0;oc(e);return}function rc(e){e=e|0;ic(e+24|0);return}function ic(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function oc(e){e=e|0;var t=0;t=Za()|0;nl(e,2,4,t,uc()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function uc(){return 1180}function ac(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=lc(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];n=sc(t,i,n)|0;h=r;return n|0}function lc(e){e=e|0;return(o[($s()|0)+24>>2]|0)+(e*12|0)|0}function sc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;cc(i,n);i=fc(i,n)|0;i=dc(DA[r&15](e,i)|0)|0;h=u;return i|0}function cc(e,t){e=e|0;t=t|0;return}function fc(e,t){e=e|0;t=t|0;return pc(t)|0}function dc(e){e=e|0;return e|0}function pc(e){e=e|0;return e|0}function hc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];vc(e,n,i,0);h=r;return}function vc(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=mc()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=gc(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,yc(u,r)|0,r);h=i;return}function mc(){var e=0,t=0;if(!(r[7672]|0)){Cc(9376);Fe(30,9376,g|0)|0;t=7672;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9376)|0)){e=9376;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Cc(9376)}return 9376}function gc(e){e=e|0;return 0}function yc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=mc()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];_c(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{bc(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function _c(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function bc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=wc(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Ec(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];_c(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Dc(e,l);Sc(l);h=c;return}}function wc(e){e=e|0;return 357913941}function Ec(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Dc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Sc(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Cc(e){e=e|0;xc(e);return}function kc(e){e=e|0;Tc(e+24|0);return}function Tc(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function xc(e){e=e|0;var t=0;t=Za()|0;nl(e,2,5,t,Ac()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Ac(){return 1196}function Oc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=Pc(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=Ic(t,r)|0;h=n;return t|0}function Pc(e){e=e|0;return(o[(mc()|0)+24>>2]|0)+(e*12|0)|0}function Ic(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;return dc(mA[n&31](e)|0)|0}function Nc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Mc(e,n,i,1);h=r;return}function Mc(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Rc()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Fc(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Lc(u,r)|0,r);h=i;return}function Rc(){var e=0,t=0;if(!(r[7680]|0)){Vc(9412);Fe(31,9412,g|0)|0;t=7680;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9412)|0)){e=9412;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Vc(9412)}return 9412}function Fc(e){e=e|0;return 0}function Lc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Rc()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Bc(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{jc(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Bc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function jc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Uc(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;zc(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Bc(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Wc(e,l);Hc(l);h=c;return}}function Uc(e){e=e|0;return 357913941}function zc(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Wc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Hc(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Vc(e){e=e|0;$c(e);return}function qc(e){e=e|0;Gc(e+24|0);return}function Gc(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function $c(e){e=e|0;var t=0;t=Za()|0;nl(e,2,6,t,Yc()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Yc(){return 1200}function Kc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=Xc(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=Qc(t,r)|0;h=n;return t|0}function Xc(e){e=e|0;return(o[(Rc()|0)+24>>2]|0)+(e*12|0)|0}function Qc(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;return Jc(mA[n&31](e)|0)|0}function Jc(e){e=e|0;return e|0}function Zc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ef(e,n,i,0);h=r;return}function ef(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=tf()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=nf(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,rf(u,r)|0,r);h=i;return}function tf(){var e=0,t=0;if(!(r[7688]|0)){ff(9448);Fe(32,9448,g|0)|0;t=7688;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9448)|0)){e=9448;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));ff(9448)}return 9448}function nf(e){e=e|0;return 0}function rf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=tf()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];of(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{uf(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function of(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function uf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=af(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;lf(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];of(u,r,n);o[s>>2]=(o[s>>2]|0)+12;sf(e,l);cf(l);h=c;return}}function af(e){e=e|0;return 357913941}function lf(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function sf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function cf(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function ff(e){e=e|0;hf(e);return}function df(e){e=e|0;pf(e+24|0);return}function pf(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function hf(e){e=e|0;var t=0;t=Za()|0;nl(e,2,6,t,vf()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function vf(){return 1204}function mf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=gf(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];yf(t,i,n);h=r;return}function gf(e){e=e|0;return(o[(tf()|0)+24>>2]|0)+(e*12|0)|0}function yf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;_f(i,n);i=bf(i,n)|0;vA[r&31](e,i);h=u;return}function _f(e,t){e=e|0;t=t|0;return}function bf(e,t){e=e|0;t=t|0;return wf(t)|0}function wf(e){e=e|0;return e|0}function Ef(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Df(e,n,i,0);h=r;return}function Df(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Sf()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Cf(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,kf(u,r)|0,r);h=i;return}function Sf(){var e=0,t=0;if(!(r[7696]|0)){Nf(9484);Fe(33,9484,g|0)|0;t=7696;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9484)|0)){e=9484;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Nf(9484)}return 9484}function Cf(e){e=e|0;return 0}function kf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Sf()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Tf(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{xf(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Tf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function xf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Af(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Of(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Tf(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Pf(e,l);If(l);h=c;return}}function Af(e){e=e|0;return 357913941}function Of(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Pf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function If(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Nf(e){e=e|0;Ff(e);return}function Mf(e){e=e|0;Rf(e+24|0);return}function Rf(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Ff(e){e=e|0;var t=0;t=Za()|0;nl(e,2,1,t,Lf()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Lf(){return 1212}function Bf(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;i=h;h=h+16|0;u=i+8|0;a=i;l=jf(e)|0;e=o[l+4>>2]|0;o[a>>2]=o[l>>2];o[a+4>>2]=e;o[u>>2]=o[a>>2];o[u+4>>2]=o[a+4>>2];Uf(t,u,n,r);h=i;return}function jf(e){e=e|0;return(o[(Sf()|0)+24>>2]|0)+(e*12|0)|0}function Uf(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;l=h;h=h+16|0;u=l+1|0;a=l;i=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)i=o[(o[e>>2]|0)+i>>2]|0;_f(u,n);u=bf(u,n)|0;cc(a,r);a=fc(a,r)|0;PA[i&15](e,u,a);h=l;return}function zf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Wf(e,n,i,1);h=r;return}function Wf(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Hf()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Vf(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,qf(u,r)|0,r);h=i;return}function Hf(){var e=0,t=0;if(!(r[7704]|0)){Jf(9520);Fe(34,9520,g|0)|0;t=7704;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9520)|0)){e=9520;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Jf(9520)}return 9520}function Vf(e){e=e|0;return 0}function qf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Hf()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Gf(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{$f(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Gf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function $f(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Yf(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Kf(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Gf(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Xf(e,l);Qf(l);h=c;return}}function Yf(e){e=e|0;return 357913941}function Kf(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Xf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Qf(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Jf(e){e=e|0;td(e);return}function Zf(e){e=e|0;ed(e+24|0);return}function ed(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function td(e){e=e|0;var t=0;t=Za()|0;nl(e,2,1,t,nd()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function nd(){return 1224}function rd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0.0,i=0,u=0,a=0,l=0;i=h;h=h+16|0;u=i+8|0;a=i;l=id(e)|0;e=o[l+4>>2]|0;o[a>>2]=o[l>>2];o[a+4>>2]=e;o[u>>2]=o[a>>2];o[u+4>>2]=o[a+4>>2];r=+od(t,u,n);h=i;return+r}function id(e){e=e|0;return(o[(Hf()|0)+24>>2]|0)+(e*12|0)|0}function od(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0.0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Ql(i,n);i=Jl(i,n)|0;a=+Mu(+kA[r&7](e,i));h=u;return+a}function ud(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ad(e,n,i,1);h=r;return}function ad(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=ld()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=sd(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,cd(u,r)|0,r);h=i;return}function ld(){var e=0,t=0;if(!(r[7712]|0)){gd(9556);Fe(35,9556,g|0)|0;t=7712;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9556)|0)){e=9556;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));gd(9556)}return 9556}function sd(e){e=e|0;return 0}function cd(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=ld()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];fd(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{dd(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function fd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function dd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=pd(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;hd(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];fd(u,r,n);o[s>>2]=(o[s>>2]|0)+12;vd(e,l);md(l);h=c;return}}function pd(e){e=e|0;return 357913941}function hd(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function vd(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function md(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function gd(e){e=e|0;bd(e);return}function yd(e){e=e|0;_d(e+24|0);return}function _d(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function bd(e){e=e|0;var t=0;t=Za()|0;nl(e,2,5,t,wd()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function wd(){return 1232}function Ed(e,t){e=e|0;t=t|0;var n=0.0,r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=Dd(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];n=+Sd(t,i);h=r;return+n}function Dd(e){e=e|0;return(o[(ld()|0)+24>>2]|0)+(e*12|0)|0}function Sd(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;return+ +Mu(+wA[n&15](e))}function Cd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];kd(e,n,i,1);h=r;return}function kd(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Td()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=xd(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Ad(u,r)|0,r);h=i;return}function Td(){var e=0,t=0;if(!(r[7720]|0)){Fd(9592);Fe(36,9592,g|0)|0;t=7720;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9592)|0)){e=9592;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Fd(9592)}return 9592}function xd(e){e=e|0;return 0}function Ad(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Td()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Od(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Pd(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Od(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Pd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Id(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Nd(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Od(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Md(e,l);Rd(l);h=c;return}}function Id(e){e=e|0;return 357913941}function Nd(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Md(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Rd(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Fd(e){e=e|0;jd(e);return}function Ld(e){e=e|0;Bd(e+24|0);return}function Bd(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function jd(e){e=e|0;var t=0;t=Za()|0;nl(e,2,7,t,Ud()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Ud(){return 1276}function zd(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=Wd(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=Hd(t,r)|0;h=n;return t|0}function Wd(e){e=e|0;return(o[(Td()|0)+24>>2]|0)+(e*12|0)|0}function Hd(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+16|0;r=i;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;vA[n&31](r,e);r=Vd(r)|0;h=i;return r|0}function Vd(e){e=e|0;var t=0,n=0,r=0,i=0;i=h;h=h+32|0;t=i+12|0;n=i;r=al(qd()|0)|0;if(!r)e=$d(e)|0;else{ll(t,r);sl(n,t);Gd(e,n);e=fl(t)|0}h=i;return e|0}function qd(){var e=0;if(!(r[7736]|0)){ip(9640);Fe(25,9640,g|0)|0;e=7736;o[e>>2]=1;o[e+4>>2]=0}return 9640}function Gd(e,t){e=e|0;t=t|0;Jd(t,e,e+8|0)|0;return}function $d(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0;n=h;h=h+16|0;i=n+4|0;a=n;r=UD(8)|0;t=r;l=$T(16)|0;o[l>>2]=o[e>>2];o[l+4>>2]=o[e+4>>2];o[l+8>>2]=o[e+8>>2];o[l+12>>2]=o[e+12>>2];u=t+4|0;o[u>>2]=l;e=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];Yd(e,u,i);o[r>>2]=e;h=n;return t|0}function Yd(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;n=$T(16)|0;o[n+4>>2]=0;o[n+8>>2]=0;o[n>>2]=1244;o[n+12>>2]=t;o[e+4>>2]=n;return}function Kd(e){e=e|0;zT(e);KT(e);return}function Xd(e){e=e|0;e=o[e+12>>2]|0;if(e|0)KT(e);return}function Qd(e){e=e|0;KT(e);return}function Jd(e,t,n){e=e|0;t=t|0;n=n|0;t=Zd(o[e>>2]|0,t,n)|0;n=e+4|0;o[(o[n>>2]|0)+8>>2]=t;return o[(o[n>>2]|0)+8>>2]|0}function Zd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;r=h;h=h+16|0;i=r;Dk(i);e=Eu(e)|0;n=ep(e,o[t>>2]|0,+c[n>>3])|0;Ck(i);h=r;return n|0}function ep(e,t,n){e=e|0;t=t|0;n=+n;var r=0;r=Cu(tp()|0)|0;t=Tu(t)|0;return xe(0,r|0,e|0,t|0,+ +ku(n))|0}function tp(){var e=0;if(!(r[7728]|0)){np(9628);e=7728;o[e>>2]=1;o[e+4>>2]=0}return 9628}function np(e){e=e|0;Lu(e,rp()|0,2);return}function rp(){return 1264}function ip(e){e=e|0;Al(e);return}function op(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];up(e,n,i,1);h=r;return}function up(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=ap()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=lp(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,sp(u,r)|0,r);h=i;return}function ap(){var e=0,t=0;if(!(r[7744]|0)){mp(9684);Fe(37,9684,g|0)|0;t=7744;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9684)|0)){e=9684;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));mp(9684)}return 9684}function lp(e){e=e|0;return 0}function sp(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=ap()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];cp(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{fp(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function cp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function fp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=dp(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;pp(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];cp(u,r,n);o[s>>2]=(o[s>>2]|0)+12;hp(e,l);vp(l);h=c;return}}function dp(e){e=e|0;return 357913941}function pp(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function hp(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function vp(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function mp(e){e=e|0;_p(e);return}function gp(e){e=e|0;yp(e+24|0);return}function yp(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function _p(e){e=e|0;var t=0;t=Za()|0;nl(e,2,5,t,bp()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function bp(){return 1280}function wp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=Ep(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];n=Dp(t,i,n)|0;h=r;return n|0}function Ep(e){e=e|0;return(o[(ap()|0)+24>>2]|0)+(e*12|0)|0}function Dp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;a=h;h=h+32|0;i=a;u=a+16|0;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Ql(u,n);u=Jl(u,n)|0;PA[r&15](i,e,u);u=Vd(i)|0;h=a;return u|0}function Sp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Cp(e,n,i,1);h=r;return}function Cp(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=kp()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Tp(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,xp(u,r)|0,r);h=i;return}function kp(){var e=0,t=0;if(!(r[7752]|0)){Rp(9720);Fe(38,9720,g|0)|0;t=7752;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9720)|0)){e=9720;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Rp(9720)}return 9720}function Tp(e){e=e|0;return 0}function xp(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=kp()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Ap(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Op(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Ap(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Op(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Pp(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Ip(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Ap(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Np(e,l);Mp(l);h=c;return}}function Pp(e){e=e|0;return 357913941}function Ip(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Np(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Mp(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Rp(e){e=e|0;Bp(e);return}function Fp(e){e=e|0;Lp(e+24|0);return}function Lp(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Bp(e){e=e|0;var t=0;t=Za()|0;nl(e,2,8,t,jp()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function jp(){return 1288}function Up(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=zp(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=Wp(t,r)|0;h=n;return t|0}function zp(e){e=e|0;return(o[(kp()|0)+24>>2]|0)+(e*12|0)|0}function Wp(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;return Nu(mA[n&31](e)|0)|0}function Hp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Vp(e,n,i,0);h=r;return}function Vp(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=qp()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Gp(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,$p(u,r)|0,r);h=i;return}function qp(){var e=0,t=0;if(!(r[7760]|0)){eh(9756);Fe(39,9756,g|0)|0;t=7760;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9756)|0)){e=9756;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));eh(9756)}return 9756}function Gp(e){e=e|0;return 0}function $p(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=qp()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Yp(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Kp(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Yp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Kp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Xp(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Qp(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Yp(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Jp(e,l);Zp(l);h=c;return}}function Xp(e){e=e|0;return 357913941}function Qp(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Jp(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Zp(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function eh(e){e=e|0;rh(e);return}function th(e){e=e|0;nh(e+24|0);return}function nh(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function rh(e){e=e|0;var t=0;t=Za()|0;nl(e,2,8,t,ih()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ih(){return 1292}function oh(e,t,n){e=e|0;t=t|0;n=+n;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=uh(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ah(t,i,n);h=r;return}function uh(e){e=e|0;return(o[(qp()|0)+24>>2]|0)+(e*12|0)|0}function ah(e,t,n){e=e|0;t=t|0;n=+n;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Kl(i,n);n=+Xl(i,n);dA[r&31](e,n);h=u;return}function lh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];sh(e,n,i,0);h=r;return}function sh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=ch()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=fh(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,dh(u,r)|0,r);h=i;return}function ch(){var e=0,t=0;if(!(r[7768]|0)){_h(9792);Fe(40,9792,g|0)|0;t=7768;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9792)|0)){e=9792;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));_h(9792)}return 9792}function fh(e){e=e|0;return 0}function dh(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=ch()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];ph(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{hh(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function ph(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function hh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=vh(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;mh(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];ph(u,r,n);o[s>>2]=(o[s>>2]|0)+12;gh(e,l);yh(l);h=c;return}}function vh(e){e=e|0;return 357913941}function mh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function gh(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function yh(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function _h(e){e=e|0;Eh(e);return}function bh(e){e=e|0;wh(e+24|0);return}function wh(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Eh(e){e=e|0;var t=0;t=Za()|0;nl(e,2,1,t,Dh()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Dh(){return 1300}function Sh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=+r;var i=0,u=0,a=0,l=0;i=h;h=h+16|0;u=i+8|0;a=i;l=Ch(e)|0;e=o[l+4>>2]|0;o[a>>2]=o[l>>2];o[a+4>>2]=e;o[u>>2]=o[a>>2];o[u+4>>2]=o[a+4>>2];kh(t,u,n,r);h=i;return}function Ch(e){e=e|0;return(o[(ch()|0)+24>>2]|0)+(e*12|0)|0}function kh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=+r;var i=0,u=0,a=0,l=0;l=h;h=h+16|0;u=l+1|0;a=l;i=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)i=o[(o[e>>2]|0)+i>>2]|0;Ql(u,n);u=Jl(u,n)|0;Kl(a,r);r=+Xl(a,r);NA[i&15](e,u,r);h=l;return}function Th(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];xh(e,n,i,0);h=r;return}function xh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Ah()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Oh(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Ph(u,r)|0,r);h=i;return}function Ah(){var e=0,t=0;if(!(r[7776]|0)){Bh(9828);Fe(41,9828,g|0)|0;t=7776;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9828)|0)){e=9828;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Bh(9828)}return 9828}function Oh(e){e=e|0;return 0}function Ph(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Ah()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Ih(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Nh(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Ih(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Nh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Mh(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Rh(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Ih(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Fh(e,l);Lh(l);h=c;return}}function Mh(e){e=e|0;return 357913941}function Rh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Fh(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Lh(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Bh(e){e=e|0;zh(e);return}function jh(e){e=e|0;Uh(e+24|0);return}function Uh(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function zh(e){e=e|0;var t=0;t=Za()|0;nl(e,2,7,t,Wh()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Wh(){return 1312}function Hh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=Vh(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];qh(t,i,n);h=r;return}function Vh(e){e=e|0;return(o[(Ah()|0)+24>>2]|0)+(e*12|0)|0}function qh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Ql(i,n);i=Jl(i,n)|0;vA[r&31](e,i);h=u;return}function Gh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];$h(e,n,i,0);h=r;return}function $h(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Yh()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Kh(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Xh(u,r)|0,r);h=i;return}function Yh(){var e=0,t=0;if(!(r[7784]|0)){rv(9864);Fe(42,9864,g|0)|0;t=7784;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9864)|0)){e=9864;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));rv(9864)}return 9864}function Kh(e){e=e|0;return 0}function Xh(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Yh()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Qh(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Jh(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Qh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Jh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Zh(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;ev(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Qh(u,r,n);o[s>>2]=(o[s>>2]|0)+12;tv(e,l);nv(l);h=c;return}}function Zh(e){e=e|0;return 357913941}function ev(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function tv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function nv(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function rv(e){e=e|0;uv(e);return}function iv(e){e=e|0;ov(e+24|0);return}function ov(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function uv(e){e=e|0;var t=0;t=Za()|0;nl(e,2,8,t,av()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function av(){return 1320}function lv(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=sv(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];cv(t,i,n);h=r;return}function sv(e){e=e|0;return(o[(Yh()|0)+24>>2]|0)+(e*12|0)|0}function cv(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;fv(i,n);i=dv(i,n)|0;vA[r&31](e,i);h=u;return}function fv(e,t){e=e|0;t=t|0;return}function dv(e,t){e=e|0;t=t|0;return pv(t)|0}function pv(e){e=e|0;return e|0}function hv(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];vv(e,n,i,0);h=r;return}function vv(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=mv()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=gv(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,yv(u,r)|0,r);h=i;return}function mv(){var e=0,t=0;if(!(r[7792]|0)){Cv(9900);Fe(43,9900,g|0)|0;t=7792;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9900)|0)){e=9900;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Cv(9900)}return 9900}function gv(e){e=e|0;return 0}function yv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=mv()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];_v(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{bv(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function _v(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function bv(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=wv(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Ev(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];_v(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Dv(e,l);Sv(l);h=c;return}}function wv(e){e=e|0;return 357913941}function Ev(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Dv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Sv(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Cv(e){e=e|0;xv(e);return}function kv(e){e=e|0;Tv(e+24|0);return}function Tv(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function xv(e){e=e|0;var t=0;t=Za()|0;nl(e,2,22,t,Av()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Av(){return 1344}function Ov(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=Pv(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];Iv(t,r);h=n;return}function Pv(e){e=e|0;return(o[(mv()|0)+24>>2]|0)+(e*12|0)|0}function Iv(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;hA[n&127](e);return}function Nv(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=Mv()|0;e=Rv(n)|0;La(u,t,i,e,Fv(n,r)|0,r);return}function Mv(){var e=0,t=0;if(!(r[7800]|0)){Hv(9936);Fe(44,9936,g|0)|0;t=7800;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9936)|0)){e=9936;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Hv(9936)}return 9936}function Rv(e){e=e|0;return e|0}function Fv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=Mv()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){Lv(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{Bv(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function Lv(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function Bv(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=jv(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;Uv(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;Lv(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;zv(e,i);Wv(i);h=l;return}}function jv(e){e=e|0;return 536870911}function Uv(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function zv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Wv(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function Hv(e){e=e|0;Gv(e);return}function Vv(e){e=e|0;qv(e+24|0);return}function qv(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function Gv(e){e=e|0;var t=0;t=Za()|0;nl(e,1,23,t,vf()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function $v(e,t){e=e|0;t=t|0;Kv(o[(Yv(e)|0)>>2]|0,t);return}function Yv(e){e=e|0;return(o[(Mv()|0)+24>>2]|0)+(e<<3)|0}function Kv(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;_f(r,t);t=bf(r,t)|0;hA[e&127](t);h=n;return}function Xv(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=Qv()|0;e=Jv(n)|0;La(u,t,i,e,Zv(n,r)|0,r);return}function Qv(){var e=0,t=0;if(!(r[7808]|0)){um(9972);Fe(45,9972,g|0)|0;t=7808;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9972)|0)){e=9972;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));um(9972)}return 9972}function Jv(e){e=e|0;return e|0}function Zv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=Qv()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){em(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{tm(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function em(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function tm(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=nm(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;rm(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;em(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;im(e,i);om(i);h=l;return}}function nm(e){e=e|0;return 536870911}function rm(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function im(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function om(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function um(e){e=e|0;sm(e);return}function am(e){e=e|0;lm(e+24|0);return}function lm(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function sm(e){e=e|0;var t=0;t=Za()|0;nl(e,1,9,t,cm()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function cm(){return 1348}function fm(e,t){e=e|0;t=t|0;return pm(o[(dm(e)|0)>>2]|0,t)|0}function dm(e){e=e|0;return(o[(Qv()|0)+24>>2]|0)+(e<<3)|0}function pm(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;hm(r,t);t=vm(r,t)|0;t=dc(mA[e&31](t)|0)|0;h=n;return t|0}function hm(e,t){e=e|0;t=t|0;return}function vm(e,t){e=e|0;t=t|0;return mm(t)|0}function mm(e){e=e|0;return e|0}function gm(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=ym()|0;e=_m(n)|0;La(u,t,i,e,bm(n,r)|0,r);return}function ym(){var e=0,t=0;if(!(r[7816]|0)){Tm(10008);Fe(46,10008,g|0)|0;t=7816;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10008)|0)){e=10008;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Tm(10008)}return 10008}function _m(e){e=e|0;return e|0}function bm(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=ym()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){wm(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{Em(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function wm(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function Em(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=Dm(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;Sm(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;wm(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;Cm(e,i);km(i);h=l;return}}function Dm(e){e=e|0;return 536870911}function Sm(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function Cm(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function km(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function Tm(e){e=e|0;Om(e);return}function xm(e){e=e|0;Am(e+24|0);return}function Am(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function Om(e){e=e|0;var t=0;t=Za()|0;nl(e,1,15,t,Ac()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Pm(e){e=e|0;return Nm(o[(Im(e)|0)>>2]|0)|0}function Im(e){e=e|0;return(o[(ym()|0)+24>>2]|0)+(e<<3)|0}function Nm(e){e=e|0;return dc(TA[e&7]()|0)|0}function Mm(){var e=0;if(!(r[7832]|0)){Vm(10052);Fe(25,10052,g|0)|0;e=7832;o[e>>2]=1;o[e+4>>2]=0}return 10052}function Rm(e,t){e=e|0;t=t|0;o[e>>2]=Fm()|0;o[e+4>>2]=Lm()|0;o[e+12>>2]=t;o[e+8>>2]=Bm()|0;o[e+32>>2]=2;return}function Fm(){return 11709}function Lm(){return 1188}function Bm(){return Wm()|0}function jm(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){zm(n);KT(n)}}else if(t|0){Qi(t);KT(t)}return}function Um(e,t){e=e|0;t=t|0;return t&e|0}function zm(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function Wm(){var e=0;if(!(r[7824]|0)){o[2511]=Hm()|0;o[2512]=0;e=7824;o[e>>2]=1;o[e+4>>2]=0}return 10044}function Hm(){return 0}function Vm(e){e=e|0;Al(e);return}function qm(e){e=e|0;var t=0,n=0,r=0,i=0,u=0;t=h;h=h+32|0;n=t+24|0;u=t+16|0;i=t+8|0;r=t;Gm(e,4827);$m(e,4834,3)|0;Ym(e,3682,47)|0;o[u>>2]=9;o[u+4>>2]=0;o[n>>2]=o[u>>2];o[n+4>>2]=o[u+4>>2];Km(e,4841,n)|0;o[i>>2]=1;o[i+4>>2]=0;o[n>>2]=o[i>>2];o[n+4>>2]=o[i+4>>2];Xm(e,4871,n)|0;o[r>>2]=10;o[r+4>>2]=0;o[n>>2]=o[r>>2];o[n+4>>2]=o[r+4>>2];Qm(e,4891,n)|0;h=t;return}function Gm(e,t){e=e|0;t=t|0;var n=0;n=Vy()|0;o[e>>2]=n;qy(n,t);cw(o[e>>2]|0);return}function $m(e,t,n){e=e|0;t=t|0;n=n|0;Cy(e,Ia(t)|0,n,0);return e|0}function Ym(e,t,n){e=e|0;t=t|0;n=n|0;ay(e,Ia(t)|0,n,0);return e|0}function Km(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];jg(e,t,i);h=r;return e|0}function Xm(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];gg(e,t,i);h=r;return e|0}function Qm(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Jm(e,t,i);h=r;return e|0}function Jm(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Zm(e,n,i,1);h=r;return}function Zm(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=eg()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=tg(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,ng(u,r)|0,r);h=i;return}function eg(){var e=0,t=0;if(!(r[7840]|0)){sg(10100);Fe(48,10100,g|0)|0;t=7840;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10100)|0)){e=10100;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));sg(10100)}return 10100}function tg(e){e=e|0;return 0}function ng(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=eg()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];rg(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{ig(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function rg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function ig(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=og(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;ug(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];rg(u,r,n);o[s>>2]=(o[s>>2]|0)+12;ag(e,l);lg(l);h=c;return}}function og(e){e=e|0;return 357913941}function ug(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function ag(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function lg(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function sg(e){e=e|0;dg(e);return}function cg(e){e=e|0;fg(e+24|0);return}function fg(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function dg(e){e=e|0;var t=0;t=Za()|0;nl(e,2,6,t,pg()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function pg(){return 1364}function hg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=vg(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];n=mg(t,i,n)|0;h=r;return n|0}function vg(e){e=e|0;return(o[(eg()|0)+24>>2]|0)+(e*12|0)|0}function mg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Ql(i,n);i=Jl(i,n)|0;i=bs(DA[r&15](e,i)|0)|0;h=u;return i|0}function gg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];yg(e,n,i,0);h=r;return}function yg(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=_g()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=bg(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,wg(u,r)|0,r);h=i;return}function _g(){var e=0,t=0;if(!(r[7848]|0)){xg(10136);Fe(49,10136,g|0)|0;t=7848;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10136)|0)){e=10136;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));xg(10136)}return 10136}function bg(e){e=e|0;return 0}function wg(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=_g()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Eg(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Dg(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Eg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Dg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Sg(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Cg(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Eg(u,r,n);o[s>>2]=(o[s>>2]|0)+12;kg(e,l);Tg(l);h=c;return}}function Sg(e){e=e|0;return 357913941}function Cg(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function kg(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Tg(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function xg(e){e=e|0;Pg(e);return}function Ag(e){e=e|0;Og(e+24|0);return}function Og(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Pg(e){e=e|0;var t=0;t=Za()|0;nl(e,2,9,t,Ig()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Ig(){return 1372}function Ng(e,t,n){e=e|0;t=t|0;n=+n;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=Mg(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Rg(t,i,n);h=r;return}function Mg(e){e=e|0;return(o[(_g()|0)+24>>2]|0)+(e*12|0)|0}function Rg(e,t,n){e=e|0;t=t|0;n=+n;var r=0,i=0,u=0,a=ft;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Fg(i,n);a=Y(Lg(i,n));fA[r&1](e,a);h=u;return}function Fg(e,t){e=e|0;t=+t;return}function Lg(e,t){e=e|0;t=+t;return Y(Bg(t))}function Bg(e){e=+e;return Y(e)}function jg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Ug(e,n,i,0);h=r;return}function Ug(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=zg()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Wg(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Hg(u,r)|0,r);h=i;return}function zg(){var e=0,t=0;if(!(r[7856]|0)){Xg(10172);Fe(50,10172,g|0)|0;t=7856;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10172)|0)){e=10172;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Xg(10172)}return 10172}function Wg(e){e=e|0;return 0}function Hg(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=zg()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Vg(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{qg(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Vg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function qg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Gg(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;$g(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Vg(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Yg(e,l);Kg(l);h=c;return}}function Gg(e){e=e|0;return 357913941}function $g(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Yg(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Kg(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Xg(e){e=e|0;Zg(e);return}function Qg(e){e=e|0;Jg(e+24|0);return}function Jg(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Zg(e){e=e|0;var t=0;t=Za()|0;nl(e,2,3,t,ey()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ey(){return 1380}function ty(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;i=h;h=h+16|0;u=i+8|0;a=i;l=ny(e)|0;e=o[l+4>>2]|0;o[a>>2]=o[l>>2];o[a+4>>2]=e;o[u>>2]=o[a>>2];o[u+4>>2]=o[a+4>>2];ry(t,u,n,r);h=i;return}function ny(e){e=e|0;return(o[(zg()|0)+24>>2]|0)+(e*12|0)|0}function ry(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;l=h;h=h+16|0;u=l+1|0;a=l;i=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)i=o[(o[e>>2]|0)+i>>2]|0;Ql(u,n);u=Jl(u,n)|0;iy(a,r);a=oy(a,r)|0;PA[i&15](e,u,a);h=l;return}function iy(e,t){e=e|0;t=t|0;return}function oy(e,t){e=e|0;t=t|0;return uy(t)|0}function uy(e){e=e|0;return(e|0)!=0|0}function ay(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=ly()|0;e=sy(n)|0;La(u,t,i,e,cy(n,r)|0,r);return}function ly(){var e=0,t=0;if(!(r[7864]|0)){gy(10208);Fe(51,10208,g|0)|0;t=7864;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10208)|0)){e=10208;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));gy(10208)}return 10208}function sy(e){e=e|0;return e|0}function cy(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=ly()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){fy(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{dy(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function fy(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function dy(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=py(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;hy(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;fy(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;vy(e,i);my(i);h=l;return}}function py(e){e=e|0;return 536870911}function hy(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function vy(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function my(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function gy(e){e=e|0;by(e);return}function yy(e){e=e|0;_y(e+24|0);return}function _y(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function by(e){e=e|0;var t=0;t=Za()|0;nl(e,1,24,t,wy()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function wy(){return 1392}function Ey(e,t){e=e|0;t=t|0;Sy(o[(Dy(e)|0)>>2]|0,t);return}function Dy(e){e=e|0;return(o[(ly()|0)+24>>2]|0)+(e<<3)|0}function Sy(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;hm(r,t);t=vm(r,t)|0;hA[e&127](t);h=n;return}function Cy(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=ky()|0;e=Ty(n)|0;La(u,t,i,e,xy(n,r)|0,r);return}function ky(){var e=0,t=0;if(!(r[7872]|0)){Ry(10244);Fe(52,10244,g|0)|0;t=7872;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10244)|0)){e=10244;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Ry(10244)}return 10244}function Ty(e){e=e|0;return e|0}function xy(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=ky()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){Ay(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{Oy(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function Ay(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function Oy(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=Py(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;Iy(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;Ay(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;Ny(e,i);My(i);h=l;return}}function Py(e){e=e|0;return 536870911}function Iy(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function Ny(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function My(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function Ry(e){e=e|0;By(e);return}function Fy(e){e=e|0;Ly(e+24|0);return}function Ly(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function By(e){e=e|0;var t=0;t=Za()|0;nl(e,1,16,t,jy()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function jy(){return 1400}function Uy(e){e=e|0;return Wy(o[(zy(e)|0)>>2]|0)|0}function zy(e){e=e|0;return(o[(ky()|0)+24>>2]|0)+(e<<3)|0}function Wy(e){e=e|0;return Hy(TA[e&7]()|0)|0}function Hy(e){e=e|0;return e|0}function Vy(){var e=0;if(!(r[7880]|0)){Qy(10280);Fe(25,10280,g|0)|0;e=7880;o[e>>2]=1;o[e+4>>2]=0}return 10280}function qy(e,t){e=e|0;t=t|0;o[e>>2]=Gy()|0;o[e+4>>2]=$y()|0;o[e+12>>2]=t;o[e+8>>2]=Yy()|0;o[e+32>>2]=4;return}function Gy(){return 11711}function $y(){return 1356}function Yy(){return Wm()|0}function Ky(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){Xy(n);KT(n)}}else if(t|0){Hi(t);KT(t)}return}function Xy(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function Qy(e){e=e|0;Al(e);return}function Jy(e){e=e|0;Zy(e,4920);e_(e)|0;t_(e)|0;return}function Zy(e,t){e=e|0;t=t|0;var n=0;n=qd()|0;o[e>>2]=n;T_(n,t);cw(o[e>>2]|0);return}function e_(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,v_()|0);return e|0}function t_(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,n_()|0);return e|0}function n_(){var e=0;if(!(r[7888]|0)){i_(10328);Fe(53,10328,g|0)|0;e=7888;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10328)|0))i_(10328);return 10328}function r_(e,t){e=e|0;t=t|0;La(e,0,t,0,0,0);return}function i_(e){e=e|0;a_(e);s_(e,10);return}function o_(e){e=e|0;u_(e+24|0);return}function u_(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function a_(e){e=e|0;var t=0;t=Za()|0;nl(e,5,1,t,d_()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function l_(e,t,n){e=e|0;t=t|0;n=+n;c_(e,t,n);return}function s_(e,t){e=e|0;t=t|0;o[e+20>>2]=t;return}function c_(e,t,n){e=e|0;t=t|0;n=+n;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;u=r+8|0;l=r+13|0;i=r;a=r+12|0;Ql(l,t);o[u>>2]=Jl(l,t)|0;Kl(a,n);c[i>>3]=+Xl(a,n);f_(e,u,i);h=r;return}function f_(e,t,n){e=e|0;t=t|0;n=n|0;Vo(e+8|0,o[t>>2]|0,+c[n>>3]);r[e+24>>0]=1;return}function d_(){return 1404}function p_(e,t){e=e|0;t=+t;return h_(e,t)|0}function h_(e,t){e=e|0;t=+t;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;r=h;h=h+16|0;u=r+4|0;a=r+8|0;l=r;i=UD(8)|0;n=i;s=$T(16)|0;Ql(u,e);e=Jl(u,e)|0;Kl(a,t);Vo(s,e,+Xl(a,t));a=n+4|0;o[a>>2]=s;e=$T(8)|0;a=o[a>>2]|0;o[l>>2]=0;o[u>>2]=o[l>>2];Yd(e,a,u);o[i>>2]=e;h=r;return n|0}function v_(){var e=0;if(!(r[7896]|0)){m_(10364);Fe(54,10364,g|0)|0;e=7896;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10364)|0))m_(10364);return 10364}function m_(e){e=e|0;__(e);s_(e,55);return}function g_(e){e=e|0;y_(e+24|0);return}function y_(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function __(e){e=e|0;var t=0;t=Za()|0;nl(e,5,4,t,S_()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function b_(e){e=e|0;w_(e);return}function w_(e){e=e|0;E_(e);return}function E_(e){e=e|0;D_(e+8|0);r[e+24>>0]=1;return}function D_(e){e=e|0;o[e>>2]=0;c[e+8>>3]=0.0;return}function S_(){return 1424}function C_(){return k_()|0}function k_(){var e=0,t=0,n=0,r=0,i=0,u=0,a=0;t=h;h=h+16|0;i=t+4|0;a=t;n=UD(8)|0;e=n;r=$T(16)|0;D_(r);u=e+4|0;o[u>>2]=r;r=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];Yd(r,u,i);o[n>>2]=r;h=t;return e|0}function T_(e,t){e=e|0;t=t|0;o[e>>2]=x_()|0;o[e+4>>2]=A_()|0;o[e+12>>2]=t;o[e+8>>2]=O_()|0;o[e+32>>2]=5;return}function x_(){return 11710}function A_(){return 1416}function O_(){return N_()|0}function P_(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){I_(n);KT(n)}}else if(t|0)KT(t);return}function I_(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function N_(){var e=0;if(!(r[7904]|0)){o[2600]=M_()|0;o[2601]=0;e=7904;o[e>>2]=1;o[e+4>>2]=0}return 10400}function M_(){return o[357]|0}function R_(e){e=e|0;F_(e,4926);L_(e)|0;return}function F_(e,t){e=e|0;t=t|0;var n=0;n=ul()|0;o[e>>2]=n;K_(n,t);cw(o[e>>2]|0);return}function L_(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,B_()|0);return e|0}function B_(){var e=0;if(!(r[7912]|0)){j_(10412);Fe(56,10412,g|0)|0;e=7912;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10412)|0))j_(10412);return 10412}function j_(e){e=e|0;W_(e);s_(e,57);return}function U_(e){e=e|0;z_(e+24|0);return}function z_(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function W_(e){e=e|0;var t=0;t=Za()|0;nl(e,5,5,t,G_()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function H_(e){e=e|0;V_(e);return}function V_(e){e=e|0;q_(e);return}function q_(e){e=e|0;var t=0,n=0;t=e+8|0;n=t+48|0;do{o[t>>2]=0;t=t+4|0}while((t|0)<(n|0));r[e+56>>0]=1;return}function G_(){return 1432}function $_(){return Y_()|0}function Y_(){var e=0,t=0,n=0,r=0,i=0,u=0,a=0,l=0;a=h;h=h+16|0;e=a+4|0;t=a;n=UD(8)|0;r=n;i=$T(48)|0;u=i;l=u+48|0;do{o[u>>2]=0;u=u+4|0}while((u|0)<(l|0));u=r+4|0;o[u>>2]=i;l=$T(8)|0;u=o[u>>2]|0;o[t>>2]=0;o[e>>2]=o[t>>2];pl(l,u,e);o[n>>2]=l;h=a;return r|0}function K_(e,t){e=e|0;t=t|0;o[e>>2]=X_()|0;o[e+4>>2]=Q_()|0;o[e+12>>2]=t;o[e+8>>2]=J_()|0;o[e+32>>2]=6;return}function X_(){return 11704}function Q_(){return 1436}function J_(){return N_()|0}function Z_(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){eb(n);KT(n)}}else if(t|0)KT(t);return}function eb(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function tb(e){e=e|0;nb(e,4933);rb(e)|0;ib(e)|0;return}function nb(e,t){e=e|0;t=t|0;var n=0;n=Nb()|0;o[e>>2]=n;Mb(n,t);cw(o[e>>2]|0);return}function rb(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,wb()|0);return e|0}function ib(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,ob()|0);return e|0}function ob(){var e=0;if(!(r[7920]|0)){ub(10452);Fe(58,10452,g|0)|0;e=7920;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10452)|0))ub(10452);return 10452}function ub(e){e=e|0;sb(e);s_(e,1);return}function ab(e){e=e|0;lb(e+24|0);return}function lb(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function sb(e){e=e|0;var t=0;t=Za()|0;nl(e,5,1,t,hb()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function cb(e,t,n){e=e|0;t=+t;n=+n;fb(e,t,n);return}function fb(e,t,n){e=e|0;t=+t;n=+n;var r=0,i=0,o=0,u=0,a=0;r=h;h=h+32|0;o=r+8|0;a=r+17|0;i=r;u=r+16|0;Kl(a,t);c[o>>3]=+Xl(a,t);Kl(u,n);c[i>>3]=+Xl(u,n);db(e,o,i);h=r;return}function db(e,t,n){e=e|0;t=t|0;n=n|0;pb(e+8|0,+c[t>>3],+c[n>>3]);r[e+24>>0]=1;return}function pb(e,t,n){e=e|0;t=+t;n=+n;c[e>>3]=t;c[e+8>>3]=n;return}function hb(){return 1472}function vb(e,t){e=+e;t=+t;return mb(e,t)|0}function mb(e,t){e=+e;t=+t;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;r=h;h=h+16|0;a=r+4|0;l=r+8|0;s=r;i=UD(8)|0;n=i;u=$T(16)|0;Kl(a,e);e=+Xl(a,e);Kl(l,t);pb(u,e,+Xl(l,t));l=n+4|0;o[l>>2]=u;u=$T(8)|0;l=o[l>>2]|0;o[s>>2]=0;o[a>>2]=o[s>>2];gb(u,l,a);o[i>>2]=u;h=r;return n|0}function gb(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;n=$T(16)|0;o[n+4>>2]=0;o[n+8>>2]=0;o[n>>2]=1452;o[n+12>>2]=t;o[e+4>>2]=n;return}function yb(e){e=e|0;zT(e);KT(e);return}function _b(e){e=e|0;e=o[e+12>>2]|0;if(e|0)KT(e);return}function bb(e){e=e|0;KT(e);return}function wb(){var e=0;if(!(r[7928]|0)){Eb(10488);Fe(59,10488,g|0)|0;e=7928;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10488)|0))Eb(10488);return 10488}function Eb(e){e=e|0;Cb(e);s_(e,60);return}function Db(e){e=e|0;Sb(e+24|0);return}function Sb(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function Cb(e){e=e|0;var t=0;t=Za()|0;nl(e,5,6,t,Ob()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function kb(e){e=e|0;Tb(e);return}function Tb(e){e=e|0;xb(e);return}function xb(e){e=e|0;Ab(e+8|0);r[e+24>>0]=1;return}function Ab(e){e=e|0;o[e>>2]=0;o[e+4>>2]=0;o[e+8>>2]=0;o[e+12>>2]=0;return}function Ob(){return 1492}function Pb(){return Ib()|0}function Ib(){var e=0,t=0,n=0,r=0,i=0,u=0,a=0;t=h;h=h+16|0;i=t+4|0;a=t;n=UD(8)|0;e=n;r=$T(16)|0;Ab(r);u=e+4|0;o[u>>2]=r;r=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];gb(r,u,i);o[n>>2]=r;h=t;return e|0}function Nb(){var e=0;if(!(r[7936]|0)){Ub(10524);Fe(25,10524,g|0)|0;e=7936;o[e>>2]=1;o[e+4>>2]=0}return 10524}function Mb(e,t){e=e|0;t=t|0;o[e>>2]=Rb()|0;o[e+4>>2]=Fb()|0;o[e+12>>2]=t;o[e+8>>2]=Lb()|0;o[e+32>>2]=7;return}function Rb(){return 11700}function Fb(){return 1484}function Lb(){return N_()|0}function Bb(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){jb(n);KT(n)}}else if(t|0)KT(t);return}function jb(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function Ub(e){e=e|0;Al(e);return}function zb(e,t,n){e=e|0;t=t|0;n=n|0;e=Ia(t)|0;t=Wb(n)|0;n=Hb(n,0)|0;xw(e,t,n,Vb()|0,0);return}function Wb(e){e=e|0;return e|0}function Hb(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=Vb()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){Jb(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{Zb(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function Vb(){var e=0,t=0;if(!(r[7944]|0)){qb(10568);Fe(61,10568,g|0)|0;t=7944;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10568)|0)){e=10568;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));qb(10568)}return 10568}function qb(e){e=e|0;Yb(e);return}function Gb(e){e=e|0;$b(e+24|0);return}function $b(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function Yb(e){e=e|0;var t=0;t=Za()|0;nl(e,1,17,t,Yc()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Kb(e){e=e|0;return Qb(o[(Xb(e)|0)>>2]|0)|0}function Xb(e){e=e|0;return(o[(Vb()|0)+24>>2]|0)+(e<<3)|0}function Qb(e){e=e|0;return Jc(TA[e&7]()|0)|0}function Jb(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function Zb(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=ew(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;tw(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;Jb(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;nw(e,i);rw(i);h=l;return}}function ew(e){e=e|0;return 536870911}function tw(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function nw(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function rw(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function iw(){ow();return}function ow(){uw(10604);return}function uw(e){e=e|0;aw(e,4955);return}function aw(e,t){e=e|0;t=t|0;var n=0;n=lw()|0;o[e>>2]=n;sw(n,t);cw(o[e>>2]|0);return}function lw(){var e=0;if(!(r[7952]|0)){bw(10612);Fe(25,10612,g|0)|0;e=7952;o[e>>2]=1;o[e+4>>2]=0}return 10612}function sw(e,t){e=e|0;t=t|0;o[e>>2]=vw()|0;o[e+4>>2]=mw()|0;o[e+12>>2]=t;o[e+8>>2]=gw()|0;o[e+32>>2]=8;return}function cw(e){e=e|0;var t=0,n=0;t=h;h=h+16|0;n=t;fw()|0;o[n>>2]=e;dw(10608,n);h=t;return}function fw(){if(!(r[11714]|0)){o[2652]=0;Fe(62,10608,g|0)|0;r[11714]=1}return 10608}function dw(e,t){e=e|0;t=t|0;var n=0;n=$T(8)|0;o[n+4>>2]=o[t>>2];o[n>>2]=o[e>>2];o[e>>2]=n;return}function pw(e){e=e|0;hw(e);return}function hw(e){e=e|0;var t=0,n=0;t=o[e>>2]|0;if(t|0)do{n=t;t=o[t>>2]|0;KT(n)}while((t|0)!=0);o[e>>2]=0;return}function vw(){return 11715}function mw(){return 1496}function gw(){return Wm()|0}function yw(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){_w(n);KT(n)}}else if(t|0)KT(t);return}function _w(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function bw(e){e=e|0;Al(e);return}function ww(e,t){e=e|0;t=t|0;var n=0,r=0;fw()|0;n=o[2652]|0;e:do{if(n|0){while(1){r=o[n+4>>2]|0;if(r|0?(rT(Ew(r)|0,e)|0)==0:0)break;n=o[n>>2]|0;if(!n)break e}Dw(r,t)}}while(0);return}function Ew(e){e=e|0;return o[e+12>>2]|0}function Dw(e,t){e=e|0;t=t|0;var n=0;e=e+36|0;n=o[e>>2]|0;if(n|0){Ji(n);KT(n)}n=$T(4)|0;yu(n,t);o[e>>2]=n;return}function Sw(){if(!(r[11716]|0)){o[2664]=0;Fe(63,10656,g|0)|0;r[11716]=1}return 10656}function Cw(){var e=0;if(!(r[11717]|0)){kw();o[2665]=1504;r[11717]=1;e=1504}else e=o[2665]|0;return e|0}function kw(){if(!(r[11740]|0)){r[11718]=za(za(8,0)|0,0)|0;r[11719]=za(za(0,0)|0,0)|0;r[11720]=za(za(0,16)|0,0)|0;r[11721]=za(za(8,0)|0,0)|0;r[11722]=za(za(0,0)|0,0)|0;r[11723]=za(za(8,0)|0,0)|0;r[11724]=za(za(0,0)|0,0)|0;r[11725]=za(za(8,0)|0,0)|0;r[11726]=za(za(0,0)|0,0)|0;r[11727]=za(za(8,0)|0,0)|0;r[11728]=za(za(0,0)|0,0)|0;r[11729]=za(za(0,0)|0,32)|0;r[11730]=za(za(0,0)|0,32)|0;r[11740]=1}return}function Tw(){return 1572}function xw(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var u=0,a=0,l=0,s=0,c=0,f=0;u=h;h=h+32|0;f=u+16|0;c=u+12|0;s=u+8|0;l=u+4|0;a=u;o[f>>2]=e;o[c>>2]=t;o[s>>2]=n;o[l>>2]=r;o[a>>2]=i;Sw()|0;Aw(10656,f,c,s,l,a);h=u;return}function Aw(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;var a=0;a=$T(24)|0;Ua(a+4|0,o[t>>2]|0,o[n>>2]|0,o[r>>2]|0,o[i>>2]|0,o[u>>2]|0);o[a>>2]=o[e>>2];o[e>>2]=a;return}function Ow(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0,b=0;b=h;h=h+32|0;m=b+20|0;g=b+8|0;y=b+4|0;_=b;t=o[t>>2]|0;if(t|0){v=m+4|0;s=m+8|0;c=g+4|0;f=g+8|0;d=g+8|0;p=m+8|0;do{a=t+4|0;l=Pw(a)|0;if(l|0){i=Iw(l)|0;o[m>>2]=0;o[v>>2]=0;o[s>>2]=0;r=(Nw(l)|0)+1|0;Mw(m,r);if(r|0)while(1){r=r+-1|0;gk(g,o[i>>2]|0);u=o[v>>2]|0;if(u>>>0<(o[p>>2]|0)>>>0){o[u>>2]=o[g>>2];o[v>>2]=(o[v>>2]|0)+4}else Rw(m,g);if(!r)break;else i=i+4|0}r=Fw(l)|0;o[g>>2]=0;o[c>>2]=0;o[f>>2]=0;e:do{if(o[r>>2]|0){i=0;u=0;while(1){if((i|0)==(u|0))Lw(g,r);else{o[i>>2]=o[r>>2];o[c>>2]=(o[c>>2]|0)+4}r=r+4|0;if(!(o[r>>2]|0))break e;i=o[c>>2]|0;u=o[d>>2]|0}}}while(0);o[y>>2]=Bw(a)|0;o[_>>2]=Xa(l)|0;jw(n,e,y,_,m,g);Uw(g);zw(m)}t=o[t>>2]|0}while((t|0)!=0)}h=b;return}function Pw(e){e=e|0;return o[e+12>>2]|0}function Iw(e){e=e|0;return o[e+12>>2]|0}function Nw(e){e=e|0;return o[e+16>>2]|0}function Mw(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+32|0;n=i;r=o[e>>2]|0;if((o[e+8>>2]|0)-r>>2>>>0>>0){bE(n,t,(o[e+4>>2]|0)-r>>2,e+8|0);wE(e,n);EE(n)}h=i;return}function Rw(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0;a=h;h=h+32|0;n=a;r=e+4|0;i=((o[r>>2]|0)-(o[e>>2]|0)>>2)+1|0;u=mE(e)|0;if(u>>>0>>0)UT(e);else{l=o[e>>2]|0;c=(o[e+8>>2]|0)-l|0;s=c>>1;bE(n,c>>2>>>0>>1>>>0?s>>>0>>0?i:s:u,(o[r>>2]|0)-l>>2,e+8|0);u=n+8|0;o[o[u>>2]>>2]=o[t>>2];o[u>>2]=(o[u>>2]|0)+4;wE(e,n);EE(n);h=a;return}}function Fw(e){e=e|0;return o[e+8>>2]|0}function Lw(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0;a=h;h=h+32|0;n=a;r=e+4|0;i=((o[r>>2]|0)-(o[e>>2]|0)>>2)+1|0;u=pE(e)|0;if(u>>>0>>0)UT(e);else{l=o[e>>2]|0;c=(o[e+8>>2]|0)-l|0;s=c>>1;gE(n,c>>2>>>0>>1>>>0?s>>>0>>0?i:s:u,(o[r>>2]|0)-l>>2,e+8|0);u=n+8|0;o[o[u>>2]>>2]=o[t>>2];o[u>>2]=(o[u>>2]|0)+4;yE(e,n);_E(n);h=a;return}}function Bw(e){e=e|0;return o[e>>2]|0}function jw(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;Ww(e,t,n,r,i,o);return}function Uw(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-4-r|0)>>>2)<<2);KT(n)}return}function zw(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-4-r|0)>>>2)<<2);KT(n)}return}function Ww(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;var a=0,l=0,s=0,c=0,f=0,d=0;a=h;h=h+48|0;f=a+40|0;l=a+32|0;d=a+24|0;s=a+12|0;c=a;Dk(l);e=Eu(e)|0;o[d>>2]=o[t>>2];n=o[n>>2]|0;r=o[r>>2]|0;Hw(s,i);Vw(c,u);o[f>>2]=o[d>>2];qw(e,f,n,r,s,c);Uw(c);zw(s);Ck(l);h=a;return}function Hw(e,t){e=e|0;t=t|0;var n=0,r=0;o[e>>2]=0;o[e+4>>2]=0;o[e+8>>2]=0;n=t+4|0;r=(o[n>>2]|0)-(o[t>>2]|0)>>2;if(r|0){hE(e,r);vE(e,o[t>>2]|0,o[n>>2]|0,r)}return}function Vw(e,t){e=e|0;t=t|0;var n=0,r=0;o[e>>2]=0;o[e+4>>2]=0;o[e+8>>2]=0;n=t+4|0;r=(o[n>>2]|0)-(o[t>>2]|0)>>2;if(r|0){fE(e,r);dE(e,o[t>>2]|0,o[n>>2]|0,r)}return}function qw(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;var a=0,l=0,s=0,c=0,f=0,d=0;a=h;h=h+32|0;f=a+28|0;d=a+24|0;l=a+12|0;s=a;c=Cu(Gw()|0)|0;o[d>>2]=o[t>>2];o[f>>2]=o[d>>2];t=$w(f)|0;n=Yw(n)|0;r=Kw(r)|0;o[l>>2]=o[i>>2];f=i+4|0;o[l+4>>2]=o[f>>2];d=i+8|0;o[l+8>>2]=o[d>>2];o[d>>2]=0;o[f>>2]=0;o[i>>2]=0;i=Xw(l)|0;o[s>>2]=o[u>>2];f=u+4|0;o[s+4>>2]=o[f>>2];d=u+8|0;o[s+8>>2]=o[d>>2];o[d>>2]=0;o[f>>2]=0;o[u>>2]=0;Oe(0,c|0,e|0,t|0,n|0,r|0,i|0,Qw(s)|0)|0;Uw(s);zw(l);h=a;return}function Gw(){var e=0;if(!(r[7968]|0)){sE(10708);e=7968;o[e>>2]=1;o[e+4>>2]=0}return 10708}function $w(e){e=e|0;return tE(e)|0}function Yw(e){e=e|0;return Zw(e)|0}function Kw(e){e=e|0;return Jc(e)|0}function Xw(e){e=e|0;return eE(e)|0}function Qw(e){e=e|0;return Jw(e)|0}function Jw(e){e=e|0;var t=0,n=0,r=0;r=(o[e+4>>2]|0)-(o[e>>2]|0)|0;n=r>>2;r=UD(r+4|0)|0;o[r>>2]=n;if(n|0){t=0;do{o[r+4+(t<<2)>>2]=Zw(o[(o[e>>2]|0)+(t<<2)>>2]|0)|0;t=t+1|0}while((t|0)!=(n|0))}return r|0}function Zw(e){e=e|0;return e|0}function eE(e){e=e|0;var t=0,n=0,r=0;r=(o[e+4>>2]|0)-(o[e>>2]|0)|0;n=r>>2;r=UD(r+4|0)|0;o[r>>2]=n;if(n|0){t=0;do{o[r+4+(t<<2)>>2]=tE((o[e>>2]|0)+(t<<2)|0)|0;t=t+1|0}while((t|0)!=(n|0))}return r|0}function tE(e){e=e|0;var t=0,n=0,r=0,i=0;i=h;h=h+32|0;t=i+12|0;n=i;r=al(nE()|0)|0;if(!r)e=rE(e)|0;else{ll(t,r);sl(n,t);bk(e,n);e=fl(t)|0}h=i;return e|0}function nE(){var e=0;if(!(r[7960]|0)){lE(10664);Fe(25,10664,g|0)|0;e=7960;o[e>>2]=1;o[e+4>>2]=0}return 10664}function rE(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0;n=h;h=h+16|0;i=n+4|0;a=n;r=UD(8)|0;t=r;l=$T(4)|0;o[l>>2]=o[e>>2];u=t+4|0;o[u>>2]=l;e=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];iE(e,u,i);o[r>>2]=e;h=n;return t|0}function iE(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;n=$T(16)|0;o[n+4>>2]=0;o[n+8>>2]=0;o[n>>2]=1656;o[n+12>>2]=t;o[e+4>>2]=n;return}function oE(e){e=e|0;zT(e);KT(e);return}function uE(e){e=e|0;e=o[e+12>>2]|0;if(e|0)KT(e);return}function aE(e){e=e|0;KT(e);return}function lE(e){e=e|0;Al(e);return}function sE(e){e=e|0;Lu(e,cE()|0,5);return}function cE(){return 1676}function fE(e,t){e=e|0;t=t|0;var n=0;if((pE(e)|0)>>>0>>0)UT(e);if(t>>>0>1073741823)Ye();else{n=$T(t<<2)|0;o[e+4>>2]=n;o[e>>2]=n;o[e+8>>2]=n+(t<<2);return}}function dE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;r=e+4|0;e=n-t|0;if((e|0)>0){ix(o[r>>2]|0,t|0,e|0)|0;o[r>>2]=(o[r>>2]|0)+(e>>>2<<2)}return}function pE(e){e=e|0;return 1073741823}function hE(e,t){e=e|0;t=t|0;var n=0;if((mE(e)|0)>>>0>>0)UT(e);if(t>>>0>1073741823)Ye();else{n=$T(t<<2)|0;o[e+4>>2]=n;o[e>>2]=n;o[e+8>>2]=n+(t<<2);return}}function vE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;r=e+4|0;e=n-t|0;if((e|0)>0){ix(o[r>>2]|0,t|0,e|0)|0;o[r>>2]=(o[r>>2]|0)+(e>>>2<<2)}return}function mE(e){e=e|0;return 1073741823}function gE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>1073741823)Ye();else{i=$T(t<<2)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<2)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<2);return}function yE(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>2)<<2)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function _E(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-4-t|0)>>>2)<<2);e=o[e>>2]|0;if(e|0)KT(e);return}function bE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>1073741823)Ye();else{i=$T(t<<2)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<2)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<2);return}function wE(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>2)<<2)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function EE(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-4-t|0)>>>2)<<2);e=o[e>>2]|0;if(e|0)KT(e);return}function DE(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0;g=h;h=h+32|0;f=g+20|0;d=g+12|0;c=g+16|0;p=g+4|0;v=g;m=g+8|0;l=Cw()|0;u=o[l>>2]|0;a=o[u>>2]|0;if(a|0){s=o[l+8>>2]|0;l=o[l+4>>2]|0;while(1){gk(f,a);SE(e,f,l,s);u=u+4|0;a=o[u>>2]|0;if(!a)break;else{s=s+1|0;l=l+1|0}}}u=Tw()|0;a=o[u>>2]|0;if(a|0)do{gk(f,a);o[d>>2]=o[u+4>>2];CE(t,f,d);u=u+8|0;a=o[u>>2]|0}while((a|0)!=0);u=o[(fw()|0)>>2]|0;if(u|0)do{t=o[u+4>>2]|0;gk(f,o[(kE(t)|0)>>2]|0);o[d>>2]=Ew(t)|0;TE(n,f,d);u=o[u>>2]|0}while((u|0)!=0);gk(c,0);u=Sw()|0;o[f>>2]=o[c>>2];Ow(f,u,i);u=o[(fw()|0)>>2]|0;if(u|0){e=f+4|0;t=f+8|0;n=f+8|0;do{s=o[u+4>>2]|0;gk(d,o[(kE(s)|0)>>2]|0);AE(p,xE(s)|0);a=o[p>>2]|0;if(a|0){o[f>>2]=0;o[e>>2]=0;o[t>>2]=0;do{gk(v,o[(kE(o[a+4>>2]|0)|0)>>2]|0);l=o[e>>2]|0;if(l>>>0<(o[n>>2]|0)>>>0){o[l>>2]=o[v>>2];o[e>>2]=(o[e>>2]|0)+4}else Rw(f,v);a=o[a>>2]|0}while((a|0)!=0);OE(r,d,f);zw(f)}o[m>>2]=o[d>>2];c=PE(s)|0;o[f>>2]=o[m>>2];Ow(f,c,i);kl(p);u=o[u>>2]|0}while((u|0)!=0)}h=g;return}function SE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;qE(e,t,n,r);return}function CE(e,t,n){e=e|0;t=t|0;n=n|0;VE(e,t,n);return}function kE(e){e=e|0;return e|0}function TE(e,t,n){e=e|0;t=t|0;n=n|0;jE(e,t,n);return}function xE(e){e=e|0;return e+16|0}function AE(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;u=h;h=h+16|0;i=u+8|0;n=u;o[e>>2]=0;r=o[t>>2]|0;o[i>>2]=r;o[n>>2]=e;n=LE(n)|0;if(r|0){r=$T(12)|0;a=(BE(i)|0)+4|0;e=o[a+4>>2]|0;t=r+4|0;o[t>>2]=o[a>>2];o[t+4>>2]=e;t=o[o[i>>2]>>2]|0;o[i>>2]=t;if(!t)e=r;else{t=r;while(1){e=$T(12)|0;s=(BE(i)|0)+4|0;l=o[s+4>>2]|0;a=e+4|0;o[a>>2]=o[s>>2];o[a+4>>2]=l;o[t>>2]=e;a=o[o[i>>2]>>2]|0;o[i>>2]=a;if(!a)break;else t=e}}o[e>>2]=o[n>>2];o[n>>2]=r}h=u;return}function OE(e,t,n){e=e|0;t=t|0;n=n|0;IE(e,t,n);return}function PE(e){e=e|0;return e+24|0}function IE(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+32|0;a=r+24|0;i=r+16|0;l=r+12|0;u=r;Dk(i);e=Eu(e)|0;o[l>>2]=o[t>>2];Hw(u,n);o[a>>2]=o[l>>2];NE(e,a,u);zw(u);Ck(i);h=r;return}function NE(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+32|0;a=r+16|0;l=r+12|0;i=r;u=Cu(ME()|0)|0;o[l>>2]=o[t>>2];o[a>>2]=o[l>>2];t=$w(a)|0;o[i>>2]=o[n>>2];a=n+4|0;o[i+4>>2]=o[a>>2];l=n+8|0;o[i+8>>2]=o[l>>2];o[l>>2]=0;o[a>>2]=0;o[n>>2]=0;ke(0,u|0,e|0,t|0,Xw(i)|0)|0;zw(i);h=r;return}function ME(){var e=0;if(!(r[7976]|0)){RE(10720);e=7976;o[e>>2]=1;o[e+4>>2]=0}return 10720}function RE(e){e=e|0;Lu(e,FE()|0,2);return}function FE(){return 1732}function LE(e){e=e|0;return o[e>>2]|0}function BE(e){e=e|0;return o[e>>2]|0}function jE(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+32|0;u=r+16|0;i=r+8|0;a=r;Dk(i);e=Eu(e)|0;o[a>>2]=o[t>>2];n=o[n>>2]|0;o[u>>2]=o[a>>2];UE(e,u,n);Ck(i);h=r;return}function UE(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;u=r+4|0;a=r;i=Cu(zE()|0)|0;o[a>>2]=o[t>>2];o[u>>2]=o[a>>2];t=$w(u)|0;ke(0,i|0,e|0,t|0,Yw(n)|0)|0;h=r;return}function zE(){var e=0;if(!(r[7984]|0)){WE(10732);e=7984;o[e>>2]=1;o[e+4>>2]=0}return 10732}function WE(e){e=e|0;Lu(e,HE()|0,2);return}function HE(){return 1744}function VE(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+32|0;u=r+16|0;i=r+8|0;a=r;Dk(i);e=Eu(e)|0;o[a>>2]=o[t>>2];n=o[n>>2]|0;o[u>>2]=o[a>>2];UE(e,u,n);Ck(i);h=r;return}function qE(e,t,n,i){e=e|0;t=t|0;n=n|0;i=i|0;var u=0,a=0,l=0,s=0;u=h;h=h+32|0;l=u+16|0;a=u+8|0;s=u;Dk(a);e=Eu(e)|0;o[s>>2]=o[t>>2];n=r[n>>0]|0;i=r[i>>0]|0;o[l>>2]=o[s>>2];GE(e,l,n,i);Ck(a);h=u;return}function GE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;i=h;h=h+16|0;a=i+4|0;l=i;u=Cu($E()|0)|0;o[l>>2]=o[t>>2];o[a>>2]=o[l>>2];t=$w(a)|0;n=YE(n)|0;nt(0,u|0,e|0,t|0,n|0,YE(r)|0)|0;h=i;return}function $E(){var e=0;if(!(r[7992]|0)){XE(10744);e=7992;o[e>>2]=1;o[e+4>>2]=0}return 10744}function YE(e){e=e|0;return KE(e)|0}function KE(e){e=e|0;return e&255|0}function XE(e){e=e|0;Lu(e,QE()|0,3);return}function QE(){return 1756}function JE(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0;v=h;h=h+32|0;s=v+8|0;c=v+4|0;f=v+20|0;d=v;Vs(e,0);i=_k(t)|0;o[s>>2]=0;p=s+4|0;o[p>>2]=0;o[s+8>>2]=0;switch(i<<24>>24){case 0:{r[f>>0]=0;ZE(c,n,f);eD(e,c)|0;Zi(c);break}case 8:{p=yk(t)|0;r[f>>0]=8;gk(d,o[p+4>>2]|0);tD(c,n,f,d,p+8|0);eD(e,c)|0;Zi(c);break}case 9:{a=yk(t)|0;t=o[a+4>>2]|0;if(t|0){l=s+8|0;u=a+12|0;while(1){t=t+-1|0;gk(c,o[u>>2]|0);i=o[p>>2]|0;if(i>>>0<(o[l>>2]|0)>>>0){o[i>>2]=o[c>>2];o[p>>2]=(o[p>>2]|0)+4}else Rw(s,c);if(!t)break;else u=u+4|0}}r[f>>0]=9;gk(d,o[a+8>>2]|0);nD(c,n,f,d,s);eD(e,c)|0;Zi(c);break}default:{p=yk(t)|0;r[f>>0]=i;gk(d,o[p+4>>2]|0);rD(c,n,f,d);eD(e,c)|0;Zi(c)}}zw(s);h=v;return}function ZE(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,o=0;i=h;h=h+16|0;o=i;Dk(o);t=Eu(t)|0;gD(e,t,r[n>>0]|0);Ck(o);h=i;return}function eD(e,t){e=e|0;t=t|0;var n=0;n=o[e>>2]|0;if(n|0)rt(n|0);o[e>>2]=o[t>>2];o[t>>2]=0;return e|0}function tD(e,t,n,i,u){e=e|0;t=t|0;n=n|0;i=i|0;u=u|0;var a=0,l=0,s=0,c=0;a=h;h=h+32|0;s=a+16|0;l=a+8|0;c=a;Dk(l);t=Eu(t)|0;n=r[n>>0]|0;o[c>>2]=o[i>>2];u=o[u>>2]|0;o[s>>2]=o[c>>2];pD(e,t,n,s,u);Ck(l);h=a;return}function nD(e,t,n,i,u){e=e|0;t=t|0;n=n|0;i=i|0;u=u|0;var a=0,l=0,s=0,c=0,f=0;a=h;h=h+32|0;c=a+24|0;l=a+16|0;f=a+12|0;s=a;Dk(l);t=Eu(t)|0;n=r[n>>0]|0;o[f>>2]=o[i>>2];Hw(s,u);o[c>>2]=o[f>>2];sD(e,t,n,c,s);zw(s);Ck(l);h=a;return}function rD(e,t,n,i){e=e|0;t=t|0;n=n|0;i=i|0;var u=0,a=0,l=0,s=0;u=h;h=h+32|0;l=u+16|0;a=u+8|0;s=u;Dk(a);t=Eu(t)|0;n=r[n>>0]|0;o[s>>2]=o[i>>2];o[l>>2]=o[s>>2];iD(e,t,n,l);Ck(a);h=u;return}function iD(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;i=h;h=h+16|0;u=i+4|0;l=i;a=Cu(oD()|0)|0;n=YE(n)|0;o[l>>2]=o[r>>2];o[u>>2]=o[l>>2];uD(e,ke(0,a|0,t|0,n|0,$w(u)|0)|0);h=i;return}function oD(){var e=0;if(!(r[8e3]|0)){aD(10756);e=8e3;o[e>>2]=1;o[e+4>>2]=0}return 10756}function uD(e,t){e=e|0;t=t|0;Vs(e,t);return}function aD(e){e=e|0;Lu(e,lD()|0,2);return}function lD(){return 1772}function sD(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var u=0,a=0,l=0,s=0,c=0;u=h;h=h+32|0;s=u+16|0;c=u+12|0;a=u;l=Cu(cD()|0)|0;n=YE(n)|0;o[c>>2]=o[r>>2];o[s>>2]=o[c>>2];r=$w(s)|0;o[a>>2]=o[i>>2];s=i+4|0;o[a+4>>2]=o[s>>2];c=i+8|0;o[a+8>>2]=o[c>>2];o[c>>2]=0;o[s>>2]=0;o[i>>2]=0;uD(e,nt(0,l|0,t|0,n|0,r|0,Xw(a)|0)|0);zw(a);h=u;return}function cD(){var e=0;if(!(r[8008]|0)){fD(10768);e=8008;o[e>>2]=1;o[e+4>>2]=0}return 10768}function fD(e){e=e|0;Lu(e,dD()|0,3);return}function dD(){return 1784}function pD(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var u=0,a=0,l=0,s=0;u=h;h=h+16|0;l=u+4|0;s=u;a=Cu(hD()|0)|0;n=YE(n)|0;o[s>>2]=o[r>>2];o[l>>2]=o[s>>2];r=$w(l)|0;uD(e,nt(0,a|0,t|0,n|0,r|0,Kw(i)|0)|0);h=u;return}function hD(){var e=0;if(!(r[8016]|0)){vD(10780);e=8016;o[e>>2]=1;o[e+4>>2]=0}return 10780}function vD(e){e=e|0;Lu(e,mD()|0,3);return}function mD(){return 1800}function gD(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=Cu(yD()|0)|0;uD(e,it(0,r|0,t|0,YE(n)|0)|0);return}function yD(){var e=0;if(!(r[8024]|0)){_D(10792);e=8024;o[e>>2]=1;o[e+4>>2]=0}return 10792}function _D(e){e=e|0;Lu(e,bD()|0,1);return}function bD(){return 1816}function wD(){ED();DD();SD();return}function ED(){o[2702]=YT(65536)|0;return}function DD(){$D(10856);return}function SD(){CD(10816);return}function CD(e){e=e|0;kD(e,5044);TD(e)|0;return}function kD(e,t){e=e|0;t=t|0;var n=0;n=nE()|0;o[e>>2]=n;zD(n,t);cw(o[e>>2]|0);return}function TD(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,xD()|0);return e|0}function xD(){var e=0;if(!(r[8032]|0)){AD(10820);Fe(64,10820,g|0)|0;e=8032;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10820)|0))AD(10820);return 10820}function AD(e){e=e|0;ID(e);s_(e,25);return}function OD(e){e=e|0;PD(e+24|0);return}function PD(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function ID(e){e=e|0;var t=0;t=Za()|0;nl(e,5,18,t,LD()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ND(e,t){e=e|0;t=t|0;MD(e,t);return}function MD(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;n=h;h=h+16|0;r=n;i=n+4|0;cc(i,t);o[r>>2]=fc(i,t)|0;RD(e,r);h=n;return}function RD(e,t){e=e|0;t=t|0;FD(e+4|0,o[t>>2]|0);r[e+8>>0]=1;return}function FD(e,t){e=e|0;t=t|0;o[e>>2]=t;return}function LD(){return 1824}function BD(e){e=e|0;return jD(e)|0}function jD(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0;n=h;h=h+16|0;i=n+4|0;a=n;r=UD(8)|0;t=r;l=$T(4)|0;cc(i,e);FD(l,fc(i,e)|0);u=t+4|0;o[u>>2]=l;e=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];iE(e,u,i);o[r>>2]=e;h=n;return t|0}function UD(e){e=e|0;var t=0,n=0;e=e+7&-8;if(e>>>0<=32768?(t=o[2701]|0,e>>>0<=(65536-t|0)>>>0):0){n=(o[2702]|0)+t|0;o[2701]=t+e;e=n}else{e=YT(e+8|0)|0;o[e>>2]=o[2703];o[2703]=e;e=e+8|0}return e|0}function zD(e,t){e=e|0;t=t|0;o[e>>2]=WD()|0;o[e+4>>2]=HD()|0;o[e+12>>2]=t;o[e+8>>2]=VD()|0;o[e+32>>2]=9;return}function WD(){return 11744}function HD(){return 1832}function VD(){return N_()|0}function qD(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){GD(n);KT(n)}}else if(t|0)KT(t);return}function GD(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function $D(e){e=e|0;YD(e,5052);KD(e)|0;XD(e,5058,26)|0;QD(e,5069,1)|0;JD(e,5077,10)|0;ZD(e,5087,19)|0;tS(e,5094,27)|0;return}function YD(e,t){e=e|0;t=t|0;var n=0;n=sk()|0;o[e>>2]=n;ck(n,t);cw(o[e>>2]|0);return}function KD(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,YC()|0);return e|0}function XD(e,t,n){e=e|0;t=t|0;n=n|0;TC(e,Ia(t)|0,n,0);return e|0}function QD(e,t,n){e=e|0;t=t|0;n=n|0;sC(e,Ia(t)|0,n,0);return e|0}function JD(e,t,n){e=e|0;t=t|0;n=n|0;BS(e,Ia(t)|0,n,0);return e|0}function ZD(e,t,n){e=e|0;t=t|0;n=n|0;bS(e,Ia(t)|0,n,0);return e|0}function eS(e,t){e=e|0;t=t|0;var n=0,r=0;e:while(1){n=o[2703]|0;while(1){if((n|0)==(t|0))break e;r=o[n>>2]|0;o[2703]=r;if(!n)n=r;else break}KT(n)}o[2701]=e;return}function tS(e,t,n){e=e|0;t=t|0;n=n|0;nS(e,Ia(t)|0,n,0);return e|0}function nS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=rS()|0;e=iS(n)|0;La(u,t,i,e,oS(n,r)|0,r);return}function rS(){var e=0,t=0;if(!(r[8040]|0)){dS(10860);Fe(65,10860,g|0)|0;t=8040;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10860)|0)){e=10860;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));dS(10860)}return 10860}function iS(e){e=e|0;return e|0}function oS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=rS()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){uS(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{aS(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function uS(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function aS(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=lS(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;sS(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;uS(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;cS(e,i);fS(i);h=l;return}}function lS(e){e=e|0;return 536870911}function sS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function cS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function fS(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function dS(e){e=e|0;vS(e);return}function pS(e){e=e|0;hS(e+24|0);return}function hS(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function vS(e){e=e|0;var t=0;t=Za()|0;nl(e,1,11,t,mS()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function mS(){return 1840}function gS(e,t,n){e=e|0;t=t|0;n=n|0;_S(o[(yS(e)|0)>>2]|0,t,n);return}function yS(e){e=e|0;return(o[(rS()|0)+24>>2]|0)+(e<<3)|0}function _S(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,o=0;r=h;h=h+16|0;o=r+1|0;i=r;cc(o,t);t=fc(o,t)|0;cc(i,n);n=fc(i,n)|0;vA[e&31](t,n);h=r;return}function bS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=wS()|0;e=ES(n)|0;La(u,t,i,e,DS(n,r)|0,r);return}function wS(){var e=0,t=0;if(!(r[8048]|0)){OS(10896);Fe(66,10896,g|0)|0;t=8048;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10896)|0)){e=10896;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));OS(10896)}return 10896}function ES(e){e=e|0;return e|0}function DS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=wS()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){SS(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{CS(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function SS(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function CS(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=kS(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;TS(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;SS(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;xS(e,i);AS(i);h=l;return}}function kS(e){e=e|0;return 536870911}function TS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function xS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function AS(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function OS(e){e=e|0;NS(e);return}function PS(e){e=e|0;IS(e+24|0);return}function IS(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function NS(e){e=e|0;var t=0;t=Za()|0;nl(e,1,11,t,MS()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function MS(){return 1852}function RS(e,t){e=e|0;t=t|0;return LS(o[(FS(e)|0)>>2]|0,t)|0}function FS(e){e=e|0;return(o[(wS()|0)+24>>2]|0)+(e<<3)|0}function LS(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;cc(r,t);t=fc(r,t)|0;t=Jc(mA[e&31](t)|0)|0;h=n;return t|0}function BS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=jS()|0;e=US(n)|0;La(u,t,i,e,zS(n,r)|0,r);return}function jS(){var e=0,t=0;if(!(r[8056]|0)){YS(10932);Fe(67,10932,g|0)|0;t=8056;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10932)|0)){e=10932;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));YS(10932)}return 10932}function US(e){e=e|0;return e|0}function zS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=jS()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){WS(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{HS(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function WS(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function HS(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=VS(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;qS(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;WS(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;GS(e,i);$S(i);h=l;return}}function VS(e){e=e|0;return 536870911}function qS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function GS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function $S(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function YS(e){e=e|0;QS(e);return}function KS(e){e=e|0;XS(e+24|0);return}function XS(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function QS(e){e=e|0;var t=0;t=Za()|0;nl(e,1,7,t,JS()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function JS(){return 1860}function ZS(e,t,n){e=e|0;t=t|0;n=n|0;return tC(o[(eC(e)|0)>>2]|0,t,n)|0}function eC(e){e=e|0;return(o[(jS()|0)+24>>2]|0)+(e<<3)|0}function tC(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0;r=h;h=h+32|0;a=r+12|0;u=r+8|0;l=r;s=r+16|0;i=r+4|0;nC(s,t);rC(l,s,t);Us(i,n);n=zs(i,n)|0;o[a>>2]=o[l>>2];PA[e&15](u,a,n);n=iC(u)|0;Zi(u);Ws(i);h=r;return n|0}function nC(e,t){e=e|0;t=t|0;return}function rC(e,t,n){e=e|0;t=t|0;n=n|0;oC(e,n);return}function iC(e){e=e|0;return Eu(e)|0}function oC(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+16|0;n=i;r=t;if(!(r&1))o[e>>2]=o[t>>2];else{uC(n,0);Be(r|0,n|0)|0;aC(e,n);lC(n)}h=i;return}function uC(e,t){e=e|0;t=t|0;Iu(e,t);o[e+4>>2]=0;r[e+8>>0]=0;return}function aC(e,t){e=e|0;t=t|0;o[e>>2]=o[t+4>>2];return}function lC(e){e=e|0;r[e+8>>0]=0;return}function sC(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=cC()|0;e=fC(n)|0;La(u,t,i,e,dC(n,r)|0,r);return}function cC(){var e=0,t=0;if(!(r[8064]|0)){_C(10968);Fe(68,10968,g|0)|0;t=8064;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10968)|0)){e=10968;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));_C(10968)}return 10968}function fC(e){e=e|0;return e|0}function dC(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=cC()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){pC(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{hC(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function pC(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function hC(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=vC(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;mC(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;pC(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;gC(e,i);yC(i);h=l;return}}function vC(e){e=e|0;return 536870911}function mC(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function gC(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function yC(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function _C(e){e=e|0;EC(e);return}function bC(e){e=e|0;wC(e+24|0);return}function wC(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function EC(e){e=e|0;var t=0;t=Za()|0;nl(e,1,1,t,DC()|0,5);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function DC(){return 1872}function SC(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;kC(o[(CC(e)|0)>>2]|0,t,n,r,i,u);return}function CC(e){e=e|0;return(o[(cC()|0)+24>>2]|0)+(e<<3)|0}function kC(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;var u=0,a=0,l=0,s=0,c=0,f=0;u=h;h=h+32|0;a=u+16|0;l=u+12|0;s=u+8|0;c=u+4|0;f=u;Us(a,t);t=zs(a,t)|0;Us(l,n);n=zs(l,n)|0;Us(s,r);r=zs(s,r)|0;Us(c,i);i=zs(c,i)|0;Us(f,o);o=zs(f,o)|0;cA[e&1](t,n,r,i,o);Ws(f);Ws(c);Ws(s);Ws(l);Ws(a);h=u;return}function TC(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=xC()|0;e=AC(n)|0;La(u,t,i,e,OC(n,r)|0,r);return}function xC(){var e=0,t=0;if(!(r[8072]|0)){LC(11004);Fe(69,11004,g|0)|0;t=8072;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(11004)|0)){e=11004;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));LC(11004)}return 11004}function AC(e){e=e|0;return e|0}function OC(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=xC()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){PC(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{IC(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function PC(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function IC(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=NC(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;MC(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;PC(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;RC(e,i);FC(i);h=l;return}}function NC(e){e=e|0;return 536870911}function MC(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function RC(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function FC(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function LC(e){e=e|0;UC(e);return}function BC(e){e=e|0;jC(e+24|0);return}function jC(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function UC(e){e=e|0;var t=0;t=Za()|0;nl(e,1,12,t,zC()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function zC(){return 1896}function WC(e,t,n){e=e|0;t=t|0;n=n|0;VC(o[(HC(e)|0)>>2]|0,t,n);return}function HC(e){e=e|0;return(o[(xC()|0)+24>>2]|0)+(e<<3)|0}function VC(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,o=0;r=h;h=h+16|0;o=r+4|0;i=r;qC(o,t);t=GC(o,t)|0;Us(i,n);n=zs(i,n)|0;vA[e&31](t,n);Ws(i);h=r;return}function qC(e,t){e=e|0;t=t|0;return}function GC(e,t){e=e|0;t=t|0;return $C(t)|0}function $C(e){e=e|0;return e|0}function YC(){var e=0;if(!(r[8080]|0)){KC(11040);Fe(70,11040,g|0)|0;e=8080;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(11040)|0))KC(11040);return 11040}function KC(e){e=e|0;JC(e);s_(e,71);return}function XC(e){e=e|0;QC(e+24|0);return}function QC(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function JC(e){e=e|0;var t=0;t=Za()|0;nl(e,5,7,t,nk()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ZC(e){e=e|0;ek(e);return}function ek(e){e=e|0;tk(e);return}function tk(e){e=e|0;r[e+8>>0]=1;return}function nk(){return 1936}function rk(){return ik()|0}function ik(){var e=0,t=0,n=0,r=0,i=0,u=0,a=0;t=h;h=h+16|0;i=t+4|0;a=t;n=UD(8)|0;e=n;u=e+4|0;o[u>>2]=$T(1)|0;r=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];ok(r,u,i);o[n>>2]=r;h=t;return e|0}function ok(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;n=$T(16)|0;o[n+4>>2]=0;o[n+8>>2]=0;o[n>>2]=1916;o[n+12>>2]=t;o[e+4>>2]=n;return}function uk(e){e=e|0;zT(e);KT(e);return}function ak(e){e=e|0;e=o[e+12>>2]|0;if(e|0)KT(e);return}function lk(e){e=e|0;KT(e);return}function sk(){var e=0;if(!(r[8088]|0)){mk(11076);Fe(25,11076,g|0)|0;e=8088;o[e>>2]=1;o[e+4>>2]=0}return 11076}function ck(e,t){e=e|0;t=t|0;o[e>>2]=fk()|0;o[e+4>>2]=dk()|0;o[e+12>>2]=t;o[e+8>>2]=pk()|0;o[e+32>>2]=10;return}function fk(){return 11745}function dk(){return 1940}function pk(){return Wm()|0}function hk(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){vk(n);KT(n)}}else if(t|0)KT(t);return}function vk(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function mk(e){e=e|0;Al(e);return}function gk(e,t){e=e|0;t=t|0;o[e>>2]=t;return}function yk(e){e=e|0;return o[e>>2]|0}function _k(e){e=e|0;return r[o[e>>2]>>0]|0}function bk(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;o[r>>2]=o[e>>2];wk(t,r)|0;h=n;return}function wk(e,t){e=e|0;t=t|0;var n=0;n=Ek(o[e>>2]|0,t)|0;t=e+4|0;o[(o[t>>2]|0)+8>>2]=n;return o[(o[t>>2]|0)+8>>2]|0}function Ek(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Dk(r);e=Eu(e)|0;t=Sk(e,o[t>>2]|0)|0;Ck(r);h=n;return t|0}function Dk(e){e=e|0;o[e>>2]=o[2701];o[e+4>>2]=o[2703];return}function Sk(e,t){e=e|0;t=t|0;var n=0;n=Cu(kk()|0)|0;return it(0,n|0,e|0,Kw(t)|0)|0}function Ck(e){e=e|0;eS(o[e>>2]|0,o[e+4>>2]|0);return}function kk(){var e=0;if(!(r[8096]|0)){Tk(11120);e=8096;o[e>>2]=1;o[e+4>>2]=0}return 11120}function Tk(e){e=e|0;Lu(e,xk()|0,1);return}function xk(){return 1948}function Ak(){Ok();return}function Ok(){var e=0,t=0,n=0,i=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0;y=h;h=h+16|0;p=y+4|0;v=y;Ne(65536,10804,o[2702]|0,10812);n=Cw()|0;t=o[n>>2]|0;e=o[t>>2]|0;if(e|0){i=o[n+8>>2]|0;n=o[n+4>>2]|0;while(1){ze(e|0,u[n>>0]|0|0,r[i>>0]|0);t=t+4|0;e=o[t>>2]|0;if(!e)break;else{i=i+1|0;n=n+1|0}}}e=Tw()|0;t=o[e>>2]|0;if(t|0)do{We(t|0,o[e+4>>2]|0);e=e+8|0;t=o[e>>2]|0}while((t|0)!=0);We(Pk()|0,5167);d=fw()|0;e=o[d>>2]|0;e:do{if(e|0){do{Ik(o[e+4>>2]|0);e=o[e>>2]|0}while((e|0)!=0);e=o[d>>2]|0;if(e|0){f=d;do{while(1){a=e;e=o[e>>2]|0;a=o[a+4>>2]|0;if(!(Nk(a)|0))break;o[v>>2]=f;o[p>>2]=o[v>>2];Mk(d,p)|0;if(!e)break e}Rk(a);f=o[f>>2]|0;t=Fk(a)|0;l=Xe()|0;s=h;h=h+((1*(t<<2)|0)+15&-16)|0;c=h;h=h+((1*(t<<2)|0)+15&-16)|0;t=o[(xE(a)|0)>>2]|0;if(t|0){n=s;i=c;while(1){o[n>>2]=o[(kE(o[t+4>>2]|0)|0)>>2];o[i>>2]=o[t+8>>2];t=o[t>>2]|0;if(!t)break;else{n=n+4|0;i=i+4|0}}}_=kE(a)|0;t=Lk(a)|0;n=Fk(a)|0;i=Bk(a)|0;Ge(_|0,t|0,s|0,c|0,n|0,i|0,Ew(a)|0);Re(l|0)}while((e|0)!=0)}}}while(0);e=o[(Sw()|0)>>2]|0;if(e|0)do{_=e+4|0;d=Pw(_)|0;a=Fw(d)|0;l=Iw(d)|0;s=(Nw(d)|0)+1|0;c=jk(d)|0;f=Uk(_)|0;d=Xa(d)|0;p=Bw(_)|0;v=zk(_)|0;Ve(0,a|0,l|0,s|0,c|0,f|0,d|0,p|0,v|0,Wk(_)|0);e=o[e>>2]|0}while((e|0)!=0);e=o[(fw()|0)>>2]|0;e:do{if(e|0){t:while(1){t=o[e+4>>2]|0;if(t|0?(m=o[(kE(t)|0)>>2]|0,g=o[(PE(t)|0)>>2]|0,g|0):0){n=g;do{t=n+4|0;i=Pw(t)|0;n:do{if(i|0)switch(Xa(i)|0){case 0:break t;case 4:case 3:case 2:{c=Fw(i)|0;f=Iw(i)|0;d=(Nw(i)|0)+1|0;p=jk(i)|0;v=Xa(i)|0;_=Bw(t)|0;Ve(m|0,c|0,f|0,d|0,p|0,0,v|0,_|0,zk(t)|0,Wk(t)|0);break n}case 1:{s=Fw(i)|0;c=Iw(i)|0;f=(Nw(i)|0)+1|0;d=jk(i)|0;p=Uk(t)|0;v=Xa(i)|0;_=Bw(t)|0;Ve(m|0,s|0,c|0,f|0,d|0,p|0,v|0,_|0,zk(t)|0,Wk(t)|0);break n}case 5:{d=Fw(i)|0;p=Iw(i)|0;v=(Nw(i)|0)+1|0;_=jk(i)|0;Ve(m|0,d|0,p|0,v|0,_|0,Hk(i)|0,Xa(i)|0,0,0,0);break n}default:break n}}while(0);n=o[n>>2]|0}while((n|0)!=0)}e=o[e>>2]|0;if(!e)break e}Ye()}}while(0);$e();h=y;return}function Pk(){return 11703}function Ik(e){e=e|0;r[e+40>>0]=0;return}function Nk(e){e=e|0;return(r[e+40>>0]|0)!=0|0}function Mk(e,t){e=e|0;t=t|0;t=Vk(t)|0;e=o[t>>2]|0;o[t>>2]=o[e>>2];KT(e);return o[t>>2]|0}function Rk(e){e=e|0;r[e+40>>0]=1;return}function Fk(e){e=e|0;return o[e+20>>2]|0}function Lk(e){e=e|0;return o[e+8>>2]|0}function Bk(e){e=e|0;return o[e+32>>2]|0}function jk(e){e=e|0;return o[e+4>>2]|0}function Uk(e){e=e|0;return o[e+4>>2]|0}function zk(e){e=e|0;return o[e+8>>2]|0}function Wk(e){e=e|0;return o[e+16>>2]|0}function Hk(e){e=e|0;return o[e+20>>2]|0}function Vk(e){e=e|0;return o[e>>2]|0}function qk(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0,b=0,w=0,E=0,D=0;D=h;h=h+16|0;p=D;do{if(e>>>0<245){c=e>>>0<11?16:e+11&-8;e=c>>>3;d=o[2783]|0;n=d>>>e;if(n&3|0){t=(n&1^1)+e|0;e=11172+(t<<1<<2)|0;n=e+8|0;r=o[n>>2]|0;i=r+8|0;u=o[i>>2]|0;if((e|0)==(u|0))o[2783]=d&~(1<>2]=e;o[n>>2]=u}E=t<<3;o[r+4>>2]=E|3;E=r+E+4|0;o[E>>2]=o[E>>2]|1;E=i;h=D;return E|0}f=o[2785]|0;if(c>>>0>f>>>0){if(n|0){t=2<>>12&16;t=t>>>a;n=t>>>5&8;t=t>>>n;i=t>>>2&4;t=t>>>i;e=t>>>1&2;t=t>>>e;r=t>>>1&1;r=(n|a|i|e|r)+(t>>>r)|0;t=11172+(r<<1<<2)|0;e=t+8|0;i=o[e>>2]|0;a=i+8|0;n=o[a>>2]|0;if((t|0)==(n|0)){e=d&~(1<>2]=t;o[e>>2]=n;e=d}u=(r<<3)-c|0;o[i+4>>2]=c|3;r=i+c|0;o[r+4>>2]=u|1;o[r+u>>2]=u;if(f|0){i=o[2788]|0;t=f>>>3;n=11172+(t<<1<<2)|0;t=1<>2]|0}o[e>>2]=i;o[t+12>>2]=i;o[i+8>>2]=t;o[i+12>>2]=n}o[2785]=u;o[2788]=r;E=a;h=D;return E|0}l=o[2784]|0;if(l){n=(l&0-l)+-1|0;a=n>>>12&16;n=n>>>a;u=n>>>5&8;n=n>>>u;s=n>>>2&4;n=n>>>s;r=n>>>1&2;n=n>>>r;e=n>>>1&1;e=o[11436+((u|a|s|r|e)+(n>>>e)<<2)>>2]|0;n=(o[e+4>>2]&-8)-c|0;r=o[e+16+(((o[e+16>>2]|0)==0&1)<<2)>>2]|0;if(!r){s=e;u=n}else{do{a=(o[r+4>>2]&-8)-c|0;s=a>>>0>>0;n=s?a:n;e=s?r:e;r=o[r+16+(((o[r+16>>2]|0)==0&1)<<2)>>2]|0}while((r|0)!=0);s=e;u=n}a=s+c|0;if(s>>>0>>0){i=o[s+24>>2]|0;t=o[s+12>>2]|0;do{if((t|0)==(s|0)){e=s+20|0;t=o[e>>2]|0;if(!t){e=s+16|0;t=o[e>>2]|0;if(!t){n=0;break}}while(1){n=t+20|0;r=o[n>>2]|0;if(r|0){t=r;e=n;continue}n=t+16|0;r=o[n>>2]|0;if(!r)break;else{t=r;e=n}}o[e>>2]=0;n=t}else{n=o[s+8>>2]|0;o[n+12>>2]=t;o[t+8>>2]=n;n=t}}while(0);do{if(i|0){t=o[s+28>>2]|0;e=11436+(t<<2)|0;if((s|0)==(o[e>>2]|0)){o[e>>2]=n;if(!n){o[2784]=l&~(1<>2]|0)!=(s|0)&1)<<2)>>2]=n;if(!n)break}o[n+24>>2]=i;t=o[s+16>>2]|0;if(t|0){o[n+16>>2]=t;o[t+24>>2]=n}t=o[s+20>>2]|0;if(t|0){o[n+20>>2]=t;o[t+24>>2]=n}}}while(0);if(u>>>0<16){E=u+c|0;o[s+4>>2]=E|3;E=s+E+4|0;o[E>>2]=o[E>>2]|1}else{o[s+4>>2]=c|3;o[a+4>>2]=u|1;o[a+u>>2]=u;if(f|0){r=o[2788]|0;t=f>>>3;n=11172+(t<<1<<2)|0;t=1<>2]|0}o[e>>2]=r;o[t+12>>2]=r;o[r+8>>2]=t;o[r+12>>2]=n}o[2785]=u;o[2788]=a}E=s+8|0;h=D;return E|0}else d=c}else d=c}else d=c}else if(e>>>0<=4294967231){e=e+11|0;c=e&-8;s=o[2784]|0;if(s){r=0-c|0;e=e>>>8;if(e){if(c>>>0>16777215)l=31;else{d=(e+1048320|0)>>>16&8;w=e<>>16&4;w=w<>>16&2;l=14-(f|d|l)+(w<>>15)|0;l=c>>>(l+7|0)&1|l<<1}}else l=0;n=o[11436+(l<<2)>>2]|0;e:do{if(!n){n=0;e=0;w=57}else{e=0;a=c<<((l|0)==31?0:25-(l>>>1)|0);u=0;while(1){i=(o[n+4>>2]&-8)-c|0;if(i>>>0>>0)if(!i){e=n;r=0;i=n;w=61;break e}else{e=n;r=i}i=o[n+20>>2]|0;n=o[n+16+(a>>>31<<2)>>2]|0;u=(i|0)==0|(i|0)==(n|0)?u:i;i=(n|0)==0;if(i){n=u;w=57;break}else a=a<<((i^1)&1)}}}while(0);if((w|0)==57){if((n|0)==0&(e|0)==0){e=2<>>12&16;d=d>>>a;u=d>>>5&8;d=d>>>u;l=d>>>2&4;d=d>>>l;f=d>>>1&2;d=d>>>f;n=d>>>1&1;e=0;n=o[11436+((u|a|l|f|n)+(d>>>n)<<2)>>2]|0}if(!n){l=e;a=r}else{i=n;w=61}}if((w|0)==61)while(1){w=0;n=(o[i+4>>2]&-8)-c|0;d=n>>>0>>0;n=d?n:r;e=d?i:e;i=o[i+16+(((o[i+16>>2]|0)==0&1)<<2)>>2]|0;if(!i){l=e;a=n;break}else{r=n;w=61}}if((l|0)!=0?a>>>0<((o[2785]|0)-c|0)>>>0:0){u=l+c|0;if(l>>>0>=u>>>0){E=0;h=D;return E|0}i=o[l+24>>2]|0;t=o[l+12>>2]|0;do{if((t|0)==(l|0)){e=l+20|0;t=o[e>>2]|0;if(!t){e=l+16|0;t=o[e>>2]|0;if(!t){t=0;break}}while(1){n=t+20|0;r=o[n>>2]|0;if(r|0){t=r;e=n;continue}n=t+16|0;r=o[n>>2]|0;if(!r)break;else{t=r;e=n}}o[e>>2]=0}else{E=o[l+8>>2]|0;o[E+12>>2]=t;o[t+8>>2]=E}}while(0);do{if(i){e=o[l+28>>2]|0;n=11436+(e<<2)|0;if((l|0)==(o[n>>2]|0)){o[n>>2]=t;if(!t){r=s&~(1<>2]|0)!=(l|0)&1)<<2)>>2]=t;if(!t){r=s;break}}o[t+24>>2]=i;e=o[l+16>>2]|0;if(e|0){o[t+16>>2]=e;o[e+24>>2]=t}e=o[l+20>>2]|0;if(e){o[t+20>>2]=e;o[e+24>>2]=t;r=s}else r=s}else r=s}while(0);do{if(a>>>0>=16){o[l+4>>2]=c|3;o[u+4>>2]=a|1;o[u+a>>2]=a;t=a>>>3;if(a>>>0<256){n=11172+(t<<1<<2)|0;e=o[2783]|0;t=1<>2]|0}o[e>>2]=u;o[t+12>>2]=u;o[u+8>>2]=t;o[u+12>>2]=n;break}t=a>>>8;if(t){if(a>>>0>16777215)t=31;else{w=(t+1048320|0)>>>16&8;E=t<>>16&4;E=E<>>16&2;t=14-(b|w|t)+(E<>>15)|0;t=a>>>(t+7|0)&1|t<<1}}else t=0;n=11436+(t<<2)|0;o[u+28>>2]=t;e=u+16|0;o[e+4>>2]=0;o[e>>2]=0;e=1<>2]=u;o[u+24>>2]=n;o[u+12>>2]=u;o[u+8>>2]=u;break}e=a<<((t|0)==31?0:25-(t>>>1)|0);n=o[n>>2]|0;while(1){if((o[n+4>>2]&-8|0)==(a|0)){w=97;break}r=n+16+(e>>>31<<2)|0;t=o[r>>2]|0;if(!t){w=96;break}else{e=e<<1;n=t}}if((w|0)==96){o[r>>2]=u;o[u+24>>2]=n;o[u+12>>2]=u;o[u+8>>2]=u;break}else if((w|0)==97){w=n+8|0;E=o[w>>2]|0;o[E+12>>2]=u;o[w>>2]=u;o[u+8>>2]=E;o[u+12>>2]=n;o[u+24>>2]=0;break}}else{E=a+c|0;o[l+4>>2]=E|3;E=l+E+4|0;o[E>>2]=o[E>>2]|1}}while(0);E=l+8|0;h=D;return E|0}else d=c}else d=c}else d=-1}while(0);n=o[2785]|0;if(n>>>0>=d>>>0){t=n-d|0;e=o[2788]|0;if(t>>>0>15){E=e+d|0;o[2788]=E;o[2785]=t;o[E+4>>2]=t|1;o[E+t>>2]=t;o[e+4>>2]=d|3}else{o[2785]=0;o[2788]=0;o[e+4>>2]=n|3;E=e+n+4|0;o[E>>2]=o[E>>2]|1}E=e+8|0;h=D;return E|0}a=o[2786]|0;if(a>>>0>d>>>0){b=a-d|0;o[2786]=b;E=o[2789]|0;w=E+d|0;o[2789]=w;o[w+4>>2]=b|1;o[E+4>>2]=d|3;E=E+8|0;h=D;return E|0}if(!(o[2901]|0)){o[2903]=4096;o[2902]=4096;o[2904]=-1;o[2905]=-1;o[2906]=0;o[2894]=0;e=p&-16^1431655768;o[p>>2]=e;o[2901]=e;e=4096}else e=o[2903]|0;l=d+48|0;s=d+47|0;u=e+s|0;i=0-e|0;c=u&i;if(c>>>0<=d>>>0){E=0;h=D;return E|0}e=o[2893]|0;if(e|0?(f=o[2891]|0,p=f+c|0,p>>>0<=f>>>0|p>>>0>e>>>0):0){E=0;h=D;return E|0}e:do{if(!(o[2894]&4)){n=o[2789]|0;t:do{if(n){r=11580;while(1){e=o[r>>2]|0;if(e>>>0<=n>>>0?(g=r+4|0,(e+(o[g>>2]|0)|0)>>>0>n>>>0):0)break;e=o[r+8>>2]|0;if(!e){w=118;break t}else r=e}t=u-a&i;if(t>>>0<2147483647){e=lx(t|0)|0;if((e|0)==((o[r>>2]|0)+(o[g>>2]|0)|0)){if((e|0)!=(-1|0)){a=t;u=e;w=135;break e}}else{r=e;w=126}}else t=0}else w=118}while(0);do{if((w|0)==118){n=lx(0)|0;if((n|0)!=(-1|0)?(t=n,v=o[2902]|0,m=v+-1|0,t=((m&t|0)==0?0:(m+t&0-v)-t|0)+c|0,v=o[2891]|0,m=t+v|0,t>>>0>d>>>0&t>>>0<2147483647):0){g=o[2893]|0;if(g|0?m>>>0<=v>>>0|m>>>0>g>>>0:0){t=0;break}e=lx(t|0)|0;if((e|0)==(n|0)){a=t;u=n;w=135;break e}else{r=e;w=126}}else t=0}}while(0);do{if((w|0)==126){n=0-t|0;if(!(l>>>0>t>>>0&(t>>>0<2147483647&(r|0)!=(-1|0))))if((r|0)==(-1|0)){t=0;break}else{a=t;u=r;w=135;break e}e=o[2903]|0;e=s-t+e&0-e;if(e>>>0>=2147483647){a=t;u=r;w=135;break e}if((lx(e|0)|0)==(-1|0)){lx(n|0)|0;t=0;break}else{a=e+t|0;u=r;w=135;break e}}}while(0);o[2894]=o[2894]|4;w=133}else{t=0;w=133}}while(0);if(((w|0)==133?c>>>0<2147483647:0)?(b=lx(c|0)|0,g=lx(0)|0,y=g-b|0,_=y>>>0>(d+40|0)>>>0,!((b|0)==(-1|0)|_^1|b>>>0>>0&((b|0)!=(-1|0)&(g|0)!=(-1|0))^1)):0){a=_?y:t;u=b;w=135}if((w|0)==135){t=(o[2891]|0)+a|0;o[2891]=t;if(t>>>0>(o[2892]|0)>>>0)o[2892]=t;s=o[2789]|0;do{if(s){t=11580;while(1){e=o[t>>2]|0;n=t+4|0;r=o[n>>2]|0;if((u|0)==(e+r|0)){w=145;break}i=o[t+8>>2]|0;if(!i)break;else t=i}if(((w|0)==145?(o[t+12>>2]&8|0)==0:0)?s>>>0>>0&s>>>0>=e>>>0:0){o[n>>2]=r+a;E=s+8|0;E=(E&7|0)==0?0:0-E&7;w=s+E|0;E=(o[2786]|0)+(a-E)|0;o[2789]=w;o[2786]=E;o[w+4>>2]=E|1;o[w+E+4>>2]=40;o[2790]=o[2905];break}if(u>>>0<(o[2787]|0)>>>0)o[2787]=u;n=u+a|0;t=11580;while(1){if((o[t>>2]|0)==(n|0)){w=153;break}e=o[t+8>>2]|0;if(!e)break;else t=e}if((w|0)==153?(o[t+12>>2]&8|0)==0:0){o[t>>2]=u;f=t+4|0;o[f>>2]=(o[f>>2]|0)+a;f=u+8|0;f=u+((f&7|0)==0?0:0-f&7)|0;t=n+8|0;t=n+((t&7|0)==0?0:0-t&7)|0;c=f+d|0;l=t-f-d|0;o[f+4>>2]=d|3;do{if((t|0)!=(s|0)){if((t|0)==(o[2788]|0)){E=(o[2785]|0)+l|0;o[2785]=E;o[2788]=c;o[c+4>>2]=E|1;o[c+E>>2]=E;break}e=o[t+4>>2]|0;if((e&3|0)==1){a=e&-8;r=e>>>3;e:do{if(e>>>0<256){e=o[t+8>>2]|0;n=o[t+12>>2]|0;if((n|0)==(e|0)){o[2783]=o[2783]&~(1<>2]=n;o[n+8>>2]=e;break}}else{u=o[t+24>>2]|0;e=o[t+12>>2]|0;do{if((e|0)==(t|0)){r=t+16|0;n=r+4|0;e=o[n>>2]|0;if(!e){e=o[r>>2]|0;if(!e){e=0;break}else n=r}while(1){r=e+20|0;i=o[r>>2]|0;if(i|0){e=i;n=r;continue}r=e+16|0;i=o[r>>2]|0;if(!i)break;else{e=i;n=r}}o[n>>2]=0}else{E=o[t+8>>2]|0;o[E+12>>2]=e;o[e+8>>2]=E}}while(0);if(!u)break;n=o[t+28>>2]|0;r=11436+(n<<2)|0;do{if((t|0)!=(o[r>>2]|0)){o[u+16+(((o[u+16>>2]|0)!=(t|0)&1)<<2)>>2]=e;if(!e)break e}else{o[r>>2]=e;if(e|0)break;o[2784]=o[2784]&~(1<>2]=u;n=t+16|0;r=o[n>>2]|0;if(r|0){o[e+16>>2]=r;o[r+24>>2]=e}n=o[n+4>>2]|0;if(!n)break;o[e+20>>2]=n;o[n+24>>2]=e}}while(0);t=t+a|0;i=a+l|0}else i=l;t=t+4|0;o[t>>2]=o[t>>2]&-2;o[c+4>>2]=i|1;o[c+i>>2]=i;t=i>>>3;if(i>>>0<256){n=11172+(t<<1<<2)|0;e=o[2783]|0;t=1<>2]|0}o[e>>2]=c;o[t+12>>2]=c;o[c+8>>2]=t;o[c+12>>2]=n;break}t=i>>>8;do{if(!t)t=0;else{if(i>>>0>16777215){t=31;break}w=(t+1048320|0)>>>16&8;E=t<>>16&4;E=E<>>16&2;t=14-(b|w|t)+(E<>>15)|0;t=i>>>(t+7|0)&1|t<<1}}while(0);r=11436+(t<<2)|0;o[c+28>>2]=t;e=c+16|0;o[e+4>>2]=0;o[e>>2]=0;e=o[2784]|0;n=1<>2]=c;o[c+24>>2]=r;o[c+12>>2]=c;o[c+8>>2]=c;break}e=i<<((t|0)==31?0:25-(t>>>1)|0);n=o[r>>2]|0;while(1){if((o[n+4>>2]&-8|0)==(i|0)){w=194;break}r=n+16+(e>>>31<<2)|0;t=o[r>>2]|0;if(!t){w=193;break}else{e=e<<1;n=t}}if((w|0)==193){o[r>>2]=c;o[c+24>>2]=n;o[c+12>>2]=c;o[c+8>>2]=c;break}else if((w|0)==194){w=n+8|0;E=o[w>>2]|0;o[E+12>>2]=c;o[w>>2]=c;o[c+8>>2]=E;o[c+12>>2]=n;o[c+24>>2]=0;break}}else{E=(o[2786]|0)+l|0;o[2786]=E;o[2789]=c;o[c+4>>2]=E|1}}while(0);E=f+8|0;h=D;return E|0}t=11580;while(1){e=o[t>>2]|0;if(e>>>0<=s>>>0?(E=e+(o[t+4>>2]|0)|0,E>>>0>s>>>0):0)break;t=o[t+8>>2]|0}i=E+-47|0;e=i+8|0;e=i+((e&7|0)==0?0:0-e&7)|0;i=s+16|0;e=e>>>0>>0?s:e;t=e+8|0;n=u+8|0;n=(n&7|0)==0?0:0-n&7;w=u+n|0;n=a+-40-n|0;o[2789]=w;o[2786]=n;o[w+4>>2]=n|1;o[w+n+4>>2]=40;o[2790]=o[2905];n=e+4|0;o[n>>2]=27;o[t>>2]=o[2895];o[t+4>>2]=o[2896];o[t+8>>2]=o[2897];o[t+12>>2]=o[2898];o[2895]=u;o[2896]=a;o[2898]=0;o[2897]=t;t=e+24|0;do{w=t;t=t+4|0;o[t>>2]=7}while((w+8|0)>>>0>>0);if((e|0)!=(s|0)){u=e-s|0;o[n>>2]=o[n>>2]&-2;o[s+4>>2]=u|1;o[e>>2]=u;t=u>>>3;if(u>>>0<256){n=11172+(t<<1<<2)|0;e=o[2783]|0;t=1<>2]|0}o[e>>2]=s;o[t+12>>2]=s;o[s+8>>2]=t;o[s+12>>2]=n;break}t=u>>>8;if(t){if(u>>>0>16777215)n=31;else{w=(t+1048320|0)>>>16&8;E=t<>>16&4;E=E<>>16&2;n=14-(b|w|n)+(E<>>15)|0;n=u>>>(n+7|0)&1|n<<1}}else n=0;r=11436+(n<<2)|0;o[s+28>>2]=n;o[s+20>>2]=0;o[i>>2]=0;t=o[2784]|0;e=1<>2]=s;o[s+24>>2]=r;o[s+12>>2]=s;o[s+8>>2]=s;break}e=u<<((n|0)==31?0:25-(n>>>1)|0);n=o[r>>2]|0;while(1){if((o[n+4>>2]&-8|0)==(u|0)){w=216;break}r=n+16+(e>>>31<<2)|0;t=o[r>>2]|0;if(!t){w=215;break}else{e=e<<1;n=t}}if((w|0)==215){o[r>>2]=s;o[s+24>>2]=n;o[s+12>>2]=s;o[s+8>>2]=s;break}else if((w|0)==216){w=n+8|0;E=o[w>>2]|0;o[E+12>>2]=s;o[w>>2]=s;o[s+8>>2]=E;o[s+12>>2]=n;o[s+24>>2]=0;break}}}else{E=o[2787]|0;if((E|0)==0|u>>>0>>0)o[2787]=u;o[2895]=u;o[2896]=a;o[2898]=0;o[2792]=o[2901];o[2791]=-1;t=0;do{E=11172+(t<<1<<2)|0;o[E+12>>2]=E;o[E+8>>2]=E;t=t+1|0}while((t|0)!=32);E=u+8|0;E=(E&7|0)==0?0:0-E&7;w=u+E|0;E=a+-40-E|0;o[2789]=w;o[2786]=E;o[w+4>>2]=E|1;o[w+E+4>>2]=40;o[2790]=o[2905]}}while(0);t=o[2786]|0;if(t>>>0>d>>>0){b=t-d|0;o[2786]=b;E=o[2789]|0;w=E+d|0;o[2789]=w;o[w+4>>2]=b|1;o[E+4>>2]=d|3;E=E+8|0;h=D;return E|0}}o[(Jk()|0)>>2]=12;E=0;h=D;return E|0}function Gk(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0,s=0;if(!e)return;n=e+-8|0;i=o[2787]|0;e=o[e+-4>>2]|0;t=e&-8;s=n+t|0;do{if(!(e&1)){r=o[n>>2]|0;if(!(e&3))return;a=n+(0-r)|0;u=r+t|0;if(a>>>0>>0)return;if((a|0)==(o[2788]|0)){e=s+4|0;t=o[e>>2]|0;if((t&3|0)!=3){l=a;t=u;break}o[2785]=u;o[e>>2]=t&-2;o[a+4>>2]=u|1;o[a+u>>2]=u;return}n=r>>>3;if(r>>>0<256){e=o[a+8>>2]|0;t=o[a+12>>2]|0;if((t|0)==(e|0)){o[2783]=o[2783]&~(1<>2]=t;o[t+8>>2]=e;l=a;t=u;break}}i=o[a+24>>2]|0;e=o[a+12>>2]|0;do{if((e|0)==(a|0)){n=a+16|0;t=n+4|0;e=o[t>>2]|0;if(!e){e=o[n>>2]|0;if(!e){e=0;break}else t=n}while(1){n=e+20|0;r=o[n>>2]|0;if(r|0){e=r;t=n;continue}n=e+16|0;r=o[n>>2]|0;if(!r)break;else{e=r;t=n}}o[t>>2]=0}else{l=o[a+8>>2]|0;o[l+12>>2]=e;o[e+8>>2]=l}}while(0);if(i){t=o[a+28>>2]|0;n=11436+(t<<2)|0;if((a|0)==(o[n>>2]|0)){o[n>>2]=e;if(!e){o[2784]=o[2784]&~(1<>2]|0)!=(a|0)&1)<<2)>>2]=e;if(!e){l=a;t=u;break}}o[e+24>>2]=i;t=a+16|0;n=o[t>>2]|0;if(n|0){o[e+16>>2]=n;o[n+24>>2]=e}t=o[t+4>>2]|0;if(t){o[e+20>>2]=t;o[t+24>>2]=e;l=a;t=u}else{l=a;t=u}}else{l=a;t=u}}else{l=n;a=n}}while(0);if(a>>>0>=s>>>0)return;e=s+4|0;r=o[e>>2]|0;if(!(r&1))return;if(!(r&2)){e=o[2788]|0;if((s|0)==(o[2789]|0)){s=(o[2786]|0)+t|0;o[2786]=s;o[2789]=l;o[l+4>>2]=s|1;if((l|0)!=(e|0))return;o[2788]=0;o[2785]=0;return}if((s|0)==(e|0)){s=(o[2785]|0)+t|0;o[2785]=s;o[2788]=a;o[l+4>>2]=s|1;o[a+s>>2]=s;return}i=(r&-8)+t|0;n=r>>>3;do{if(r>>>0<256){t=o[s+8>>2]|0;e=o[s+12>>2]|0;if((e|0)==(t|0)){o[2783]=o[2783]&~(1<>2]=e;o[e+8>>2]=t;break}}else{u=o[s+24>>2]|0;e=o[s+12>>2]|0;do{if((e|0)==(s|0)){n=s+16|0;t=n+4|0;e=o[t>>2]|0;if(!e){e=o[n>>2]|0;if(!e){n=0;break}else t=n}while(1){n=e+20|0;r=o[n>>2]|0;if(r|0){e=r;t=n;continue}n=e+16|0;r=o[n>>2]|0;if(!r)break;else{e=r;t=n}}o[t>>2]=0;n=e}else{n=o[s+8>>2]|0;o[n+12>>2]=e;o[e+8>>2]=n;n=e}}while(0);if(u|0){e=o[s+28>>2]|0;t=11436+(e<<2)|0;if((s|0)==(o[t>>2]|0)){o[t>>2]=n;if(!n){o[2784]=o[2784]&~(1<>2]|0)!=(s|0)&1)<<2)>>2]=n;if(!n)break}o[n+24>>2]=u;e=s+16|0;t=o[e>>2]|0;if(t|0){o[n+16>>2]=t;o[t+24>>2]=n}e=o[e+4>>2]|0;if(e|0){o[n+20>>2]=e;o[e+24>>2]=n}}}}while(0);o[l+4>>2]=i|1;o[a+i>>2]=i;if((l|0)==(o[2788]|0)){o[2785]=i;return}}else{o[e>>2]=r&-2;o[l+4>>2]=t|1;o[a+t>>2]=t;i=t}e=i>>>3;if(i>>>0<256){n=11172+(e<<1<<2)|0;t=o[2783]|0;e=1<>2]|0}o[t>>2]=l;o[e+12>>2]=l;o[l+8>>2]=e;o[l+12>>2]=n;return}e=i>>>8;if(e){if(i>>>0>16777215)e=31;else{a=(e+1048320|0)>>>16&8;s=e<>>16&4;s=s<>>16&2;e=14-(u|a|e)+(s<>>15)|0;e=i>>>(e+7|0)&1|e<<1}}else e=0;r=11436+(e<<2)|0;o[l+28>>2]=e;o[l+20>>2]=0;o[l+16>>2]=0;t=o[2784]|0;n=1<>>1)|0);n=o[r>>2]|0;while(1){if((o[n+4>>2]&-8|0)==(i|0)){e=73;break}r=n+16+(t>>>31<<2)|0;e=o[r>>2]|0;if(!e){e=72;break}else{t=t<<1;n=e}}if((e|0)==72){o[r>>2]=l;o[l+24>>2]=n;o[l+12>>2]=l;o[l+8>>2]=l;break}else if((e|0)==73){a=n+8|0;s=o[a>>2]|0;o[s+12>>2]=l;o[a>>2]=l;o[l+8>>2]=s;o[l+12>>2]=n;o[l+24>>2]=0;break}}else{o[2784]=t|n;o[r>>2]=l;o[l+24>>2]=r;o[l+12>>2]=l;o[l+8>>2]=l}}while(0);s=(o[2791]|0)+-1|0;o[2791]=s;if(!s)e=11588;else return;while(1){e=o[e>>2]|0;if(!e)break;else e=e+8|0}o[2791]=-1;return}function $k(){return 11628}function Yk(e){e=e|0;var t=0,n=0;t=h;h=h+16|0;n=t;o[n>>2]=tT(o[e+60>>2]|0)|0;e=Qk(ut(6,n|0)|0)|0;h=t;return e|0}function Kk(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0;d=h;h=h+48|0;c=d+16|0;u=d;i=d+32|0;l=e+28|0;r=o[l>>2]|0;o[i>>2]=r;s=e+20|0;r=(o[s>>2]|0)-r|0;o[i+4>>2]=r;o[i+8>>2]=t;o[i+12>>2]=n;r=r+n|0;a=e+60|0;o[u>>2]=o[a>>2];o[u+4>>2]=i;o[u+8>>2]=2;u=Qk(st(146,u|0)|0)|0;e:do{if((r|0)!=(u|0)){t=2;while(1){if((u|0)<0)break;r=r-u|0;v=o[i+4>>2]|0;p=u>>>0>v>>>0;i=p?i+8|0:i;t=(p<<31>>31)+t|0;v=u-(p?v:0)|0;o[i>>2]=(o[i>>2]|0)+v;p=i+4|0;o[p>>2]=(o[p>>2]|0)-v;o[c>>2]=o[a>>2];o[c+4>>2]=i;o[c+8>>2]=t;u=Qk(st(146,c|0)|0)|0;if((r|0)==(u|0)){f=3;break e}}o[e+16>>2]=0;o[l>>2]=0;o[s>>2]=0;o[e>>2]=o[e>>2]|32;if((t|0)==2)n=0;else n=n-(o[i+4>>2]|0)|0}else f=3}while(0);if((f|0)==3){v=o[e+44>>2]|0;o[e+16>>2]=v+(o[e+48>>2]|0);o[l>>2]=v;o[s>>2]=v}h=d;return n|0}function Xk(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;i=h;h=h+32|0;u=i;r=i+20|0;o[u>>2]=o[e+60>>2];o[u+4>>2]=0;o[u+8>>2]=t;o[u+12>>2]=r;o[u+16>>2]=n;if((Qk(lt(140,u|0)|0)|0)<0){o[r>>2]=-1;e=-1}else e=o[r>>2]|0;h=i;return e|0}function Qk(e){e=e|0;if(e>>>0>4294963200){o[(Jk()|0)>>2]=0-e;e=-1}return e|0}function Jk(){return(Zk()|0)+64|0}function Zk(){return eT()|0}function eT(){return 2084}function tT(e){e=e|0;return e|0}function nT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0;u=h;h=h+32|0;i=u;o[e+36>>2]=1;if((o[e>>2]&64|0)==0?(o[i>>2]=o[e+60>>2],o[i+4>>2]=21523,o[i+8>>2]=u+16,Qe(54,i|0)|0):0)r[e+75>>0]=-1;i=Kk(e,t,n)|0;h=u;return i|0}function rT(e,t){e=e|0;t=t|0;var n=0,i=0;n=r[e>>0]|0;i=r[t>>0]|0;if(n<<24>>24==0?1:n<<24>>24!=i<<24>>24)e=i;else{do{e=e+1|0;t=t+1|0;n=r[e>>0]|0;i=r[t>>0]|0}while(!(n<<24>>24==0?1:n<<24>>24!=i<<24>>24));e=i}return(n&255)-(e&255)|0}function iT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,o=0;e:do{if(!n)e=0;else{while(1){i=r[e>>0]|0;o=r[t>>0]|0;if(i<<24>>24!=o<<24>>24)break;n=n+-1|0;if(!n){e=0;break e}else{e=e+1|0;t=t+1|0}}e=(i&255)-(o&255)|0}}while(0);return e|0}function oT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0;y=h;h=h+224|0;d=y+120|0;p=y+80|0;m=y;g=y+136|0;i=p;u=i+40|0;do{o[i>>2]=0;i=i+4|0}while((i|0)<(u|0));o[d>>2]=o[n>>2];if((uT(0,t,d,m,p)|0)<0)n=-1;else{if((o[e+76>>2]|0)>-1)v=aT(e)|0;else v=0;n=o[e>>2]|0;f=n&32;if((r[e+74>>0]|0)<1)o[e>>2]=n&-33;i=e+48|0;if(!(o[i>>2]|0)){u=e+44|0;a=o[u>>2]|0;o[u>>2]=g;l=e+28|0;o[l>>2]=g;s=e+20|0;o[s>>2]=g;o[i>>2]=80;c=e+16|0;o[c>>2]=g+80;n=uT(e,t,d,m,p)|0;if(a){_A[o[e+36>>2]&7](e,0,0)|0;n=(o[s>>2]|0)==0?-1:n;o[u>>2]=a;o[i>>2]=0;o[c>>2]=0;o[l>>2]=0;o[s>>2]=0}}else n=uT(e,t,d,m,p)|0;i=o[e>>2]|0;o[e>>2]=i|f;if(v|0)lT(e);n=(i&32|0)==0?n:-1}h=y;return n|0}function uT(e,t,n,u,a){e=e|0;t=t|0;n=n|0;u=u|0;a=a|0;var l=0,s=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0,b=0,w=0,E=0,D=0,S=0,C=0,k=0,T=0,x=0,O=0,P=0,I=0,N=0;N=h;h=h+64|0;x=N+16|0;O=N;k=N+24|0;P=N+8|0;I=N+20|0;o[x>>2]=t;D=(e|0)!=0;S=k+40|0;C=S;k=k+39|0;T=P+4|0;s=0;l=0;v=0;e:while(1){do{if((l|0)>-1)if((s|0)>(2147483647-l|0)){o[(Jk()|0)>>2]=75;l=-1;break}else{l=s+l|0;break}}while(0);s=r[t>>0]|0;if(!(s<<24>>24)){E=87;break}else f=t;t:while(1){switch(s<<24>>24){case 37:{s=f;E=9;break t}case 0:{s=f;break t}default:{}}w=f+1|0;o[x>>2]=w;s=r[w>>0]|0;f=w}t:do{if((E|0)==9)while(1){E=0;if((r[f+1>>0]|0)!=37)break t;s=s+1|0;f=f+2|0;o[x>>2]=f;if((r[f>>0]|0)==37)E=9;else break}}while(0);s=s-t|0;if(D)sT(e,t,s);if(s|0){t=f;continue}d=f+1|0;s=(r[d>>0]|0)+-48|0;if(s>>>0<10){w=(r[f+2>>0]|0)==36;b=w?s:-1;v=w?1:v;d=w?f+3|0:d}else b=-1;o[x>>2]=d;s=r[d>>0]|0;f=(s<<24>>24)+-32|0;t:do{if(f>>>0<32){p=0;m=s;while(1){s=1<>2]=d;s=r[d>>0]|0;f=(s<<24>>24)+-32|0;if(f>>>0>=32)break;else m=s}}else p=0}while(0);if(s<<24>>24==42){f=d+1|0;s=(r[f>>0]|0)+-48|0;if(s>>>0<10?(r[d+2>>0]|0)==36:0){o[a+(s<<2)>>2]=10;s=o[u+((r[f>>0]|0)+-48<<3)>>2]|0;v=1;d=d+3|0}else{if(v|0){l=-1;break}if(D){v=(o[n>>2]|0)+(4-1)&~(4-1);s=o[v>>2]|0;o[n>>2]=v+4;v=0;d=f}else{s=0;v=0;d=f}}o[x>>2]=d;w=(s|0)<0;s=w?0-s|0:s;p=w?p|8192:p}else{s=cT(x)|0;if((s|0)<0){l=-1;break}d=o[x>>2]|0}do{if((r[d>>0]|0)==46){if((r[d+1>>0]|0)!=42){o[x>>2]=d+1;f=cT(x)|0;d=o[x>>2]|0;break}m=d+2|0;f=(r[m>>0]|0)+-48|0;if(f>>>0<10?(r[d+3>>0]|0)==36:0){o[a+(f<<2)>>2]=10;f=o[u+((r[m>>0]|0)+-48<<3)>>2]|0;d=d+4|0;o[x>>2]=d;break}if(v|0){l=-1;break e}if(D){w=(o[n>>2]|0)+(4-1)&~(4-1);f=o[w>>2]|0;o[n>>2]=w+4}else f=0;o[x>>2]=m;d=m}else f=-1}while(0);_=0;while(1){if(((r[d>>0]|0)+-65|0)>>>0>57){l=-1;break e}w=d+1|0;o[x>>2]=w;m=r[(r[d>>0]|0)+-65+(5178+(_*58|0))>>0]|0;g=m&255;if((g+-1|0)>>>0<8){_=g;d=w}else break}if(!(m<<24>>24)){l=-1;break}y=(b|0)>-1;do{if(m<<24>>24==19){if(y){l=-1;break e}else E=49}else{if(y){o[a+(b<<2)>>2]=g;y=u+(b<<3)|0;b=o[y+4>>2]|0;E=O;o[E>>2]=o[y>>2];o[E+4>>2]=b;E=49;break}if(!D){l=0;break e}fT(O,g,n)}}while(0);if((E|0)==49?(E=0,!D):0){s=0;t=w;continue}d=r[d>>0]|0;d=(_|0)!=0&(d&15|0)==3?d&-33:d;y=p&-65537;b=(p&8192|0)==0?p:y;t:do{switch(d|0){case 110:switch((_&255)<<24>>24){case 0:{o[o[O>>2]>>2]=l;s=0;t=w;continue e}case 1:{o[o[O>>2]>>2]=l;s=0;t=w;continue e}case 2:{s=o[O>>2]|0;o[s>>2]=l;o[s+4>>2]=((l|0)<0)<<31>>31;s=0;t=w;continue e}case 3:{i[o[O>>2]>>1]=l;s=0;t=w;continue e}case 4:{r[o[O>>2]>>0]=l;s=0;t=w;continue e}case 6:{o[o[O>>2]>>2]=l;s=0;t=w;continue e}case 7:{s=o[O>>2]|0;o[s>>2]=l;o[s+4>>2]=((l|0)<0)<<31>>31;s=0;t=w;continue e}default:{s=0;t=w;continue e}}case 112:{d=120;f=f>>>0>8?f:8;t=b|8;E=61;break}case 88:case 120:{t=b;E=61;break}case 111:{d=O;t=o[d>>2]|0;d=o[d+4>>2]|0;g=pT(t,d,S)|0;y=C-g|0;p=0;m=5642;f=(b&8|0)==0|(f|0)>(y|0)?f:y+1|0;y=b;E=67;break}case 105:case 100:{d=O;t=o[d>>2]|0;d=o[d+4>>2]|0;if((d|0)<0){t=ZT(0,0,t|0,d|0)|0;d=A;p=O;o[p>>2]=t;o[p+4>>2]=d;p=1;m=5642;E=66;break t}else{p=(b&2049|0)!=0&1;m=(b&2048|0)==0?(b&1|0)==0?5642:5644:5643;E=66;break t}}case 117:{d=O;p=0;m=5642;t=o[d>>2]|0;d=o[d+4>>2]|0;E=66;break}case 99:{r[k>>0]=o[O>>2];t=k;p=0;m=5642;g=S;d=1;f=y;break}case 109:{d=vT(o[(Jk()|0)>>2]|0)|0;E=71;break}case 115:{d=o[O>>2]|0;d=d|0?d:5652;E=71;break}case 67:{o[P>>2]=o[O>>2];o[T>>2]=0;o[O>>2]=P;g=-1;d=P;E=75;break}case 83:{t=o[O>>2]|0;if(!f){gT(e,32,s,0,b);t=0;E=84}else{g=f;d=t;E=75}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{s=_T(e,+c[O>>3],s,f,b,d)|0;t=w;continue e}default:{p=0;m=5642;g=S;d=f;f=b}}}while(0);t:do{if((E|0)==61){b=O;_=o[b>>2]|0;b=o[b+4>>2]|0;g=dT(_,b,S,d&32)|0;m=(t&8|0)==0|(_|0)==0&(b|0)==0;p=m?0:2;m=m?5642:5642+(d>>4)|0;y=t;t=_;d=b;E=67}else if((E|0)==66){g=hT(t,d,S)|0;y=b;E=67}else if((E|0)==71){E=0;b=mT(d,0,f)|0;_=(b|0)==0;t=d;p=0;m=5642;g=_?d+f|0:b;d=_?f:b-d|0;f=y}else if((E|0)==75){E=0;m=d;t=0;f=0;while(1){p=o[m>>2]|0;if(!p)break;f=yT(I,p)|0;if((f|0)<0|f>>>0>(g-t|0)>>>0)break;t=f+t|0;if(g>>>0>t>>>0)m=m+4|0;else break}if((f|0)<0){l=-1;break e}gT(e,32,s,t,b);if(!t){t=0;E=84}else{p=0;while(1){f=o[d>>2]|0;if(!f){E=84;break t}f=yT(I,f)|0;p=f+p|0;if((p|0)>(t|0)){E=84;break t}sT(e,I,f);if(p>>>0>=t>>>0){E=84;break}else d=d+4|0}}}}while(0);if((E|0)==67){E=0;d=(t|0)!=0|(d|0)!=0;b=(f|0)!=0|d;d=((d^1)&1)+(C-g)|0;t=b?g:S;g=S;d=b?(f|0)>(d|0)?f:d:f;f=(f|0)>-1?y&-65537:y}else if((E|0)==84){E=0;gT(e,32,s,t,b^8192);s=(s|0)>(t|0)?s:t;t=w;continue}_=g-t|0;y=(d|0)<(_|0)?_:d;b=y+p|0;s=(s|0)<(b|0)?b:s;gT(e,32,s,b,f);sT(e,m,p);gT(e,48,s,b,f^65536);gT(e,48,y,_,0);sT(e,t,_);gT(e,32,s,b,f^8192);t=w}e:do{if((E|0)==87)if(!e)if(!v)l=0;else{l=1;while(1){t=o[a+(l<<2)>>2]|0;if(!t)break;fT(u+(l<<3)|0,t,n);l=l+1|0;if((l|0)>=10){l=1;break e}}while(1){if(o[a+(l<<2)>>2]|0){l=-1;break e}l=l+1|0;if((l|0)>=10){l=1;break}}}}while(0);h=N;return l|0}function aT(e){e=e|0;return 0}function lT(e){e=e|0;return}function sT(e,t,n){e=e|0;t=t|0;n=n|0;if(!(o[e>>2]&32))PT(t,n,e)|0;return}function cT(e){e=e|0;var t=0,n=0,i=0;n=o[e>>2]|0;i=(r[n>>0]|0)+-48|0;if(i>>>0<10){t=0;do{t=i+(t*10|0)|0;n=n+1|0;o[e>>2]=n;i=(r[n>>0]|0)+-48|0}while(i>>>0<10)}else t=0;return t|0}function fT(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0.0;e:do{if(t>>>0<=20)do{switch(t|0){case 9:{r=(o[n>>2]|0)+(4-1)&~(4-1);t=o[r>>2]|0;o[n>>2]=r+4;o[e>>2]=t;break e}case 10:{r=(o[n>>2]|0)+(4-1)&~(4-1);t=o[r>>2]|0;o[n>>2]=r+4;r=e;o[r>>2]=t;o[r+4>>2]=((t|0)<0)<<31>>31;break e}case 11:{r=(o[n>>2]|0)+(4-1)&~(4-1);t=o[r>>2]|0;o[n>>2]=r+4;r=e;o[r>>2]=t;o[r+4>>2]=0;break e}case 12:{r=(o[n>>2]|0)+(8-1)&~(8-1);t=r;i=o[t>>2]|0;t=o[t+4>>2]|0;o[n>>2]=r+8;r=e;o[r>>2]=i;o[r+4>>2]=t;break e}case 13:{i=(o[n>>2]|0)+(4-1)&~(4-1);r=o[i>>2]|0;o[n>>2]=i+4;r=(r&65535)<<16>>16;i=e;o[i>>2]=r;o[i+4>>2]=((r|0)<0)<<31>>31;break e}case 14:{i=(o[n>>2]|0)+(4-1)&~(4-1);r=o[i>>2]|0;o[n>>2]=i+4;i=e;o[i>>2]=r&65535;o[i+4>>2]=0;break e}case 15:{i=(o[n>>2]|0)+(4-1)&~(4-1);r=o[i>>2]|0;o[n>>2]=i+4;r=(r&255)<<24>>24;i=e;o[i>>2]=r;o[i+4>>2]=((r|0)<0)<<31>>31;break e}case 16:{i=(o[n>>2]|0)+(4-1)&~(4-1);r=o[i>>2]|0;o[n>>2]=i+4;i=e;o[i>>2]=r&255;o[i+4>>2]=0;break e}case 17:{i=(o[n>>2]|0)+(8-1)&~(8-1);u=+c[i>>3];o[n>>2]=i+8;c[e>>3]=u;break e}case 18:{i=(o[n>>2]|0)+(8-1)&~(8-1);u=+c[i>>3];o[n>>2]=i+8;c[e>>3]=u;break e}default:break e}}while(0)}while(0);return}function dT(e,t,n,i){e=e|0;t=t|0;n=n|0;i=i|0;if(!((e|0)==0&(t|0)==0))do{n=n+-1|0;r[n>>0]=u[5694+(e&15)>>0]|0|i;e=rx(e|0,t|0,4)|0;t=A}while(!((e|0)==0&(t|0)==0));return n|0}function pT(e,t,n){e=e|0;t=t|0;n=n|0;if(!((e|0)==0&(t|0)==0))do{n=n+-1|0;r[n>>0]=e&7|48;e=rx(e|0,t|0,3)|0;t=A}while(!((e|0)==0&(t|0)==0));return n|0}function hT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0;if(t>>>0>0|(t|0)==0&e>>>0>4294967295){while(1){i=cx(e|0,t|0,10,0)|0;n=n+-1|0;r[n>>0]=i&255|48;i=e;e=ax(e|0,t|0,10,0)|0;if(!(t>>>0>9|(t|0)==9&i>>>0>4294967295))break;else t=A}t=e}else t=e;if(t)while(1){n=n+-1|0;r[n>>0]=(t>>>0)%10|0|48;if(t>>>0<10)break;else t=(t>>>0)/10|0}return n|0}function vT(e){e=e|0;return kT(e,o[(CT()|0)+188>>2]|0)|0}function mT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0;a=t&255;i=(n|0)!=0;e:do{if(i&(e&3|0)!=0){u=t&255;while(1){if((r[e>>0]|0)==u<<24>>24){l=6;break e}e=e+1|0;n=n+-1|0;i=(n|0)!=0;if(!(i&(e&3|0)!=0)){l=5;break}}}else l=5}while(0);if((l|0)==5)if(i)l=6;else n=0;e:do{if((l|0)==6){u=t&255;if((r[e>>0]|0)!=u<<24>>24){i=V(a,16843009)|0;t:do{if(n>>>0>3)while(1){a=o[e>>2]^i;if((a&-2139062144^-2139062144)&a+-16843009|0)break;e=e+4|0;n=n+-4|0;if(n>>>0<=3){l=11;break t}}else l=11}while(0);if((l|0)==11)if(!n){n=0;break}while(1){if((r[e>>0]|0)==u<<24>>24)break e;e=e+1|0;n=n+-1|0;if(!n){n=0;break}}}}}while(0);return(n|0?e:0)|0}function gT(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var o=0,u=0;u=h;h=h+256|0;o=u;if((n|0)>(r|0)&(i&73728|0)==0){i=n-r|0;tx(o|0,t|0,(i>>>0<256?i:256)|0)|0;if(i>>>0>255){t=n-r|0;do{sT(e,o,256);i=i+-256|0}while(i>>>0>255);i=t&255}sT(e,o,i)}h=u;return}function yT(e,t){e=e|0;t=t|0;if(!e)e=0;else e=DT(e,t,0)|0;return e|0}function _T(e,t,n,i,a,l){e=e|0;t=+t;n=n|0;i=i|0;a=a|0;l=l|0;var s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0.0,y=0,_=0,b=0,w=0,E=0,D=0,S=0,C=0,k=0,T=0,x=0,O=0,P=0,I=0,N=0;N=h;h=h+560|0;f=N+8|0;b=N;I=N+524|0;P=I;d=N+512|0;o[b>>2]=0;O=d+12|0;bT(t)|0;if((A|0)<0){t=-t;T=1;k=5659}else{T=(a&2049|0)!=0&1;k=(a&2048|0)==0?(a&1|0)==0?5660:5665:5662}bT(t)|0;x=A&2146435072;do{if(x>>>0<2146435072|(x|0)==2146435072&0<0){g=+wT(t,b)*2.0;s=g!=0.0;if(s)o[b>>2]=(o[b>>2]|0)+-1;E=l|32;if((E|0)==97){y=l&32;m=(y|0)==0?k:k+9|0;v=T|2;s=12-i|0;do{if(!(i>>>0>11|(s|0)==0)){t=8.0;do{s=s+-1|0;t=t*16.0}while((s|0)!=0);if((r[m>>0]|0)==45){t=-(t+(-g-t));break}else{t=g+t-t;break}}else t=g}while(0);c=o[b>>2]|0;s=(c|0)<0?0-c|0:c;s=hT(s,((s|0)<0)<<31>>31,O)|0;if((s|0)==(O|0)){s=d+11|0;r[s>>0]=48}r[s+-1>>0]=(c>>31&2)+43;p=s+-2|0;r[p>>0]=l+15;d=(i|0)<1;f=(a&8|0)==0;s=I;do{x=~~t;c=s+1|0;r[s>>0]=u[5694+x>>0]|y;t=(t-+(x|0))*16.0;if((c-P|0)==1?!(f&(d&t==0.0)):0){r[c>>0]=46;s=s+2|0}else s=c}while(t!=0.0);x=s-P|0;P=O-p|0;O=(i|0)!=0&(x+-2|0)<(i|0)?i+2|0:x;s=P+v+O|0;gT(e,32,n,s,a);sT(e,m,v);gT(e,48,n,s,a^65536);sT(e,I,x);gT(e,48,O-x|0,0,0);sT(e,p,P);gT(e,32,n,s,a^8192);break}c=(i|0)<0?6:i;if(s){s=(o[b>>2]|0)+-28|0;o[b>>2]=s;t=g*268435456.0}else{t=g;s=o[b>>2]|0}x=(s|0)<0?f:f+288|0;f=x;do{S=~~t>>>0;o[f>>2]=S;f=f+4|0;t=(t-+(S>>>0))*1.0e9}while(t!=0.0);if((s|0)>0){d=x;v=f;while(1){p=(s|0)<29?s:29;s=v+-4|0;if(s>>>0>=d>>>0){f=0;do{D=nx(o[s>>2]|0,0,p|0)|0;D=ex(D|0,A|0,f|0,0)|0;S=A;w=cx(D|0,S|0,1e9,0)|0;o[s>>2]=w;f=ax(D|0,S|0,1e9,0)|0;s=s+-4|0}while(s>>>0>=d>>>0);if(f){d=d+-4|0;o[d>>2]=f}}f=v;while(1){if(f>>>0<=d>>>0)break;s=f+-4|0;if(!(o[s>>2]|0))f=s;else break}s=(o[b>>2]|0)-p|0;o[b>>2]=s;if((s|0)>0)v=f;else break}}else d=x;if((s|0)<0){i=((c+25|0)/9|0)+1|0;_=(E|0)==102;do{y=0-s|0;y=(y|0)<9?y:9;if(d>>>0>>0){p=(1<>>y;m=0;s=d;do{S=o[s>>2]|0;o[s>>2]=(S>>>y)+m;m=V(S&p,v)|0;s=s+4|0}while(s>>>0>>0);s=(o[d>>2]|0)==0?d+4|0:d;if(!m){d=s;s=f}else{o[f>>2]=m;d=s;s=f+4|0}}else{d=(o[d>>2]|0)==0?d+4|0:d;s=f}f=_?x:d;f=(s-f>>2|0)>(i|0)?f+(i<<2)|0:s;s=(o[b>>2]|0)+y|0;o[b>>2]=s}while((s|0)<0);s=d;i=f}else{s=d;i=f}S=x;if(s>>>0>>0){f=(S-s>>2)*9|0;p=o[s>>2]|0;if(p>>>0>=10){d=10;do{d=d*10|0;f=f+1|0}while(p>>>0>=d>>>0)}}else f=0;_=(E|0)==103;w=(c|0)!=0;d=c-((E|0)!=102?f:0)+((w&_)<<31>>31)|0;if((d|0)<(((i-S>>2)*9|0)+-9|0)){d=d+9216|0;y=x+4+(((d|0)/9|0)+-1024<<2)|0;d=((d|0)%9|0)+1|0;if((d|0)<9){p=10;do{p=p*10|0;d=d+1|0}while((d|0)!=9)}else p=10;v=o[y>>2]|0;m=(v>>>0)%(p>>>0)|0;d=(y+4|0)==(i|0);if(!(d&(m|0)==0)){g=(((v>>>0)/(p>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;D=(p|0)/2|0;t=m>>>0>>0?.5:d&(m|0)==(D|0)?1.0:1.5;if(T){D=(r[k>>0]|0)==45;t=D?-t:t;g=D?-g:g}d=v-m|0;o[y>>2]=d;if(g+t!=g){D=d+p|0;o[y>>2]=D;if(D>>>0>999999999){f=y;while(1){d=f+-4|0;o[f>>2]=0;if(d>>>0>>0){s=s+-4|0;o[s>>2]=0}D=(o[d>>2]|0)+1|0;o[d>>2]=D;if(D>>>0>999999999)f=d;else break}}else d=y;f=(S-s>>2)*9|0;v=o[s>>2]|0;if(v>>>0>=10){p=10;do{p=p*10|0;f=f+1|0}while(v>>>0>=p>>>0)}}else d=y}else d=y;d=d+4|0;d=i>>>0>d>>>0?d:i;D=s}else{d=i;D=s}E=d;while(1){if(E>>>0<=D>>>0){b=0;break}s=E+-4|0;if(!(o[s>>2]|0))E=s;else{b=1;break}}i=0-f|0;do{if(_){s=((w^1)&1)+c|0;if((s|0)>(f|0)&(f|0)>-5){p=l+-1|0;c=s+-1-f|0}else{p=l+-2|0;c=s+-1|0}s=a&8;if(!s){if(b?(C=o[E+-4>>2]|0,(C|0)!=0):0){if(!((C>>>0)%10|0)){d=0;s=10;do{s=s*10|0;d=d+1|0}while(!((C>>>0)%(s>>>0)|0|0))}else d=0}else d=9;s=((E-S>>2)*9|0)+-9|0;if((p|32|0)==102){y=s-d|0;y=(y|0)>0?y:0;c=(c|0)<(y|0)?c:y;y=0;break}else{y=s+f-d|0;y=(y|0)>0?y:0;c=(c|0)<(y|0)?c:y;y=0;break}}else y=s}else{p=l;y=a&8}}while(0);_=c|y;v=(_|0)!=0&1;m=(p|32|0)==102;if(m){w=0;s=(f|0)>0?f:0}else{s=(f|0)<0?i:f;s=hT(s,((s|0)<0)<<31>>31,O)|0;d=O;if((d-s|0)<2)do{s=s+-1|0;r[s>>0]=48}while((d-s|0)<2);r[s+-1>>0]=(f>>31&2)+43;s=s+-2|0;r[s>>0]=p;w=s;s=d-s|0}s=T+1+c+v+s|0;gT(e,32,n,s,a);sT(e,k,T);gT(e,48,n,s,a^65536);if(m){p=D>>>0>x>>>0?x:D;y=I+9|0;v=y;m=I+8|0;d=p;do{f=hT(o[d>>2]|0,0,y)|0;if((d|0)==(p|0)){if((f|0)==(y|0)){r[m>>0]=48;f=m}}else if(f>>>0>I>>>0){tx(I|0,48,f-P|0)|0;do{f=f+-1|0}while(f>>>0>I>>>0)}sT(e,f,v-f|0);d=d+4|0}while(d>>>0<=x>>>0);if(_|0)sT(e,5710,1);if(d>>>0>>0&(c|0)>0)while(1){f=hT(o[d>>2]|0,0,y)|0;if(f>>>0>I>>>0){tx(I|0,48,f-P|0)|0;do{f=f+-1|0}while(f>>>0>I>>>0)}sT(e,f,(c|0)<9?c:9);d=d+4|0;f=c+-9|0;if(!(d>>>0>>0&(c|0)>9)){c=f;break}else c=f}gT(e,48,c+9|0,9,0)}else{_=b?E:D+4|0;if((c|0)>-1){b=I+9|0;y=(y|0)==0;i=b;v=0-P|0;m=I+8|0;p=D;do{f=hT(o[p>>2]|0,0,b)|0;if((f|0)==(b|0)){r[m>>0]=48;f=m}do{if((p|0)==(D|0)){d=f+1|0;sT(e,f,1);if(y&(c|0)<1){f=d;break}sT(e,5710,1);f=d}else{if(f>>>0<=I>>>0)break;tx(I|0,48,f+v|0)|0;do{f=f+-1|0}while(f>>>0>I>>>0)}}while(0);P=i-f|0;sT(e,f,(c|0)>(P|0)?P:c);c=c-P|0;p=p+4|0}while(p>>>0<_>>>0&(c|0)>-1)}gT(e,48,c+18|0,18,0);sT(e,w,O-w|0)}gT(e,32,n,s,a^8192)}else{I=(l&32|0)!=0;s=T+3|0;gT(e,32,n,s,a&-65537);sT(e,k,T);sT(e,t!=t|0.0!=0.0?I?5686:5690:I?5678:5682,3);gT(e,32,n,s,a^8192)}}while(0);h=N;return((s|0)<(n|0)?n:s)|0}function bT(e){e=+e;var t=0;c[d>>3]=e;t=o[d>>2]|0;A=o[d+4>>2]|0;return t|0}function wT(e,t){e=+e;t=t|0;return+ +ET(e,t)}function ET(e,t){e=+e;t=t|0;var n=0,r=0,i=0;c[d>>3]=e;n=o[d>>2]|0;r=o[d+4>>2]|0;i=rx(n|0,r|0,52)|0;switch(i&2047){case 0:{if(e!=0.0){e=+ET(e*18446744073709551616.0,t);n=(o[t>>2]|0)+-64|0}else n=0;o[t>>2]=n;break}case 2047:break;default:{o[t>>2]=(i&2047)+-1022;o[d>>2]=n;o[d+4>>2]=r&-2146435073|1071644672;e=+c[d>>3]}}return+e}function DT(e,t,n){e=e|0;t=t|0;n=n|0;do{if(e){if(t>>>0<128){r[e>>0]=t;e=1;break}if(!(o[o[(ST()|0)+188>>2]>>2]|0))if((t&-128|0)==57216){r[e>>0]=t;e=1;break}else{o[(Jk()|0)>>2]=84;e=-1;break}if(t>>>0<2048){r[e>>0]=t>>>6|192;r[e+1>>0]=t&63|128;e=2;break}if(t>>>0<55296|(t&-8192|0)==57344){r[e>>0]=t>>>12|224;r[e+1>>0]=t>>>6&63|128;r[e+2>>0]=t&63|128;e=3;break}if((t+-65536|0)>>>0<1048576){r[e>>0]=t>>>18|240;r[e+1>>0]=t>>>12&63|128;r[e+2>>0]=t>>>6&63|128;r[e+3>>0]=t&63|128;e=4;break}else{o[(Jk()|0)>>2]=84;e=-1;break}}else e=1}while(0);return e|0}function ST(){return eT()|0}function CT(){return eT()|0}function kT(e,t){e=e|0;t=t|0;var n=0,i=0;i=0;while(1){if((u[5712+i>>0]|0)==(e|0)){e=2;break}n=i+1|0;if((n|0)==87){n=5800;i=87;e=5;break}else i=n}if((e|0)==2)if(!i)n=5800;else{n=5800;e=5}if((e|0)==5)while(1){do{e=n;n=n+1|0}while((r[e>>0]|0)!=0);i=i+-1|0;if(!i)break;else e=5}return TT(n,o[t+20>>2]|0)|0}function TT(e,t){e=e|0;t=t|0;return xT(e,t)|0}function xT(e,t){e=e|0;t=t|0;if(!t)t=0;else t=AT(o[t>>2]|0,o[t+4>>2]|0,e)|0;return(t|0?t:e)|0}function AT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,h=0;h=(o[e>>2]|0)+1794895138|0;a=OT(o[e+8>>2]|0,h)|0;i=OT(o[e+12>>2]|0,h)|0;u=OT(o[e+16>>2]|0,h)|0;e:do{if((a>>>0>>2>>>0?(p=t-(a<<2)|0,i>>>0

>>0&u>>>0

>>0):0)?((u|i)&3|0)==0:0){p=i>>>2;d=u>>>2;f=0;while(1){s=a>>>1;c=f+s|0;l=c<<1;u=l+p|0;i=OT(o[e+(u<<2)>>2]|0,h)|0;u=OT(o[e+(u+1<<2)>>2]|0,h)|0;if(!(u>>>0>>0&i>>>0<(t-u|0)>>>0)){i=0;break e}if(r[e+(u+i)>>0]|0){i=0;break e}i=rT(n,e+u|0)|0;if(!i)break;i=(i|0)<0;if((a|0)==1){i=0;break e}else{f=i?f:c;a=i?s:a-s|0}}i=l+d|0;u=OT(o[e+(i<<2)>>2]|0,h)|0;i=OT(o[e+(i+1<<2)>>2]|0,h)|0;if(i>>>0>>0&u>>>0<(t-i|0)>>>0)i=(r[e+(i+u)>>0]|0)==0?e+i|0:0;else i=0}else i=0}while(0);return i|0}function OT(e,t){e=e|0;t=t|0;var n=0;n=fx(e|0)|0;return((t|0)==0?e:n)|0}function PT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0,s=0;i=n+16|0;u=o[i>>2]|0;if(!u){if(!(IT(n)|0)){u=o[i>>2]|0;a=5}else i=0}else a=5;e:do{if((a|0)==5){s=n+20|0;l=o[s>>2]|0;i=l;if((u-l|0)>>>0>>0){i=_A[o[n+36>>2]&7](n,e,t)|0;break}t:do{if((r[n+75>>0]|0)>-1){l=t;while(1){if(!l){a=0;u=e;break t}u=l+-1|0;if((r[e+u>>0]|0)==10)break;else l=u}i=_A[o[n+36>>2]&7](n,e,l)|0;if(i>>>0>>0)break e;a=l;u=e+l|0;t=t-l|0;i=o[s>>2]|0}else{a=0;u=e}}while(0);ix(i|0,u|0,t|0)|0;o[s>>2]=(o[s>>2]|0)+t;i=a+t|0}}while(0);return i|0}function IT(e){e=e|0;var t=0,n=0;t=e+74|0;n=r[t>>0]|0;r[t>>0]=n+255|n;t=o[e>>2]|0;if(!(t&8)){o[e+8>>2]=0;o[e+4>>2]=0;n=o[e+44>>2]|0;o[e+28>>2]=n;o[e+20>>2]=n;o[e+16>>2]=n+(o[e+48>>2]|0);e=0}else{o[e>>2]=t|32;e=-1}return e|0}function NT(e,t){e=Y(e);t=Y(t);var n=0,r=0;n=MT(e)|0;do{if((n&2147483647)>>>0<=2139095040){r=MT(t)|0;if((r&2147483647)>>>0<=2139095040)if((r^n|0)<0){e=(n|0)<0?t:e;break}else{e=e>2]=e,o[d>>2]|0)|0}function RT(e,t){e=Y(e);t=Y(t);var n=0,r=0;n=FT(e)|0;do{if((n&2147483647)>>>0<=2139095040){r=FT(t)|0;if((r&2147483647)>>>0<=2139095040)if((r^n|0)<0){e=(n|0)<0?e:t;break}else{e=e>2]=e,o[d>>2]|0)|0}function LT(e,t){e=Y(e);t=Y(t);var n=0,r=0,i=0,u=0,a=0,l=0,c=0,f=0;u=(s[d>>2]=e,o[d>>2]|0);l=(s[d>>2]=t,o[d>>2]|0);n=u>>>23&255;a=l>>>23&255;c=u&-2147483648;i=l<<1;e:do{if((i|0)!=0?!((n|0)==255|((BT(t)|0)&2147483647)>>>0>2139095040):0){r=u<<1;if(r>>>0<=i>>>0){t=Y(e*Y(0.0));return Y((r|0)==(i|0)?t:e)}if(!n){n=u<<9;if((n|0)>-1){r=n;n=0;do{n=n+-1|0;r=r<<1}while((r|0)>-1)}else n=0;r=u<<1-n}else r=u&8388607|8388608;if(!a){u=l<<9;if((u|0)>-1){i=0;do{i=i+-1|0;u=u<<1}while((u|0)>-1)}else i=0;a=i;l=l<<1-i}else l=l&8388607|8388608;i=r-l|0;u=(i|0)>-1;t:do{if((n|0)>(a|0)){while(1){if(u)if(!i)break;else r=i;r=r<<1;n=n+-1|0;i=r-l|0;u=(i|0)>-1;if((n|0)<=(a|0))break t}t=Y(e*Y(0.0));break e}}while(0);if(u)if(!i){t=Y(e*Y(0.0));break}else r=i;if(r>>>0<8388608)do{r=r<<1;n=n+-1|0}while(r>>>0<8388608);if((n|0)>0)n=r+-8388608|n<<23;else n=r>>>(1-n|0);t=(o[d>>2]=n|c,Y(s[d>>2]))}else f=3}while(0);if((f|0)==3){t=Y(e*t);t=Y(t/t)}return Y(t)}function BT(e){e=Y(e);return(s[d>>2]=e,o[d>>2]|0)|0}function jT(e,t){e=e|0;t=t|0;return oT(o[582]|0,e,t)|0}function UT(e){e=e|0;Ye()}function zT(e){e=e|0;return}function WT(e,t){e=e|0;t=t|0;return 0}function HT(e){e=e|0;if((VT(e+4|0)|0)==-1){hA[o[(o[e>>2]|0)+8>>2]&127](e);e=1}else e=0;return e|0}function VT(e){e=e|0;var t=0;t=o[e>>2]|0;o[e>>2]=t+-1;return t+-1|0}function qT(e){e=e|0;if(HT(e)|0)GT(e);return}function GT(e){e=e|0;var t=0;t=e+8|0;if(!((o[t>>2]|0)!=0?(VT(t)|0)!=-1:0))hA[o[(o[e>>2]|0)+16>>2]&127](e);return}function $T(e){e=e|0;var t=0;t=(e|0)==0?1:e;while(1){e=qk(t)|0;if(e|0)break;e=QT()|0;if(!e){e=0;break}IA[e&0]()}return e|0}function YT(e){e=e|0;return $T(e)|0}function KT(e){e=e|0;Gk(e);return}function XT(e){e=e|0;if((r[e+11>>0]|0)<0)KT(o[e>>2]|0);return}function QT(){var e=0;e=o[2923]|0;o[2923]=e+0;return e|0}function JT(){}function ZT(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;r=t-r-(n>>>0>e>>>0|0)>>>0;return(A=r,e-n>>>0|0)|0}function ex(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;n=e+n>>>0;return(A=t+r+(n>>>0>>0|0)>>>0,n|0)|0}function tx(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0;a=e+n|0;t=t&255;if((n|0)>=67){while(e&3){r[e>>0]=t;e=e+1|0}i=a&-4|0;u=i-64|0;l=t|t<<8|t<<16|t<<24;while((e|0)<=(u|0)){o[e>>2]=l;o[e+4>>2]=l;o[e+8>>2]=l;o[e+12>>2]=l;o[e+16>>2]=l;o[e+20>>2]=l;o[e+24>>2]=l;o[e+28>>2]=l;o[e+32>>2]=l;o[e+36>>2]=l;o[e+40>>2]=l;o[e+44>>2]=l;o[e+48>>2]=l;o[e+52>>2]=l;o[e+56>>2]=l;o[e+60>>2]=l;e=e+64|0}while((e|0)<(i|0)){o[e>>2]=l;e=e+4|0}}while((e|0)<(a|0)){r[e>>0]=t;e=e+1|0}return a-n|0}function nx(e,t,n){e=e|0;t=t|0;n=n|0;if((n|0)<32){A=t<>>32-n;return e<>>n;return e>>>n|(t&(1<>>n-32|0}function ix(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0;if((n|0)>=8192)return He(e|0,t|0,n|0)|0;a=e|0;u=e+n|0;if((e&3)==(t&3)){while(e&3){if(!n)return a|0;r[e>>0]=r[t>>0]|0;e=e+1|0;t=t+1|0;n=n-1|0}n=u&-4|0;i=n-64|0;while((e|0)<=(i|0)){o[e>>2]=o[t>>2];o[e+4>>2]=o[t+4>>2];o[e+8>>2]=o[t+8>>2];o[e+12>>2]=o[t+12>>2];o[e+16>>2]=o[t+16>>2];o[e+20>>2]=o[t+20>>2];o[e+24>>2]=o[t+24>>2];o[e+28>>2]=o[t+28>>2];o[e+32>>2]=o[t+32>>2];o[e+36>>2]=o[t+36>>2];o[e+40>>2]=o[t+40>>2];o[e+44>>2]=o[t+44>>2];o[e+48>>2]=o[t+48>>2];o[e+52>>2]=o[t+52>>2];o[e+56>>2]=o[t+56>>2];o[e+60>>2]=o[t+60>>2];e=e+64|0;t=t+64|0}while((e|0)<(n|0)){o[e>>2]=o[t>>2];e=e+4|0;t=t+4|0}}else{n=u-4|0;while((e|0)<(n|0)){r[e>>0]=r[t>>0]|0;r[e+1>>0]=r[t+1>>0]|0;r[e+2>>0]=r[t+2>>0]|0;r[e+3>>0]=r[t+3>>0]|0;e=e+4|0;t=t+4|0}}while((e|0)<(u|0)){r[e>>0]=r[t>>0]|0;e=e+1|0;t=t+1|0}return a|0}function ox(e){e=e|0;var t=0;t=r[m+(e&255)>>0]|0;if((t|0)<8)return t|0;t=r[m+(e>>8&255)>>0]|0;if((t|0)<8)return t+8|0;t=r[m+(e>>16&255)>>0]|0;if((t|0)<8)return t+16|0;return(r[m+(e>>>24)>>0]|0)+24|0}function ux(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,h=0,v=0;f=e;s=t;c=s;a=n;p=r;l=p;if(!c){u=(i|0)!=0;if(!l){if(u){o[i>>2]=(f>>>0)%(a>>>0);o[i+4>>2]=0}p=0;i=(f>>>0)/(a>>>0)>>>0;return(A=p,i)|0}else{if(!u){p=0;i=0;return(A=p,i)|0}o[i>>2]=e|0;o[i+4>>2]=t&0;p=0;i=0;return(A=p,i)|0}}u=(l|0)==0;do{if(a){if(!u){u=($(l|0)|0)-($(c|0)|0)|0;if(u>>>0<=31){d=u+1|0;l=31-u|0;t=u-31>>31;a=d;e=f>>>(d>>>0)&t|c<>>(d>>>0)&t;u=0;l=f<>2]=e|0;o[i+4>>2]=s|t&0;p=0;i=0;return(A=p,i)|0}u=a-1|0;if(u&a|0){l=($(a|0)|0)+33-($(c|0)|0)|0;v=64-l|0;d=32-l|0;s=d>>31;h=l-32|0;t=h>>31;a=l;e=d-1>>31&c>>>(h>>>0)|(c<>>(l>>>0))&t;t=t&c>>>(l>>>0);u=f<>>(h>>>0))&s|f<>31;break}if(i|0){o[i>>2]=u&f;o[i+4>>2]=0}if((a|0)==1){h=s|t&0;v=e|0|0;return(A=h,v)|0}else{v=ox(a|0)|0;h=c>>>(v>>>0)|0;v=c<<32-v|f>>>(v>>>0)|0;return(A=h,v)|0}}else{if(u){if(i|0){o[i>>2]=(c>>>0)%(a>>>0);o[i+4>>2]=0}h=0;v=(c>>>0)/(a>>>0)>>>0;return(A=h,v)|0}if(!f){if(i|0){o[i>>2]=0;o[i+4>>2]=(c>>>0)%(l>>>0)}h=0;v=(c>>>0)/(l>>>0)>>>0;return(A=h,v)|0}u=l-1|0;if(!(u&l)){if(i|0){o[i>>2]=e|0;o[i+4>>2]=u&c|t&0}h=0;v=c>>>((ox(l|0)|0)>>>0);return(A=h,v)|0}u=($(l|0)|0)-($(c|0)|0)|0;if(u>>>0<=30){t=u+1|0;l=31-u|0;a=t;e=c<>>(t>>>0);t=c>>>(t>>>0);u=0;l=f<>2]=e|0;o[i+4>>2]=s|t&0;h=0;v=0;return(A=h,v)|0}}while(0);if(!a){c=l;s=0;l=0}else{d=n|0|0;f=p|r&0;c=ex(d|0,f|0,-1,-1)|0;n=A;s=l;l=0;do{r=s;s=u>>>31|s<<1;u=l|u<<1;r=e<<1|r>>>31|0;p=e>>>31|t<<1|0;ZT(c|0,n|0,r|0,p|0)|0;v=A;h=v>>31|((v|0)<0?-1:0)<<1;l=h&1;e=ZT(r|0,p|0,h&d|0,(((v|0)<0?-1:0)>>31|((v|0)<0?-1:0)<<1)&f|0)|0;t=A;a=a-1|0}while((a|0)!=0);c=s;s=0}a=0;if(i|0){o[i>>2]=e;o[i+4>>2]=t}h=(u|0)>>>31|(c|a)<<1|(a<<1|u>>>31)&0|s;v=(u<<1|0>>>31)&-2|l;return(A=h,v)|0}function ax(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;return ux(e,t,n,r,0)|0}function lx(e){e=e|0;var t=0,n=0;n=e+15&-16|0;t=o[f>>2]|0;e=t+n|0;if((n|0)>0&(e|0)<(t|0)|(e|0)<0){Z()|0;qe(12);return-1}o[f>>2]=e;if((e|0)>(J()|0)?(Q()|0)==0:0){o[f>>2]=t;qe(12);return-1}return t|0}function sx(e,t,n){e=e|0;t=t|0;n=n|0;var i=0;if((t|0)<(e|0)&(e|0)<(t+n|0)){i=e;t=t+n|0;e=e+n|0;while((n|0)>0){e=e-1|0;t=t-1|0;n=n-1|0;r[e>>0]=r[t>>0]|0}e=i}else ix(e,t,n)|0;return e|0}function cx(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=h;h=h+16|0;i=u|0;ux(e,t,n,r,i)|0;h=u;return(A=o[i+4>>2]|0,o[i>>2]|0)|0}function fx(e){e=e|0;return(e&255)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>>24|0}function dx(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;cA[e&1](t|0,n|0,r|0,i|0,o|0)}function px(e,t,n){e=e|0;t=t|0;n=Y(n);fA[e&1](t|0,Y(n))}function hx(e,t,n){e=e|0;t=t|0;n=+n;dA[e&31](t|0,+n)}function vx(e,t,n,r){e=e|0;t=t|0;n=Y(n);r=Y(r);return Y(pA[e&0](t|0,Y(n),Y(r)))}function mx(e,t){e=e|0;t=t|0;hA[e&127](t|0)}function gx(e,t,n){e=e|0;t=t|0;n=n|0;vA[e&31](t|0,n|0)}function yx(e,t){e=e|0;t=t|0;return mA[e&31](t|0)|0}function _x(e,t,n,r,i){e=e|0;t=t|0;n=+n;r=+r;i=i|0;gA[e&1](t|0,+n,+r,i|0)}function bx(e,t,n,r){e=e|0;t=t|0;n=+n;r=+r;yA[e&1](t|0,+n,+r)}function wx(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;return _A[e&7](t|0,n|0,r|0)|0}function Ex(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;return+bA[e&1](t|0,n|0,r|0)}function Dx(e,t){e=e|0;t=t|0;return+wA[e&15](t|0)}function Sx(e,t,n){e=e|0;t=t|0;n=+n;return EA[e&1](t|0,+n)|0}function Cx(e,t,n){e=e|0;t=t|0;n=n|0;return DA[e&15](t|0,n|0)|0}function kx(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=+r;i=+i;o=o|0;SA[e&1](t|0,n|0,+r,+i,o|0)}function Tx(e,t,n,r,i,o,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;u=u|0;CA[e&1](t|0,n|0,r|0,i|0,o|0,u|0)}function xx(e,t,n){e=e|0;t=t|0;n=n|0;return+kA[e&7](t|0,n|0)}function Ax(e){e=e|0;return TA[e&7]()|0}function Ox(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;return xA[e&1](t|0,n|0,r|0,i|0,o|0)|0}function Px(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=+i;AA[e&1](t|0,n|0,r|0,+i)}function Ix(e,t,n,r,i,o,u){e=e|0;t=t|0;n=n|0;r=Y(r);i=i|0;o=Y(o);u=u|0;OA[e&1](t|0,n|0,Y(r),i|0,Y(o),u|0)}function Nx(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;PA[e&15](t|0,n|0,r|0)}function Mx(e){e=e|0;IA[e&0]()}function Rx(e,t,n,r){e=e|0;t=t|0;n=n|0;r=+r;NA[e&15](t|0,n|0,+r)}function Fx(e,t,n){e=e|0;t=+t;n=+n;return MA[e&1](+t,+n)|0}function Lx(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;RA[e&15](t|0,n|0,r|0,i|0)}function Bx(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;K(0)}function jx(e,t){e=e|0;t=Y(t);K(1)}function Ux(e,t){e=e|0;t=+t;K(2)}function zx(e,t,n){e=e|0;t=Y(t);n=Y(n);K(3);return ft}function Wx(e){e=e|0;K(4)}function Hx(e,t){e=e|0;t=t|0;K(5)}function Vx(e){e=e|0;K(6);return 0}function qx(e,t,n,r){e=e|0;t=+t;n=+n;r=r|0;K(7)}function Gx(e,t,n){e=e|0;t=+t;n=+n;K(8)}function $x(e,t,n){e=e|0;t=t|0;n=n|0;K(9);return 0}function Yx(e,t,n){e=e|0;t=t|0;n=n|0;K(10);return 0.0}function Kx(e){e=e|0;K(11);return 0.0}function Xx(e,t){e=e|0;t=+t;K(12);return 0}function Qx(e,t){e=e|0;t=t|0;K(13);return 0}function Jx(e,t,n,r,i){e=e|0;t=t|0;n=+n;r=+r;i=i|0;K(14)}function Zx(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;K(15)}function eA(e,t){e=e|0;t=t|0;K(16);return 0.0}function tA(){K(17);return 0}function nA(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;K(18);return 0}function rA(e,t,n,r){e=e|0;t=t|0;n=n|0;r=+r;K(19)}function iA(e,t,n,r,i,o){e=e|0;t=t|0;n=Y(n);r=r|0;i=Y(i);o=o|0;K(20)}function oA(e,t,n){e=e|0;t=t|0;n=n|0;K(21)}function uA(){K(22)}function aA(e,t,n){e=e|0;t=t|0;n=+n;K(23)}function lA(e,t){e=+e;t=+t;K(24);return 0}function sA(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;K(25)}var cA=[Bx,DE];var fA=[jx,qi];var dA=[Ux,yo,_o,bo,wo,Eo,Do,So,ko,To,Ao,Oo,Po,Io,No,Mo,Ro,Fo,Lo,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux];var pA=[zx];var hA=[Wx,zT,hl,vl,ml,Kd,Xd,Qd,yb,_b,bb,oE,uE,aE,uk,ak,lk,bt,Xi,to,Co,xo,ju,Uu,Ka,Sl,Wl,ps,Ns,rc,kc,qc,df,Mf,Zf,yd,Ld,gp,Fp,th,bh,jh,iv,kv,Vv,am,xm,Wi,cg,Ag,Qg,yy,Fy,o_,g_,b_,U_,H_,ab,Db,kb,Gb,pw,Cl,OD,pS,PS,KS,bC,BC,XC,ZC,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx];var vA=[Hx,no,ro,uo,ao,lo,so,co,fo,vo,mo,go,eu,ru,iu,ou,uu,au,lu,pu,gu,Ku,Ov,$v,Ey,ND,ww,eS,Hx,Hx,Hx,Hx];var mA=[Vx,Yk,Ki,zo,qo,Go,$o,Yo,Ko,Xo,Jo,Zo,hu,vu,zu,Pm,Uy,Kb,BD,UD,Vx,Vx,Vx,Vx,Vx,Vx,Vx,Vx,Vx,Vx,Vx,Vx];var gA=[qx,Wu];var yA=[Gx,cb];var _A=[$x,Kk,Xk,nT,ac,wp,hg,ZS];var bA=[Yx,rd];var wA=[Kx,tu,nu,su,Hu,Vu,qu,Gu,$u,Yu,Kx,Kx,Kx,Kx,Kx,Kx];var EA=[Xx,p_];var DA=[Qx,WT,mu,tl,gs,Oc,Kc,zd,Up,fm,Gi,RS,Qx,Qx,Qx,Qx];var SA=[Jx,Gl];var CA=[Zx,SC];var kA=[eA,cu,Xu,Qu,Ju,Ed,eA,eA];var TA=[tA,Zu,$i,Ui,C_,$_,Pb,rk];var xA=[nA,Fr];var AA=[rA,Sh];var OA=[iA,_u];var PA=[oA,Wo,Qo,fu,du,Ls,mf,Hh,lv,Vi,JE,gS,WC,oA,oA,oA];var IA=[uA];var NA=[aA,io,oo,po,ho,Bo,jo,Uo,oh,Ng,l_,aA,aA,aA,aA,aA];var MA=[lA,vb];var RA=[sA,Bf,jm,ty,Ky,P_,Z_,Bb,yw,qD,hk,sA,sA,sA,sA,sA];return{_llvm_bswap_i32:fx,dynCall_idd:Fx,dynCall_i:Ax,_i64Subtract:ZT,___udivdi3:ax,dynCall_vif:px,setThrew:mt,dynCall_viii:Nx,_bitshift64Lshr:rx,_bitshift64Shl:nx,dynCall_vi:mx,dynCall_viiddi:kx,dynCall_diii:Ex,dynCall_iii:Cx,_memset:tx,_sbrk:lx,_memcpy:ix,__GLOBAL__sub_I_Yoga_cpp:ji,dynCall_vii:gx,___uremdi3:cx,dynCall_vid:hx,stackAlloc:dt,_nbind_init:Ak,getTempRet0:yt,dynCall_di:Dx,dynCall_iid:Sx,setTempRet0:gt,_i64Add:ex,dynCall_fiff:vx,dynCall_iiii:wx,_emscripten_get_global_libc:$k,dynCall_viid:Rx,dynCall_viiid:Px,dynCall_viififi:Ix,dynCall_ii:yx,__GLOBAL__sub_I_Binding_cc:wD,dynCall_viiii:Lx,dynCall_iiiiii:Ox,stackSave:pt,dynCall_viiiii:dx,__GLOBAL__sub_I_nbind_cc:ea,dynCall_vidd:bx,_free:Gk,runPostSets:JT,dynCall_viiiiii:Tx,establishStackSpace:vt,_memmove:sx,stackRestore:ht,_malloc:qk,__GLOBAL__sub_I_common_cc:iw,dynCall_viddi:_x,dynCall_dii:xx,dynCall_v:Mx}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii,initialStackTop;function ExitStatus(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm,ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var preloadStartTime=null,calledMain=!1;function run(e){function t(){Module.calledRun||(Module.calledRun=!0,ABORT||(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(e),postRun()))}e=e||Module.arguments,null===preloadStartTime&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0||Module.calledRun||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),t()}),1)):t()))}function exit(e,t){t&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=e,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(e)),ENVIRONMENT_IS_NODE&&process.exit(e),Module.quit(e,new ExitStatus(e)))}dependenciesFulfilled=function e(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=e)},Module.callMain=Module.callMain=function(e){e=e||[],ensureInitRuntime();var t=e.length+1;function n(){for(var e=0;e<3;e++)r.push(0)}var r=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];n();for(var i=0;i0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()},void 0===(__WEBPACK_AMD_DEFINE_RESULT__=function(){return wrapper}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__=[]))||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},3019:e=>{"use strict";e.exports={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2}},6401:(e,t,n)=>{"use strict";var r=n(7180),i=n(3354),o=!1,u=null;if(i({},(function(e,t){if(!o){if(o=!0,e)throw e;u=t}})),!o)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");e.exports=r(u.bind,u.lib)},7180:(e,t,n)=>{"use strict";var r=Object.assign||function(e){for(var t=1;t"}}]),e}(),s=function(){function e(t,n){u(this,e),this.width=t,this.height=n}return i(e,null,[{key:"fromJS",value:function(t){return new e(t.width,t.height)}}]),i(e,[{key:"fromJS",value:function(e){e(this.width,this.height)}},{key:"toString",value:function(){return""}}]),e}(),c=function(){function e(t,n){u(this,e),this.unit=t,this.value=n}return i(e,[{key:"fromJS",value:function(e){e(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case a.UNIT_POINT:return String(this.value);case a.UNIT_PERCENT:return this.value+"%";case a.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),e}();e.exports=function(e,t){function n(e,t,n){var r=e[t];e[t]=function(){for(var e=arguments.length,t=Array(e),i=0;i1?t-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:NaN,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:NaN,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:a.DIRECTION_LTR;return e.call(this,t,n,r)})),r({Config:t.Config,Node:t.Node,Layout:e("Layout",l),Size:e("Size",s),Value:e("Value",c),getInstanceCount:function(){return t.getInstanceCount.apply(t,arguments)}},a)}},2357:e=>{"use strict";e.exports=require("assert")},6417:e=>{"use strict";e.exports=require("crypto")},8614:e=>{"use strict";e.exports=require("events")},5747:e=>{"use strict";e.exports=require("fs")},8605:e=>{"use strict";e.exports=require("http")},7211:e=>{"use strict";e.exports=require("https")},2282:e=>{"use strict";e.exports=require("module")},1631:e=>{"use strict";e.exports=require("net")},2087:e=>{"use strict";e.exports=require("os")},2413:e=>{"use strict";e.exports=require("stream")},4016:e=>{"use strict";e.exports=require("tls")},3867:e=>{"use strict";e.exports=require("tty")},8835:e=>{"use strict";e.exports=require("url")},8761:e=>{"use strict";e.exports=require("zlib")}},__webpack_module_cache__={};function __webpack_require__(e){if(__webpack_module_cache__[e])return __webpack_module_cache__[e].exports;var t=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(t.exports,t,t.exports,__webpack_require__),t.loaded=!0,t.exports}return __webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),__webpack_require__(7560)})(); -return plugin; -} -}; \ No newline at end of file diff --git a/.yarn/releases/yarn-3.1.1.cjs b/.yarn/releases/yarn-3.1.1.cjs deleted file mode 100755 index f5f2adca..00000000 --- a/.yarn/releases/yarn-3.1.1.cjs +++ /dev/null @@ -1,768 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable */ -//prettier-ignore -(()=>{var Mfe=Object.create,Vf=Object.defineProperty,Ofe=Object.defineProperties,Kfe=Object.getOwnPropertyDescriptor,Ufe=Object.getOwnPropertyDescriptors,Hfe=Object.getOwnPropertyNames,hE=Object.getOwnPropertySymbols,Gfe=Object.getPrototypeOf,eb=Object.prototype.hasOwnProperty,lO=Object.prototype.propertyIsEnumerable;var cO=(t,e,r)=>e in t?Vf(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,P=(t,e)=>{for(var r in e||(e={}))eb.call(e,r)&&cO(t,r,e[r]);if(hE)for(var r of hE(e))lO.call(e,r)&&cO(t,r,e[r]);return t},_=(t,e)=>Ofe(t,Ufe(e)),jfe=t=>Vf(t,"__esModule",{value:!0});var qr=(t,e)=>{var r={};for(var i in t)eb.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(t!=null&&hE)for(var i of hE(t))e.indexOf(i)<0&&lO.call(t,i)&&(r[i]=t[i]);return r},Yfe=(t,e)=>()=>(t&&(e=t(t=0)),e),E=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),it=(t,e)=>{for(var r in e)Vf(t,r,{get:e[r],enumerable:!0})},qfe=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Hfe(e))!eb.call(t,i)&&i!=="default"&&Vf(t,i,{get:()=>e[i],enumerable:!(r=Kfe(e,i))||r.enumerable});return t},ie=t=>qfe(jfe(Vf(t!=null?Mfe(Gfe(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var MO=E((i$e,FO)=>{FO.exports=NO;NO.sync=Ahe;var LO=require("fs");function lhe(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{OO.exports=KO;KO.sync=che;var UO=require("fs");function KO(t,e,r){UO.stat(t,function(i,n){r(i,i?!1:HO(n,e))})}function che(t,e){return HO(UO.statSync(t),e)}function HO(t,e){return t.isFile()&&uhe(t,e)}function uhe(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=r&c||r&l&&n===o||r&a&&i===s||r&u&&s===0;return g}});var YO=E((o$e,jO)=>{var s$e=require("fs"),xE;process.platform==="win32"||global.TESTING_WINDOWS?xE=MO():xE=GO();jO.exports=db;db.sync=ghe;function db(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){db(t,e||{},function(s,o){s?n(s):i(o)})})}xE(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function ghe(t,e){try{return xE.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var XO=E((a$e,qO)=>{var eu=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",JO=require("path"),fhe=eu?";":":",WO=YO(),zO=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),VO=(t,e)=>{let r=e.colon||fhe,i=t.match(/\//)||eu&&t.match(/\\/)?[""]:[...eu?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=eu?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=eu?n.split(r):[""];return eu&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},_O=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=VO(t,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(zO(t));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=JO.join(h,t),d=!h&&/^\.[\\\/]/.test(t)?t.slice(0,2)+p:p;u(l(d,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];WO(c+p,{pathExt:s},(d,m)=>{if(!d&&m)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},hhe=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=VO(t,e),s=[];for(let o=0;o{"use strict";var ZO=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};Cb.exports=ZO;Cb.exports.default=ZO});var iK=E((l$e,eK)=>{"use strict";var tK=require("path"),phe=XO(),dhe=$O();function rK(t,e){let r=t.options.env||process.env,i=process.cwd(),n=t.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(t.options.cwd)}catch(a){}let o;try{o=phe.sync(t.command,{path:r[dhe({env:r})],pathExt:e?tK.delimiter:void 0})}catch(a){}finally{s&&process.chdir(i)}return o&&(o=tK.resolve(n?t.options.cwd:"",o)),o}function Che(t){return rK(t)||rK(t,!0)}eK.exports=Che});var nK=E((c$e,mb)=>{"use strict";var Eb=/([()\][%!^"`<>&|;, *?])/g;function mhe(t){return t=t.replace(Eb,"^$1"),t}function Ehe(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(Eb,"^$1"),e&&(t=t.replace(Eb,"^$1")),t}mb.exports.command=mhe;mb.exports.argument=Ehe});var oK=E((u$e,sK)=>{"use strict";sK.exports=/^#!(.*)/});var AK=E((g$e,aK)=>{"use strict";var Ihe=oK();aK.exports=(t="")=>{let e=t.match(Ihe);if(!e)return null;let[r,i]=e[0].replace(/#! ?/,"").split(" "),n=r.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var cK=E((f$e,lK)=>{"use strict";var Ib=require("fs"),yhe=AK();function whe(t){let e=150,r=Buffer.alloc(e),i;try{i=Ib.openSync(t,"r"),Ib.readSync(i,r,0,e,0),Ib.closeSync(i)}catch(n){}return yhe(r.toString())}lK.exports=whe});var hK=E((h$e,uK)=>{"use strict";var Bhe=require("path"),gK=iK(),fK=nK(),Qhe=cK(),bhe=process.platform==="win32",vhe=/\.(?:com|exe)$/i,She=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function xhe(t){t.file=gK(t);let e=t.file&&Qhe(t.file);return e?(t.args.unshift(t.file),t.command=e,gK(t)):t.file}function khe(t){if(!bhe)return t;let e=xhe(t),r=!vhe.test(e);if(t.options.forceShell||r){let i=She.test(e);t.command=Bhe.normalize(t.command),t.command=fK.command(t.command),t.args=t.args.map(s=>fK.argument(s,i));let n=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${n}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function Phe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let i={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?i:khe(i)}uK.exports=Phe});var CK=E((p$e,pK)=>{"use strict";var yb=process.platform==="win32";function wb(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function Dhe(t,e){if(!yb)return;let r=t.emit;t.emit=function(i,n){if(i==="exit"){let s=dK(n,e,"spawn");if(s)return r.call(t,"error",s)}return r.apply(t,arguments)}}function dK(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawn"):null}function Rhe(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawnSync"):null}pK.exports={hookChildProcess:Dhe,verifyENOENT:dK,verifyENOENTSync:Rhe,notFoundError:wb}});var bb=E((d$e,tu)=>{"use strict";var mK=require("child_process"),Bb=hK(),Qb=CK();function EK(t,e,r){let i=Bb(t,e,r),n=mK.spawn(i.command,i.args,i.options);return Qb.hookChildProcess(n,i),n}function Fhe(t,e,r){let i=Bb(t,e,r),n=mK.spawnSync(i.command,i.args,i.options);return n.error=n.error||Qb.verifyENOENTSync(n.status,i),n}tu.exports=EK;tu.exports.spawn=EK;tu.exports.sync=Fhe;tu.exports._parse=Bb;tu.exports._enoent=Qb});var yK=E((y$e,IK)=>{"use strict";IK.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var Nb=E((w$e,wK)=>{var gh=yK(),BK={};for(let t of Object.keys(gh))BK[gh[t]]=t;var Xe={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};wK.exports=Xe;for(let t of Object.keys(Xe)){if(!("channels"in Xe[t]))throw new Error("missing channels property: "+t);if(!("labels"in Xe[t]))throw new Error("missing channel labels property: "+t);if(Xe[t].labels.length!==Xe[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=Xe[t];delete Xe[t].channels,delete Xe[t].labels,Object.defineProperty(Xe[t],"channels",{value:e}),Object.defineProperty(Xe[t],"labels",{value:r})}Xe.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(e,r,i),s=Math.max(e,r,i),o=s-n,a,l;s===n?a=0:e===s?a=(r-i)/o:r===s?a=2+(i-e)/o:i===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360);let c=(n+s)/2;return s===n?l=0:c<=.5?l=o/(s+n):l=o/(2-s-n),[a,l*100,c*100]};Xe.rgb.hsv=function(t){let e,r,i,n,s,o=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),g=function(f){return(c-f)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,e=g(o),r=g(a),i=g(l),o===c?n=i-r:a===c?n=1/3+e-i:l===c&&(n=2/3+r-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};Xe.rgb.hwb=function(t){let e=t[0],r=t[1],i=t[2],n=Xe.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,i));return i=1-1/255*Math.max(e,Math.max(r,i)),[n,s*100,i*100]};Xe.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(1-e,1-r,1-i),s=(1-e-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,a=(1-i-n)/(1-n)||0;return[s*100,o*100,a*100,n*100]};function The(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Xe.rgb.keyword=function(t){let e=BK[t];if(e)return e;let r=Infinity,i;for(let n of Object.keys(gh)){let s=gh[n],o=The(t,s);o.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=e*.4124+r*.3576+i*.1805,s=e*.2126+r*.7152+i*.0722,o=e*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};Xe.rgb.lab=function(t){let e=Xe.rgb.xyz(t),r=e[0],i=e[1],n=e[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),a=200*(i-n);return[s,o,a]};Xe.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let a=2*i-n,l=[0,0,0];for(let c=0;c<3;c++)s=e+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=a+(n-a)*6*s:2*s<1?o=n:3*s<2?o=a+(n-a)*(2/3-s)*6:o=a,l[c]=o*255;return l};Xe.hsl.hsv=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,a=i===0?2*n/(s+n):2*r/(i+r);return[e,a*100,o*100]};Xe.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-r),a=255*i*(1-r*s),l=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,l,o];case 1:return[a,i,o];case 2:return[o,i,l];case 3:return[o,a,i];case 4:return[l,o,i];case 5:return[i,o,a]}};Xe.hsv.hsl=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let a=(2-r)*n;return s=r*n,s/=a<=1?a:2-a,s=s||0,o/=2,[e,s*100,o*100]};Xe.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*e),a=1-i;s=6*e-o,(o&1)!=0&&(s=1-s);let l=r+s*(a-r),c,u,g;switch(o){default:case 6:case 0:c=a,u=l,g=r;break;case 1:c=l,u=a,g=r;break;case 2:c=r,u=a,g=l;break;case 3:c=r,u=l,g=a;break;case 4:c=l,u=r,g=a;break;case 5:c=a,u=r,g=l;break}return[c*255,u*255,g*255]};Xe.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n=t[3]/100,s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),a=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,a*255]};Xe.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n,s,o;return n=e*3.2406+r*-1.5372+i*-.4986,s=e*-.9689+r*1.8758+i*.0415,o=e*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};Xe.xyz.lab=function(t){let e=t[0],r=t[1],i=t[2];e/=95.047,r/=100,i/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(e-r),o=200*(r-i);return[n,s,o]};Xe.lab.xyz=function(t){let e=t[0],r=t[1],i=t[2],n,s,o;s=(e+16)/116,n=r/500+s,o=s-i/200;let a=s**3,l=n**3,c=o**3;return s=a>.008856?a:(s-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};Xe.lab.lch=function(t){let e=t[0],r=t[1],i=t[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[e,o,n]};Xe.lch.lab=function(t){let e=t[0],r=t[1],n=t[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[e,s,o]};Xe.rgb.ansi16=function(t,e=null){let[r,i,n]=t,s=e===null?Xe.rgb.hsv(t)[2]:e;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};Xe.hsv.ansi16=function(t){return Xe.rgb.ansi16(Xe.hsv.rgb(t),t[2])};Xe.rgb.ansi256=function(t){let e=t[0],r=t[1],i=t[2];return e===r&&r===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};Xe.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,i=(e&1)*r*255,n=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[i,n,s]};Xe.ansi256.rgb=function(t){if(t>=232){let s=(t-232)*10+8;return[s,s,s]}t-=16;let e,r=Math.floor(t/36)/5*255,i=Math.floor((e=t%36)/6)/5*255,n=e%6/5*255;return[r,i,n]};Xe.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};Xe.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(a=>a+a).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};Xe.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.max(Math.max(e,r),i),s=Math.min(Math.min(e,r),i),o=n-s,a,l;return o<1?a=s/(1-o):a=0,o<=0?l=0:n===e?l=(r-i)/o%6:n===r?l=2+(i-e)/o:l=4+(e-r)/o,l/=6,l%=1,[l*360,o*100,a*100]};Xe.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=r<.5?2*e*r:2*e*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[t[0],i*100,n*100]};Xe.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=e*r,n=0;return i<1&&(n=(r-i)/(1-i)),[t[0],i*100,n*100]};Xe.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=e%1*6,o=s%1,a=1-o,l=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-r)*i,[(r*n[0]+l)*255,(r*n[1]+l)*255,(r*n[2]+l)*255]};Xe.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e),n=0;return i>0&&(n=e/i),[t[0],n*100,i*100]};Xe.hcg.hsl=function(t){let e=t[1]/100,i=t[2]/100*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[t[0],n*100,i*100]};Xe.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e);return[t[0],(i-e)*100,(1-i)*100]};Xe.hwb.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=1-r,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[t[0],n*100,s*100]};Xe.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Xe.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Xe.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Xe.gray.hsl=function(t){return[0,0,t[0]]};Xe.gray.hsv=Xe.gray.hsl;Xe.gray.hwb=function(t){return[0,100,t[0]]};Xe.gray.cmyk=function(t){return[0,0,0,t[0]]};Xe.gray.lab=function(t){return[t[0],0,0]};Xe.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,i=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(i.length)+i};Xe.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var bK=E((B$e,QK)=>{var kE=Nb();function Mhe(){let t={},e=Object.keys(kE);for(let r=e.length,i=0;i{var Lb=Nb(),Hhe=bK(),ru={},Ghe=Object.keys(Lb);function jhe(t){let e=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function Yhe(t){let e=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=t(r);if(typeof n=="object")for(let s=n.length,o=0;o{ru[t]={},Object.defineProperty(ru[t],"channels",{value:Lb[t].channels}),Object.defineProperty(ru[t],"labels",{value:Lb[t].labels});let e=Hhe(t);Object.keys(e).forEach(i=>{let n=e[i];ru[t][i]=Yhe(n),ru[t][i].raw=jhe(n)})});vK.exports=ru});var FK=E((b$e,xK)=>{"use strict";var kK=(t,e)=>(...r)=>`[${t(...r)+e}m`,PK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};5;${i}m`},DK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};2;${i[0]};${i[1]};${i[2]}m`},PE=t=>t,RK=(t,e,r)=>[t,e,r],iu=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let i=r();return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},Tb,nu=(t,e,r,i)=>{Tb===void 0&&(Tb=SK());let n=i?10:0,s={};for(let[o,a]of Object.entries(Tb)){let l=o==="ansi16"?"ansi":o;o===e?s[l]=t(r,n):typeof a=="object"&&(s[l]=t(a[e],n))}return s};function qhe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,i]of Object.entries(e)){for(let[n,s]of Object.entries(i))e[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=e[n],t.set(s[0],s[1]);Object.defineProperty(e,r,{value:i,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="",e.bgColor.close="",iu(e.color,"ansi",()=>nu(kK,"ansi16",PE,!1)),iu(e.color,"ansi256",()=>nu(PK,"ansi256",PE,!1)),iu(e.color,"ansi16m",()=>nu(DK,"rgb",RK,!1)),iu(e.bgColor,"ansi",()=>nu(kK,"ansi16",PE,!0)),iu(e.bgColor,"ansi256",()=>nu(PK,"ansi256",PE,!0)),iu(e.bgColor,"ansi16m",()=>nu(DK,"rgb",RK,!0)),e}Object.defineProperty(xK,"exports",{enumerable:!0,get:qhe})});var LK=E((v$e,NK)=>{"use strict";NK.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Jhe=require("os"),MK=require("tty"),Wn=LK(),{env:Wr}=process,tA;Wn("no-color")||Wn("no-colors")||Wn("color=false")||Wn("color=never")?tA=0:(Wn("color")||Wn("colors")||Wn("color=true")||Wn("color=always"))&&(tA=1);"FORCE_COLOR"in Wr&&(Wr.FORCE_COLOR==="true"?tA=1:Wr.FORCE_COLOR==="false"?tA=0:tA=Wr.FORCE_COLOR.length===0?1:Math.min(parseInt(Wr.FORCE_COLOR,10),3));function Mb(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Ob(t,e){if(tA===0)return 0;if(Wn("color=16m")||Wn("color=full")||Wn("color=truecolor"))return 3;if(Wn("color=256"))return 2;if(t&&!e&&tA===void 0)return 0;let r=tA||0;if(Wr.TERM==="dumb")return r;if(process.platform==="win32"){let i=Jhe.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in Wr)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(i=>i in Wr)||Wr.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Wr)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Wr.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Wr)return 1;if(Wr.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Wr){let i=parseInt((Wr.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Wr.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Wr.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Wr.TERM)||"COLORTERM"in Wr?1:r}function Whe(t){let e=Ob(t,t&&t.isTTY);return Mb(e)}TK.exports={supportsColor:Whe,stdout:Mb(Ob(!0,MK.isatty(1))),stderr:Mb(Ob(!0,MK.isatty(2)))}});var UK=E((x$e,KK)=>{"use strict";var zhe=(t,e,r)=>{let i=t.indexOf(e);if(i===-1)return t;let n=e.length,s=0,o="";do o+=t.substr(s,i-s)+e+r,s=i+n,i=t.indexOf(e,s);while(i!==-1);return o+=t.substr(s),o},Vhe=(t,e,r,i)=>{let n=0,s="";do{let o=t[i-1]==="\r";s+=t.substr(n,(o?i-1:i)-n)+e+(o?`\r -`:` -`)+r,n=i+1,i=t.indexOf(` -`,n)}while(i!==-1);return s+=t.substr(n),s};KK.exports={stringReplaceAll:zhe,stringEncaseCRLFWithFirstIndex:Vhe}});var qK=E((k$e,HK)=>{"use strict";var _he=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,GK=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Xhe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Zhe=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,$he=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function jK(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):$he.get(t)||t}function epe(t,e){let r=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=s.match(Xhe))r.push(n[2].replace(Zhe,(a,l,c)=>l?jK(l):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${t}')`)}return r}function tpe(t){GK.lastIndex=0;let e=[],r;for(;(r=GK.exec(t))!==null;){let i=r[1];if(r[2]){let n=epe(i,r[2]);e.push([i].concat(n))}else e.push([i])}return e}function YK(t,e){let r={};for(let n of e)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=t;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}HK.exports=(t,e)=>{let r=[],i=[],n=[];if(e.replace(_he,(s,o,a,l,c,u)=>{if(o)n.push(jK(o));else if(l){let g=n.join("");n=[],i.push(r.length===0?g:YK(t,r)(g)),r.push({inverse:a,styles:tpe(l)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(YK(t,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var jb=E((P$e,JK)=>{"use strict";var fh=FK(),{stdout:Kb,stderr:Ub}=OK(),{stringReplaceAll:rpe,stringEncaseCRLFWithFirstIndex:ipe}=UK(),WK=["ansi","ansi","ansi256","ansi16m"],su=Object.create(null),npe=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=Kb?Kb.level:0;t.level=e.level===void 0?r:e.level},zK=class{constructor(e){return VK(e)}},VK=t=>{let e={};return npe(e,t),e.template=(...r)=>spe(e.template,...r),Object.setPrototypeOf(e,DE.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=zK,e.template};function DE(t){return VK(t)}for(let[t,e]of Object.entries(fh))su[t]={get(){let r=RE(this,Hb(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};su.visible={get(){let t=RE(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var _K=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of _K)su[t]={get(){let{level:e}=this;return function(...r){let i=Hb(fh.color[WK[e]][t](...r),fh.color.close,this._styler);return RE(this,i,this._isEmpty)}}};for(let t of _K){let e="bg"+t[0].toUpperCase()+t.slice(1);su[e]={get(){let{level:r}=this;return function(...i){let n=Hb(fh.bgColor[WK[r]][t](...i),fh.bgColor.close,this._styler);return RE(this,n,this._isEmpty)}}}}var ope=Object.defineProperties(()=>{},_(P({},su),{level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}})),Hb=(t,e,r)=>{let i,n;return r===void 0?(i=t,n=e):(i=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:i,closeAll:n,parent:r}},RE=(t,e,r)=>{let i=(...n)=>ape(i,n.length===1?""+n[0]:n.join(" "));return i.__proto__=ope,i._generator=t,i._styler=e,i._isEmpty=r,i},ape=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:i,closeAll:n}=r;if(e.indexOf("")!==-1)for(;r!==void 0;)e=rpe(e,r.close,r.open),r=r.parent;let s=e.indexOf(` -`);return s!==-1&&(e=ipe(e,n,i,s)),i+e+n},Gb,spe=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let i=e.slice(1),n=[r.raw[0]];for(let s=1;s{XK.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var ml=E(Dn=>{"use strict";var $K=ZK(),ro=process.env;Object.defineProperty(Dn,"_vendors",{value:$K.map(function(t){return t.constant})});Dn.name=null;Dn.isPR=null;$K.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(i){return e1(i)});if(Dn[t.constant]=r,r)switch(Dn.name=t.name,typeof t.pr){case"string":Dn.isPR=!!ro[t.pr];break;case"object":"env"in t.pr?Dn.isPR=t.pr.env in ro&&ro[t.pr.env]!==t.pr.ne:"any"in t.pr?Dn.isPR=t.pr.any.some(function(i){return!!ro[i]}):Dn.isPR=e1(t.pr);break;default:Dn.isPR=null}});Dn.isCI=!!(ro.CI||ro.CONTINUOUS_INTEGRATION||ro.BUILD_NUMBER||ro.RUN_ID||Dn.name);function e1(t){return typeof t=="string"?!!ro[t]:Object.keys(t).every(function(e){return ro[e]===t[e]})}});var FE=E(zn=>{"use strict";zn.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;zn.find=(t,e)=>t.nodes.find(r=>r.type===e);zn.exceedsLimit=(t,e,r=1,i)=>i===!1||!zn.isInteger(t)||!zn.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=i;zn.escapeNode=(t,e=0,r)=>{let i=t.nodes[e];!i||(r&&i.type===r||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};zn.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0==0?(t.invalid=!0,!0):!1;zn.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0==0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;zn.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;zn.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);zn.flatten=(...t)=>{let e=[],r=i=>{for(let n=0;n{"use strict";var r1=FE();t1.exports=(t,e={})=>{let r=(i,n={})=>{let s=e.escapeInvalid&&r1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a="";if(i.value)return(s||o)&&r1.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let l of i.nodes)a+=r(l);return a};return r(t)}});var n1=E((L$e,i1)=>{"use strict";i1.exports=function(t){return typeof t=="number"?t-t==0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var f1=E((T$e,s1)=>{"use strict";var o1=n1(),El=(t,e,r)=>{if(o1(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(o1(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i=P({relaxZeros:!0},r);typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let n=String(i.relaxZeros),s=String(i.shorthand),o=String(i.capture),a=String(i.wrap),l=t+":"+e+"="+n+s+o+a;if(El.cache.hasOwnProperty(l))return El.cache[l].result;let c=Math.min(t,e),u=Math.max(t,e);if(Math.abs(c-u)===1){let d=t+"|"+e;return i.capture?`(${d})`:i.wrap===!1?d:`(?:${d})`}let g=A1(t)||A1(e),f={min:t,max:e,a:c,b:u},h=[],p=[];if(g&&(f.isPadded=g,f.maxLen=String(f.max).length),c<0){let d=u<0?Math.abs(u):1;p=a1(d,Math.abs(c),f,i),c=f.a=0}return u>=0&&(h=a1(c,u,f,i)),f.negatives=p,f.positives=h,f.result=Ape(p,h,i),i.capture===!0?f.result=`(${f.result})`:i.wrap!==!1&&h.length+p.length>1&&(f.result=`(?:${f.result})`),El.cache[l]=f,f.result};function Ape(t,e,r){let i=Yb(t,e,"-",!1,r)||[],n=Yb(e,t,"",!1,r)||[],s=Yb(t,e,"-?",!0,r)||[];return i.concat(s).concat(n).join("|")}function cpe(t,e){let r=1,i=1,n=l1(t,r),s=new Set([e]);for(;t<=n&&n<=e;)s.add(n),r+=1,n=l1(t,r);for(n=c1(e+1,i)-1;t1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+u1(a.count),o=c+1;continue}r.isPadded&&(g=hpe(c,r,i)),u.string=g+u.pattern+u1(u.count),s.push(u),o=c+1,a=u}return s}function Yb(t,e,r,i,n){let s=[];for(let o of t){let{string:a}=o;!i&&!g1(e,"string",a)&&s.push(r+a),i&&g1(e,"string",a)&&s.push(r+a)}return s}function upe(t,e){let r=[];for(let i=0;ie?1:e>t?-1:0}function g1(t,e,r){return t.some(i=>i[e]===r)}function l1(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function c1(t,e){return t-t%Math.pow(10,e)}function u1(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function gpe(t,e,r){return`[${t}${e-t==1?"":"-"}${e}]`}function A1(t){return/^-?(0+)\d/.test(t)}function hpe(t,e,r){if(!e.isPadded)return t;let i=Math.abs(e.maxLen-String(t).length),n=r.relaxZeros!==!1;switch(i){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${i}}`:`0{${i}}`}}El.cache={};El.clearCache=()=>El.cache={};s1.exports=El});var Wb=E((M$e,h1)=>{"use strict";var ppe=require("util"),p1=f1(),d1=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),dpe=t=>e=>t===!0?Number(e):String(e),qb=t=>typeof t=="number"||typeof t=="string"&&t!=="",ph=t=>Number.isInteger(+t),Jb=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},Cpe=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,mpe=(t,e,r)=>{if(e>0){let i=t[0]==="-"?"-":"";i&&(t=t.slice(1)),t=i+t.padStart(i?e-1:e,"0")}return r===!1?String(t):t},C1=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((o,a)=>oa?1:0),t.positives.sort((o,a)=>oa?1:0);let r=e.capture?"":"?:",i="",n="",s;return t.positives.length&&(i=t.positives.join("|")),t.negatives.length&&(n=`-(${r}${t.negatives.join("|")})`),i&&n?s=`${i}|${n}`:s=i||n,e.wrap?`(${r}${s})`:s},m1=(t,e,r,i)=>{if(r)return p1(t,e,P({wrap:!1},i));let n=String.fromCharCode(t);if(t===e)return n;let s=String.fromCharCode(e);return`[${n}-${s}]`},E1=(t,e,r)=>{if(Array.isArray(t)){let i=r.wrap===!0,n=r.capture?"":"?:";return i?`(${n}${t.join("|")})`:t.join("|")}return p1(t,e,r)},I1=(...t)=>new RangeError("Invalid range arguments: "+ppe.inspect(...t)),y1=(t,e,r)=>{if(r.strictRanges===!0)throw I1([t,e]);return[]},Ipe=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},ype=(t,e,r=1,i={})=>{let n=Number(t),s=Number(e);if(!Number.isInteger(n)||!Number.isInteger(s)){if(i.strictRanges===!0)throw I1([t,e]);return[]}n===0&&(n=0),s===0&&(s=0);let o=n>s,a=String(t),l=String(e),c=String(r);r=Math.max(Math.abs(r),1);let u=Jb(a)||Jb(l)||Jb(c),g=u?Math.max(a.length,l.length,c.length):0,f=u===!1&&Cpe(t,e,i)===!1,h=i.transform||dpe(f);if(i.toRegex&&r===1)return m1(C1(t,g),C1(e,g),!0,i);let p={negatives:[],positives:[]},d=B=>p[B<0?"negatives":"positives"].push(Math.abs(B)),m=[],I=0;for(;o?n>=s:n<=s;)i.toRegex===!0&&r>1?d(n):m.push(mpe(h(n,I),g,f)),n=o?n-r:n+r,I++;return i.toRegex===!0?r>1?Epe(p,i):E1(m,null,P({wrap:!1},i)):m},wpe=(t,e,r=1,i={})=>{if(!ph(t)&&t.length>1||!ph(e)&&e.length>1)return y1(t,e,i);let n=i.transform||(f=>String.fromCharCode(f)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(i.toRegex&&r===1)return m1(l,c,!1,i);let u=[],g=0;for(;a?s>=o:s<=o;)u.push(n(s,g)),s=a?s-r:s+r,g++;return i.toRegex===!0?E1(u,null,{wrap:!1,options:i}):u},LE=(t,e,r,i={})=>{if(e==null&&qb(t))return[t];if(!qb(t)||!qb(e))return y1(t,e,i);if(typeof r=="function")return LE(t,e,1,{transform:r});if(d1(r))return LE(t,e,0,r);let n=P({},i);return n.capture===!0&&(n.wrap=!0),r=r||n.step||1,ph(r)?ph(t)&&ph(e)?ype(t,e,r,n):wpe(t,e,Math.max(Math.abs(r),1),n):r!=null&&!d1(r)?Ipe(r,n):LE(t,e,1,r)};h1.exports=LE});var Q1=E((O$e,w1)=>{"use strict";var Bpe=Wb(),B1=FE(),Qpe=(t,e={})=>{let r=(i,n={})=>{let s=B1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(i.isOpen===!0||i.isClose===!0)return l+i.value;if(i.type==="open")return a?l+i.value:"(";if(i.type==="close")return a?l+i.value:")";if(i.type==="comma")return i.prev.type==="comma"?"":a?i.value:"|";if(i.value)return i.value;if(i.nodes&&i.ranges>0){let u=B1.reduce(i.nodes),g=Bpe(...u,_(P({},e),{wrap:!1,toRegex:!0}));if(g.length!==0)return u.length>1&&g.length>1?`(${g})`:g}if(i.nodes)for(let u of i.nodes)c+=r(u,i);return c};return r(t)};w1.exports=Qpe});var S1=E((K$e,b1)=>{"use strict";var bpe=Wb(),v1=NE(),ou=FE(),Il=(t="",e="",r=!1)=>{let i=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ou.flatten(e).map(n=>`{${n}}`):e;for(let n of t)if(Array.isArray(n))for(let s of n)i.push(Il(s,e,r));else for(let s of e)r===!0&&typeof s=="string"&&(s=`{${s}}`),i.push(Array.isArray(s)?Il(n,s,r):n+s);return ou.flatten(i)},vpe=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,i=(n,s={})=>{n.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(n.invalid||n.dollar){a.push(Il(a.pop(),v1(n,e)));return}if(n.type==="brace"&&n.invalid!==!0&&n.nodes.length===2){a.push(Il(a.pop(),["{}"]));return}if(n.nodes&&n.ranges>0){let g=ou.reduce(n.nodes);if(ou.exceedsLimit(...g,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let f=bpe(...g,e);f.length===0&&(f=v1(n,e)),a.push(Il(a.pop(),f)),n.nodes=[];return}let l=ou.encloseBrace(n),c=n.queue,u=n;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let g=0;g{"use strict";x1.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` -`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var N1=E((H$e,P1)=>{"use strict";var Spe=NE(),{MAX_LENGTH:D1,CHAR_BACKSLASH:zb,CHAR_BACKTICK:xpe,CHAR_COMMA:kpe,CHAR_DOT:Ppe,CHAR_LEFT_PARENTHESES:Dpe,CHAR_RIGHT_PARENTHESES:Rpe,CHAR_LEFT_CURLY_BRACE:Fpe,CHAR_RIGHT_CURLY_BRACE:Npe,CHAR_LEFT_SQUARE_BRACKET:R1,CHAR_RIGHT_SQUARE_BRACKET:F1,CHAR_DOUBLE_QUOTE:Lpe,CHAR_SINGLE_QUOTE:Tpe,CHAR_NO_BREAK_SPACE:Mpe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Ope}=k1(),Kpe=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},i=typeof r.maxLength=="number"?Math.min(D1,r.maxLength):D1;if(t.length>i)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${i})`);let n={type:"root",input:t,nodes:[]},s=[n],o=n,a=n,l=0,c=t.length,u=0,g=0,f,h={},p=()=>t[u++],d=m=>{if(m.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&m.type==="text"){a.value+=m.value;return}return o.nodes.push(m),m.parent=o,m.prev=a,a=m,m};for(d({type:"bos"});u0){if(o.ranges>0){o.ranges=0;let m=o.nodes.shift();o.nodes=[m,{type:"text",value:Spe(o)}]}d({type:"comma",value:f}),o.commas++;continue}if(f===Ppe&&g>0&&o.commas===0){let m=o.nodes;if(g===0||m.length===0){d({type:"text",value:f});continue}if(a.type==="dot"){if(o.range=[],a.value+=f,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){m.pop();let I=m[m.length-1];I.value+=a.value+f,a=I,o.ranges--;continue}d({type:"dot",value:f});continue}d({type:"text",value:f})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(B=>{B.nodes||(B.type==="open"&&(B.isOpen=!0),B.type==="close"&&(B.isClose=!0),B.nodes||(B.type="text"),B.invalid=!0)});let m=s[s.length-1],I=m.nodes.indexOf(o);m.nodes.splice(I,1,...o.nodes)}while(s.length>0);return d({type:"eos"}),n};P1.exports=Kpe});var M1=E((G$e,L1)=>{"use strict";var T1=NE(),Upe=Q1(),Hpe=S1(),Gpe=N1(),Rn=(t,e={})=>{let r=[];if(Array.isArray(t))for(let i of t){let n=Rn.create(i,e);Array.isArray(n)?r.push(...n):r.push(n)}else r=[].concat(Rn.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.parse=(t,e={})=>Gpe(t,e);Rn.stringify=(t,e={})=>typeof t=="string"?T1(Rn.parse(t,e),e):T1(t,e);Rn.compile=(t,e={})=>(typeof t=="string"&&(t=Rn.parse(t,e)),Upe(t,e));Rn.expand=(t,e={})=>{typeof t=="string"&&(t=Rn.parse(t,e));let r=Hpe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Rn.compile(t,e):Rn.expand(t,e);L1.exports=Rn});var dh=E((j$e,O1)=>{"use strict";var jpe=require("path"),io="\\\\/",K1=`[^${io}]`,ea="\\.",Ype="\\+",qpe="\\?",TE="\\/",Jpe="(?=.)",U1="[^/]",Vb=`(?:${TE}|$)`,H1=`(?:^|${TE})`,_b=`${ea}{1,2}${Vb}`,Wpe=`(?!${ea})`,zpe=`(?!${H1}${_b})`,Vpe=`(?!${ea}{0,1}${Vb})`,_pe=`(?!${_b})`,Xpe=`[^.${TE}]`,Zpe=`${U1}*?`,G1={DOT_LITERAL:ea,PLUS_LITERAL:Ype,QMARK_LITERAL:qpe,SLASH_LITERAL:TE,ONE_CHAR:Jpe,QMARK:U1,END_ANCHOR:Vb,DOTS_SLASH:_b,NO_DOT:Wpe,NO_DOTS:zpe,NO_DOT_SLASH:Vpe,NO_DOTS_SLASH:_pe,QMARK_NO_DOT:Xpe,STAR:Zpe,START_ANCHOR:H1},$pe=_(P({},G1),{SLASH_LITERAL:`[${io}]`,QMARK:K1,STAR:`${K1}*?`,DOTS_SLASH:`${ea}{1,2}(?:[${io}]|$)`,NO_DOT:`(?!${ea})`,NO_DOTS:`(?!(?:^|[${io}])${ea}{1,2}(?:[${io}]|$))`,NO_DOT_SLASH:`(?!${ea}{0,1}(?:[${io}]|$))`,NO_DOTS_SLASH:`(?!${ea}{1,2}(?:[${io}]|$))`,QMARK_NO_DOT:`[^.${io}]`,START_ANCHOR:`(?:^|[${io}])`,END_ANCHOR:`(?:[${io}]|$)`}),ede={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};O1.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:ede,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:jpe.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?$pe:G1}}});var Ch=E(cn=>{"use strict";var tde=require("path"),rde=process.platform==="win32",{REGEX_BACKSLASH:ide,REGEX_REMOVE_BACKSLASH:nde,REGEX_SPECIAL_CHARS:sde,REGEX_SPECIAL_CHARS_GLOBAL:ode}=dh();cn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);cn.hasRegexChars=t=>sde.test(t);cn.isRegexChar=t=>t.length===1&&cn.hasRegexChars(t);cn.escapeRegex=t=>t.replace(ode,"\\$1");cn.toPosixSlashes=t=>t.replace(ide,"/");cn.removeBackslashes=t=>t.replace(nde,e=>e==="\\"?"":e);cn.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};cn.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:rde===!0||tde.sep==="\\";cn.escapeLast=(t,e,r)=>{let i=t.lastIndexOf(e,r);return i===-1?t:t[i-1]==="\\"?cn.escapeLast(t,e,i-1):`${t.slice(0,i)}\\${t.slice(i)}`};cn.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};cn.wrapOutput=(t,e={},r={})=>{let i=r.contains?"":"^",n=r.contains?"":"$",s=`${i}(?:${t})${n}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var X1=E((q$e,j1)=>{"use strict";var Y1=Ch(),{CHAR_ASTERISK:Xb,CHAR_AT:ade,CHAR_BACKWARD_SLASH:mh,CHAR_COMMA:Ade,CHAR_DOT:Zb,CHAR_EXCLAMATION_MARK:q1,CHAR_FORWARD_SLASH:J1,CHAR_LEFT_CURLY_BRACE:$b,CHAR_LEFT_PARENTHESES:ev,CHAR_LEFT_SQUARE_BRACKET:lde,CHAR_PLUS:cde,CHAR_QUESTION_MARK:W1,CHAR_RIGHT_CURLY_BRACE:ude,CHAR_RIGHT_PARENTHESES:z1,CHAR_RIGHT_SQUARE_BRACKET:gde}=dh(),V1=t=>t===J1||t===mh,_1=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?Infinity:1)},fde=(t,e)=>{let r=e||{},i=t.length-1,n=r.parts===!0||r.scanToEnd===!0,s=[],o=[],a=[],l=t,c=-1,u=0,g=0,f=!1,h=!1,p=!1,d=!1,m=!1,I=!1,B=!1,b=!1,R=!1,H=0,L,K,J={value:"",depth:0,isGlob:!1},ne=()=>c>=i,q=()=>l.charCodeAt(c+1),A=()=>(L=K,l.charCodeAt(++c));for(;c0&&(W=l.slice(0,u),l=l.slice(u),g-=u),V&&p===!0&&g>0?(V=l.slice(0,g),X=l.slice(g)):p===!0?(V="",X=l):V=l,V&&V!==""&&V!=="/"&&V!==l&&V1(V.charCodeAt(V.length-1))&&(V=V.slice(0,-1)),r.unescape===!0&&(X&&(X=Y1.removeBackslashes(X)),V&&B===!0&&(V=Y1.removeBackslashes(V)));let F={prefix:W,input:t,start:u,base:V,glob:X,isBrace:f,isBracket:h,isGlob:p,isExtglob:d,isGlobstar:m,negated:b};if(r.tokens===!0&&(F.maxDepth=0,V1(K)||o.push(J),F.tokens=o),r.parts===!0||r.tokens===!0){let D;for(let he=0;he{"use strict";var ME=dh(),Fn=Ch(),{MAX_LENGTH:OE,POSIX_REGEX_SOURCE:hde,REGEX_NON_SPECIAL_CHARS:pde,REGEX_SPECIAL_CHARS_BACKREF:dde,REPLACEMENTS:$1}=ME,Cde=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch(i){return t.map(n=>Fn.escapeRegex(n)).join("..")}return r},au=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,eU=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=$1[t]||t;let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OE,r.maxLength):OE,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);let s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",l=Fn.isWindows(e),c=ME.globChars(l),u=ME.extglobChars(c),{DOT_LITERAL:g,PLUS_LITERAL:f,SLASH_LITERAL:h,ONE_CHAR:p,DOTS_SLASH:d,NO_DOT:m,NO_DOT_SLASH:I,NO_DOTS_SLASH:B,QMARK:b,QMARK_NO_DOT:R,STAR:H,START_ANCHOR:L}=c,K=G=>`(${a}(?:(?!${L}${G.dot?d:g}).)*?)`,J=r.dot?"":m,ne=r.dot?b:R,q=r.bash===!0?K(r):H;r.capture&&(q=`(${q})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Fn.removePrefix(t,A),n=t.length;let V=[],W=[],X=[],F=s,D,he=()=>A.index===n-1,pe=A.peek=(G=1)=>t[A.index+G],Ne=A.advance=()=>t[++A.index],Pe=()=>t.slice(A.index+1),qe=(G="",Ce=0)=>{A.consumed+=G,A.index+=Ce},re=G=>{A.output+=G.output!=null?G.output:G.value,qe(G.value)},se=()=>{let G=1;for(;pe()==="!"&&(pe(2)!=="("||pe(3)==="?");)Ne(),A.start++,G++;return G%2==0?!1:(A.negated=!0,A.start++,!0)},be=G=>{A[G]++,X.push(G)},ae=G=>{A[G]--,X.pop()},Ae=G=>{if(F.type==="globstar"){let Ce=A.braces>0&&(G.type==="comma"||G.type==="brace"),ee=G.extglob===!0||V.length&&(G.type==="pipe"||G.type==="paren");G.type!=="slash"&&G.type!=="paren"&&!Ce&&!ee&&(A.output=A.output.slice(0,-F.output.length),F.type="star",F.value="*",F.output=q,A.output+=F.output)}if(V.length&&G.type!=="paren"&&!u[G.value]&&(V[V.length-1].inner+=G.value),(G.value||G.output)&&re(G),F&&F.type==="text"&&G.type==="text"){F.value+=G.value,F.output=(F.output||"")+G.value;return}G.prev=F,o.push(G),F=G},De=(G,Ce)=>{let ee=_(P({},u[Ce]),{conditions:1,inner:""});ee.prev=F,ee.parens=A.parens,ee.output=A.output;let Ue=(r.capture?"(":"")+ee.open;be("parens"),Ae({type:G,value:Ce,output:A.output?"":p}),Ae({type:"paren",extglob:!0,value:Ne(),output:Ue}),V.push(ee)},$=G=>{let Ce=G.close+(r.capture?")":"");if(G.type==="negate"){let ee=q;G.inner&&G.inner.length>1&&G.inner.includes("/")&&(ee=K(r)),(ee!==q||he()||/^\)+$/.test(Pe()))&&(Ce=G.close=`)$))${ee}`),G.prev.type==="bos"&&(A.negatedExtglob=!0)}Ae({type:"paren",extglob:!0,value:D,output:Ce}),ae("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let G=!1,Ce=t.replace(dde,(ee,Ue,Oe,vt,dt,ri)=>vt==="\\"?(G=!0,ee):vt==="?"?Ue?Ue+vt+(dt?b.repeat(dt.length):""):ri===0?ne+(dt?b.repeat(dt.length):""):b.repeat(Oe.length):vt==="."?g.repeat(Oe.length):vt==="*"?Ue?Ue+vt+(dt?q:""):q:Ue?ee:`\\${ee}`);return G===!0&&(r.unescape===!0?Ce=Ce.replace(/\\/g,""):Ce=Ce.replace(/\\+/g,ee=>ee.length%2==0?"\\\\":ee?"\\":"")),Ce===t&&r.contains===!0?(A.output=t,A):(A.output=Fn.wrapOutput(Ce,A,e),A)}for(;!he();){if(D=Ne(),D==="\0")continue;if(D==="\\"){let ee=pe();if(ee==="/"&&r.bash!==!0||ee==="."||ee===";")continue;if(!ee){D+="\\",Ae({type:"text",value:D});continue}let Ue=/^\\+/.exec(Pe()),Oe=0;if(Ue&&Ue[0].length>2&&(Oe=Ue[0].length,A.index+=Oe,Oe%2!=0&&(D+="\\")),r.unescape===!0?D=Ne()||"":D+=Ne()||"",A.brackets===0){Ae({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||F.value==="["||F.value==="[^")){if(r.posix!==!1&&D===":"){let ee=F.value.slice(1);if(ee.includes("[")&&(F.posix=!0,ee.includes(":"))){let Ue=F.value.lastIndexOf("["),Oe=F.value.slice(0,Ue),vt=F.value.slice(Ue+2),dt=hde[vt];if(dt){F.value=Oe+dt,A.backtrack=!0,Ne(),!s.output&&o.indexOf(F)===1&&(s.output=p);continue}}}(D==="["&&pe()!==":"||D==="-"&&pe()==="]")&&(D=`\\${D}`),D==="]"&&(F.value==="["||F.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&F.value==="["&&(D="^"),F.value+=D,re({value:D});continue}if(A.quotes===1&&D!=='"'){D=Fn.escapeRegex(D),F.value+=D,re({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&Ae({type:"text",value:D});continue}if(D==="("){be("parens"),Ae({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(au("opening","("));let ee=V[V.length-1];if(ee&&A.parens===ee.parens+1){$(V.pop());continue}Ae({type:"paren",value:D,output:A.parens?")":"\\)"}),ae("parens");continue}if(D==="["){if(r.nobracket===!0||!Pe().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));D=`\\${D}`}else be("brackets");Ae({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||F&&F.type==="bracket"&&F.value.length===1){Ae({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(au("opening","["));Ae({type:"text",value:D,output:`\\${D}`});continue}ae("brackets");let ee=F.value.slice(1);if(F.posix!==!0&&ee[0]==="^"&&!ee.includes("/")&&(D=`/${D}`),F.value+=D,re({value:D}),r.literalBrackets===!1||Fn.hasRegexChars(ee))continue;let Ue=Fn.escapeRegex(F.value);if(A.output=A.output.slice(0,-F.value.length),r.literalBrackets===!0){A.output+=Ue,F.value=Ue;continue}F.value=`(${a}${Ue}|${F.value})`,A.output+=F.value;continue}if(D==="{"&&r.nobrace!==!0){be("braces");let ee={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};W.push(ee),Ae(ee);continue}if(D==="}"){let ee=W[W.length-1];if(r.nobrace===!0||!ee){Ae({type:"text",value:D,output:D});continue}let Ue=")";if(ee.dots===!0){let Oe=o.slice(),vt=[];for(let dt=Oe.length-1;dt>=0&&(o.pop(),Oe[dt].type!=="brace");dt--)Oe[dt].type!=="dots"&&vt.unshift(Oe[dt].value);Ue=Cde(vt,r),A.backtrack=!0}if(ee.comma!==!0&&ee.dots!==!0){let Oe=A.output.slice(0,ee.outputIndex),vt=A.tokens.slice(ee.tokensIndex);ee.value=ee.output="\\{",D=Ue="\\}",A.output=Oe;for(let dt of vt)A.output+=dt.output||dt.value}Ae({type:"brace",value:D,output:Ue}),ae("braces"),W.pop();continue}if(D==="|"){V.length>0&&V[V.length-1].conditions++,Ae({type:"text",value:D});continue}if(D===","){let ee=D,Ue=W[W.length-1];Ue&&X[X.length-1]==="braces"&&(Ue.comma=!0,ee="|"),Ae({type:"comma",value:D,output:ee});continue}if(D==="/"){if(F.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",o.pop(),F=s;continue}Ae({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&F.type==="dot"){F.value==="."&&(F.output=g);let ee=W[W.length-1];F.type="dots",F.output+=D,F.value+=D,ee.dots=!0;continue}if(A.braces+A.parens===0&&F.type!=="bos"&&F.type!=="slash"){Ae({type:"text",value:D,output:g});continue}Ae({type:"dot",value:D,output:g});continue}if(D==="?"){if(!(F&&F.value==="(")&&r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("qmark",D);continue}if(F&&F.type==="paren"){let Ue=pe(),Oe=D;if(Ue==="<"&&!Fn.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(F.value==="("&&!/[!=<:]/.test(Ue)||Ue==="<"&&!/<([!=]|\w+>)/.test(Pe()))&&(Oe=`\\${D}`),Ae({type:"text",value:D,output:Oe});continue}if(r.dot!==!0&&(F.type==="slash"||F.type==="bos")){Ae({type:"qmark",value:D,output:R});continue}Ae({type:"qmark",value:D,output:b});continue}if(D==="!"){if(r.noextglob!==!0&&pe()==="("&&(pe(2)!=="?"||!/[!=<:]/.test(pe(3)))){De("negate",D);continue}if(r.nonegate!==!0&&A.index===0){se();continue}}if(D==="+"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("plus",D);continue}if(F&&F.value==="("||r.regex===!1){Ae({type:"plus",value:D,output:f});continue}if(F&&(F.type==="bracket"||F.type==="paren"||F.type==="brace")||A.parens>0){Ae({type:"plus",value:D});continue}Ae({type:"plus",value:f});continue}if(D==="@"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){Ae({type:"at",extglob:!0,value:D,output:""});continue}Ae({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let ee=pde.exec(Pe());ee&&(D+=ee[0],A.index+=ee[0].length),Ae({type:"text",value:D});continue}if(F&&(F.type==="globstar"||F.star===!0)){F.type="star",F.star=!0,F.value+=D,F.output=q,A.backtrack=!0,A.globstar=!0,qe(D);continue}let G=Pe();if(r.noextglob!==!0&&/^\([^?]/.test(G)){De("star",D);continue}if(F.type==="star"){if(r.noglobstar===!0){qe(D);continue}let ee=F.prev,Ue=ee.prev,Oe=ee.type==="slash"||ee.type==="bos",vt=Ue&&(Ue.type==="star"||Ue.type==="globstar");if(r.bash===!0&&(!Oe||G[0]&&G[0]!=="/")){Ae({type:"star",value:D,output:""});continue}let dt=A.braces>0&&(ee.type==="comma"||ee.type==="brace"),ri=V.length&&(ee.type==="pipe"||ee.type==="paren");if(!Oe&&ee.type!=="paren"&&!dt&&!ri){Ae({type:"star",value:D,output:""});continue}for(;G.slice(0,3)==="/**";){let ii=t[A.index+4];if(ii&&ii!=="/")break;G=G.slice(3),qe("/**",3)}if(ee.type==="bos"&&he()){F.type="globstar",F.value+=D,F.output=K(r),A.output=F.output,A.globstar=!0,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&!vt&&he()){A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=K(r)+(r.strictSlashes?")":"|$)"),F.value+=D,A.globstar=!0,A.output+=ee.output+F.output,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&G[0]==="/"){let ii=G[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=`${K(r)}${h}|${h}${ii})`,F.value+=D,A.output+=ee.output+F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}if(ee.type==="bos"&&G[0]==="/"){F.type="globstar",F.value+=D,F.output=`(?:^|${h}|${K(r)}${h})`,A.output=F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-F.output.length),F.type="globstar",F.output=K(r),F.value+=D,A.output+=F.output,A.globstar=!0,qe(D);continue}let Ce={type:"star",value:D,output:q};if(r.bash===!0){Ce.output=".*?",(F.type==="bos"||F.type==="slash")&&(Ce.output=J+Ce.output),Ae(Ce);continue}if(F&&(F.type==="bracket"||F.type==="paren")&&r.regex===!0){Ce.output=D,Ae(Ce);continue}(A.index===A.start||F.type==="slash"||F.type==="dot")&&(F.type==="dot"?(A.output+=I,F.output+=I):r.dot===!0?(A.output+=B,F.output+=B):(A.output+=J,F.output+=J),pe()!=="*"&&(A.output+=p,F.output+=p)),Ae(Ce)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));A.output=Fn.escapeLast(A.output,"["),ae("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing",")"));A.output=Fn.escapeLast(A.output,"("),ae("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","}"));A.output=Fn.escapeLast(A.output,"{"),ae("braces")}if(r.strictSlashes!==!0&&(F.type==="star"||F.type==="bracket")&&Ae({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let G of A.tokens)A.output+=G.output!=null?G.output:G.value,G.suffix&&(A.output+=G.suffix)}return A};eU.fastpaths=(t,e)=>{let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OE,r.maxLength):OE,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);t=$1[t]||t;let s=Fn.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:g,NO_DOTS_SLASH:f,STAR:h,START_ANCHOR:p}=ME.globChars(s),d=r.dot?g:u,m=r.dot?f:u,I=r.capture?"":"?:",B={negated:!1,prefix:""},b=r.bash===!0?".*?":h;r.capture&&(b=`(${b})`);let R=J=>J.noglobstar===!0?b:`(${I}(?:(?!${p}${J.dot?c:o}).)*?)`,H=J=>{switch(J){case"*":return`${d}${l}${b}`;case".*":return`${o}${l}${b}`;case"*.*":return`${d}${b}${o}${l}${b}`;case"*/*":return`${d}${b}${a}${l}${m}${b}`;case"**":return d+R(r);case"**/*":return`(?:${d}${R(r)}${a})?${m}${l}${b}`;case"**/*.*":return`(?:${d}${R(r)}${a})?${m}${b}${o}${l}${b}`;case"**/.*":return`(?:${d}${R(r)}${a})?${o}${l}${b}`;default:{let ne=/^(.*?)\.(\w+)$/.exec(J);if(!ne)return;let q=H(ne[1]);return q?q+o+ne[2]:void 0}}},L=Fn.removePrefix(t,B),K=H(L);return K&&r.strictSlashes!==!0&&(K+=`${a}?`),K};Z1.exports=eU});var iU=E((W$e,rU)=>{"use strict";var mde=require("path"),Ede=X1(),tv=tU(),rv=Ch(),Ide=dh(),yde=t=>t&&typeof t=="object"&&!Array.isArray(t),Dr=(t,e,r=!1)=>{if(Array.isArray(t)){let u=t.map(f=>Dr(f,e,r));return f=>{for(let h of u){let p=h(f);if(p)return p}return!1}}let i=yde(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!i)throw new TypeError("Expected pattern to be a non-empty string");let n=e||{},s=rv.isWindows(e),o=i?Dr.compileRe(t,e):Dr.makeRe(t,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(n.ignore){let u=_(P({},e),{ignore:null,onMatch:null,onResult:null});l=Dr(n.ignore,u,r)}let c=(u,g=!1)=>{let{isMatch:f,match:h,output:p}=Dr.test(u,o,e,{glob:t,posix:s}),d={glob:t,state:a,regex:o,posix:s,input:u,output:p,match:h,isMatch:f};return typeof n.onResult=="function"&&n.onResult(d),f===!1?(d.isMatch=!1,g?d:!1):l(u)?(typeof n.onIgnore=="function"&&n.onIgnore(d),d.isMatch=!1,g?d:!1):(typeof n.onMatch=="function"&&n.onMatch(d),g?d:!0)};return r&&(c.state=a),c};Dr.test=(t,e,r,{glob:i,posix:n}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let s=r||{},o=s.format||(n?rv.toPosixSlashes:null),a=t===i,l=a&&o?o(t):t;return a===!1&&(l=o?o(t):t,a=l===i),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=Dr.matchBase(t,e,r,n):a=e.exec(l)),{isMatch:Boolean(a),match:a,output:l}};Dr.matchBase=(t,e,r,i=rv.isWindows(r))=>(e instanceof RegExp?e:Dr.makeRe(e,r)).test(mde.basename(t));Dr.isMatch=(t,e,r)=>Dr(e,r)(t);Dr.parse=(t,e)=>Array.isArray(t)?t.map(r=>Dr.parse(r,e)):tv(t,_(P({},e),{fastpaths:!1}));Dr.scan=(t,e)=>Ede(t,e);Dr.compileRe=(t,e,r=!1,i=!1)=>{if(r===!0)return t.output;let n=e||{},s=n.contains?"":"^",o=n.contains?"":"$",a=`${s}(?:${t.output})${o}`;t&&t.negated===!0&&(a=`^(?!${a}).*$`);let l=Dr.toRegex(a,e);return i===!0&&(l.state=t),l};Dr.makeRe=(t,e,r=!1,i=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let n=e||{},s={negated:!1,fastpaths:!0},o="",a;return t.startsWith("./")&&(t=t.slice(2),o=s.prefix="./"),n.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a=tv.fastpaths(t,e)),a===void 0?(s=tv(t,e),s.prefix=o+(s.prefix||"")):s.output=a,Dr.compileRe(s,e,r,i)};Dr.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Dr.constants=Ide;rU.exports=Dr});var iv=E((z$e,nU)=>{"use strict";nU.exports=iU()});var Nn=E((V$e,sU)=>{"use strict";var oU=require("util"),aU=M1(),no=iv(),nv=Ch(),AU=t=>typeof t=="string"&&(t===""||t==="./"),pr=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let i=new Set,n=new Set,s=new Set,o=0,a=u=>{s.add(u.output),r&&r.onResult&&r.onResult(u)};for(let u=0;u!i.has(u));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};pr.match=pr;pr.matcher=(t,e)=>no(t,e);pr.isMatch=(t,e,r)=>no(e,r)(t);pr.any=pr.isMatch;pr.not=(t,e,r={})=>{e=[].concat(e).map(String);let i=new Set,n=[],s=a=>{r.onResult&&r.onResult(a),n.push(a.output)},o=pr(t,e,_(P({},r),{onResult:s}));for(let a of n)o.includes(a)||i.add(a);return[...i]};pr.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);if(Array.isArray(e))return e.some(i=>pr.contains(t,i,r));if(typeof e=="string"){if(AU(t)||AU(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return pr.isMatch(t,e,_(P({},r),{contains:!0}))};pr.matchKeys=(t,e,r)=>{if(!nv.isObject(t))throw new TypeError("Expected the first argument to be an object");let i=pr(Object.keys(t),e,r),n={};for(let s of i)n[s]=t[s];return n};pr.some=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(i.some(o=>s(o)))return!0}return!1};pr.every=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(!i.every(o=>s(o)))return!1}return!0};pr.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);return[].concat(e).every(i=>no(i,r)(t))};pr.capture=(t,e,r)=>{let i=nv.isWindows(r),s=no.makeRe(String(t),_(P({},r),{capture:!0})).exec(i?nv.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};pr.makeRe=(...t)=>no.makeRe(...t);pr.scan=(...t)=>no.scan(...t);pr.parse=(t,e)=>{let r=[];for(let i of[].concat(t||[]))for(let n of aU(String(i),e))r.push(no.parse(n,e));return r};pr.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:aU(t,e)};pr.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return pr.braces(t,_(P({},e),{expand:!0}))};sU.exports=pr});var cU=E((_$e,lU)=>{"use strict";lU.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var gU=E((X$e,uU)=>{"use strict";var wde=cU();uU.exports=t=>typeof t=="string"?t.replace(wde(),""):t});var lu={};it(lu,{KeyRelationship:()=>Bl,applyCascade:()=>fv,base64RegExp:()=>CU,colorStringAlphaRegExp:()=>dU,colorStringRegExp:()=>pU,computeKey:()=>rA,getPrintable:()=>Mr,hasExactLength:()=>wU,hasForbiddenKeys:()=>eCe,hasKeyRelationship:()=>pv,hasMaxLength:()=>Mde,hasMinLength:()=>Tde,hasMutuallyExclusiveKeys:()=>tCe,hasRequiredKeys:()=>$de,hasUniqueItems:()=>Ode,isArray:()=>xde,isAtLeast:()=>Hde,isAtMost:()=>Gde,isBase64:()=>Xde,isBoolean:()=>bde,isDate:()=>Sde,isDict:()=>Pde,isEnum:()=>Yi,isHexColor:()=>_de,isISO8601:()=>Vde,isInExclusiveRange:()=>Yde,isInInclusiveRange:()=>jde,isInstanceOf:()=>Rde,isInteger:()=>qde,isJSON:()=>Zde,isLiteral:()=>Bde,isLowerCase:()=>Jde,isNegative:()=>Kde,isNullable:()=>Lde,isNumber:()=>vde,isObject:()=>Dde,isOneOf:()=>Fde,isOptional:()=>Nde,isPositive:()=>Ude,isString:()=>gv,isTuple:()=>kde,isUUID4:()=>zde,isUnknown:()=>yU,isUpperCase:()=>Wde,iso8601RegExp:()=>uv,makeCoercionFn:()=>wl,makeSetter:()=>IU,makeTrait:()=>EU,makeValidator:()=>Ct,matchesRegExp:()=>hv,plural:()=>GE,pushError:()=>at,simpleKeyRegExp:()=>hU,uuid4RegExp:()=>mU});function Ct({test:t}){return EU(t)()}function Mr(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":JSON.stringify(t)}function rA(t,e){var r,i,n;return typeof e=="number"?`${(r=t==null?void 0:t.p)!==null&&r!==void 0?r:"."}[${e}]`:hU.test(e)?`${(i=t==null?void 0:t.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=t==null?void 0:t.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function wl(t,e){return r=>{let i=t[e];return t[e]=r,wl(t,e).bind(null,i)}}function IU(t,e){return r=>{t[e]=r}}function GE(t,e,r){return t===1?e:r}function at({errors:t,p:e}={},r){return t==null||t.push(`${e!=null?e:"."}: ${r}`),!1}function Bde(t){return Ct({test:(e,r)=>e!==t?at(r,`Expected a literal (got ${Mr(t)})`):!0})}function Yi(t){let e=Array.isArray(t)?t:Object.values(t),r=new Set(e);return Ct({test:(i,n)=>r.has(i)?!0:at(n,`Expected a valid enumeration value (got ${Mr(i)})`)})}var hU,pU,dU,CU,mU,uv,EU,yU,gv,Qde,bde,vde,Sde,xde,kde,Pde,Dde,Rde,Fde,fv,Nde,Lde,Tde,Mde,wU,Ode,Kde,Ude,Hde,Gde,jde,Yde,qde,hv,Jde,Wde,zde,Vde,_de,Xde,Zde,$de,eCe,tCe,Bl,rCe,pv,Ss=Yfe(()=>{hU=/^[a-zA-Z_][a-zA-Z0-9_]*$/,pU=/^#[0-9a-f]{6}$/i,dU=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,CU=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,mU=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,uv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,EU=t=>()=>t;yU=()=>Ct({test:(t,e)=>!0});gv=()=>Ct({test:(t,e)=>typeof t!="string"?at(e,`Expected a string (got ${Mr(t)})`):!0});Qde=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),bde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i=Qde.get(t);if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a boolean (got ${Mr(t)})`)}return!0}}),vde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch(s){}if(typeof n=="number")if(JSON.stringify(n)===t)i=n;else return at(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a number (got ${Mr(t)})`)}return!0}}),Sde=()=>Ct({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"&&uv.test(t))i=new Date(t);else{let n;if(typeof t=="string"){let s;try{s=JSON.parse(t)}catch(o){}typeof s=="number"&&(n=s)}else typeof t=="number"&&(n=t);if(typeof n!="undefined")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return at(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a date (got ${Mr(t)})`)}return!0}}),xde=(t,{delimiter:e}={})=>Ct({test:(r,i)=>{var n;if(typeof r=="string"&&typeof e!="undefined"&&typeof(i==null?void 0:i.coercions)!="undefined"){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");r=r.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,r)])}if(!Array.isArray(r))return at(i,`Expected an array (got ${Mr(r)})`);let s=!0;for(let o=0,a=r.length;o{let r=wU(t.length);return Ct({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e!="undefined"&&typeof(n==null?void 0:n.coercions)!="undefined"){if(typeof(n==null?void 0:n.coercion)=="undefined")return at(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return at(n,`Expected a tuple (got ${Mr(i)})`);let o=r(i,Object.assign({},n));for(let a=0,l=i.length;aCt({test:(r,i)=>{if(typeof r!="object"||r===null)return at(i,`Expected an object (got ${Mr(r)})`);let n=Object.keys(r),s=!0;for(let o=0,a=n.length;o{let r=Object.keys(t);return Ct({test:(i,n)=>{if(typeof i!="object"||i===null)return at(n,`Expected an object (got ${Mr(i)})`);let s=new Set([...r,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(t,l)?t[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c!="undefined"?a=c(u,Object.assign(Object.assign({},n),{p:rA(n,l),coercion:wl(i,l)}))&&a:e===null?a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),`Extraneous property (got ${Mr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:IU(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Rde=t=>Ct({test:(e,r)=>e instanceof t?!0:at(r,`Expected an instance of ${t.name} (got ${Mr(e)})`)}),Fde=(t,{exclusive:e=!1}={})=>Ct({test:(r,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)!="undefined"?[]:void 0;for(let c=0,u=t.length;c1?at(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),fv=(t,e)=>Ct({test:(r,i)=>{var n,s;let o={value:r},a=typeof(i==null?void 0:i.coercions)!="undefined"?wl(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)!="undefined"?[]:void 0;if(!t(r,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l!="undefined")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)!="undefined"){if(o.value!==r){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Nde=t=>Ct({test:(e,r)=>typeof e=="undefined"?!0:t(e,r)}),Lde=t=>Ct({test:(e,r)=>e===null?!0:t(e,r)}),Tde=t=>Ct({test:(e,r)=>e.length>=t?!0:at(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)}),Mde=t=>Ct({test:(e,r)=>e.length<=t?!0:at(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)}),wU=t=>Ct({test:(e,r)=>e.length!==t?at(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0}),Ode=({map:t}={})=>Ct({test:(e,r)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sCt({test:(t,e)=>t<=0?!0:at(e,`Expected to be negative (got ${t})`)}),Ude=()=>Ct({test:(t,e)=>t>=0?!0:at(e,`Expected to be positive (got ${t})`)}),Hde=t=>Ct({test:(e,r)=>e>=t?!0:at(r,`Expected to be at least ${t} (got ${e})`)}),Gde=t=>Ct({test:(e,r)=>e<=t?!0:at(r,`Expected to be at most ${t} (got ${e})`)}),jde=(t,e)=>Ct({test:(r,i)=>r>=t&&r<=e?!0:at(i,`Expected to be in the [${t}; ${e}] range (got ${r})`)}),Yde=(t,e)=>Ct({test:(r,i)=>r>=t&&rCt({test:(e,r)=>e!==Math.round(e)?at(r,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:at(r,`Expected to be a safe integer (got ${e})`)}),hv=t=>Ct({test:(e,r)=>t.test(e)?!0:at(r,`Expected to match the pattern ${t.toString()} (got ${Mr(e)})`)}),Jde=()=>Ct({test:(t,e)=>t!==t.toLowerCase()?at(e,`Expected to be all-lowercase (got ${t})`):!0}),Wde=()=>Ct({test:(t,e)=>t!==t.toUpperCase()?at(e,`Expected to be all-uppercase (got ${t})`):!0}),zde=()=>Ct({test:(t,e)=>mU.test(t)?!0:at(e,`Expected to be a valid UUID v4 (got ${Mr(t)})`)}),Vde=()=>Ct({test:(t,e)=>uv.test(t)?!1:at(e,`Expected to be a valid ISO 8601 date string (got ${Mr(t)})`)}),_de=({alpha:t=!1})=>Ct({test:(e,r)=>(t?pU.test(e):dU.test(e))?!0:at(r,`Expected to be a valid hexadecimal color string (got ${Mr(e)})`)}),Xde=()=>Ct({test:(t,e)=>CU.test(t)?!0:at(e,`Expected to be a valid base 64 string (got ${Mr(t)})`)}),Zde=(t=yU())=>Ct({test:(e,r)=>{let i;try{i=JSON.parse(e)}catch(n){return at(r,`Expected to be a valid JSON string (got ${Mr(e)})`)}return t(i,r)}}),$de=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?at(i,`Missing required ${GE(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},eCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?at(i,`Forbidden ${GE(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},tCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?at(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Bl||(Bl={}));rCe={[Bl.Forbids]:{expect:!1,message:"forbids using"},[Bl.Requires]:{expect:!0,message:"requires using"}},pv=(t,e,r,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(r),o=rCe[e];return Ct({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(t)||n.has(a[t]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?at(l,`Property "${t}" ${o.message} ${GE(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var Sh=E(($et,OU)=>{var mCe="2.0.0",ECe=256,ICe=Number.MAX_SAFE_INTEGER||9007199254740991,yCe=16;OU.exports={SEMVER_SPEC_VERSION:mCe,MAX_LENGTH:ECe,MAX_SAFE_INTEGER:ICe,MAX_SAFE_COMPONENT_LENGTH:yCe}});var xh=E((ett,KU)=>{var wCe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};KU.exports=wCe});var Ql=E((iA,UU)=>{var{MAX_SAFE_COMPONENT_LENGTH:yv}=Sh(),BCe=xh();iA=UU.exports={};var QCe=iA.re=[],Je=iA.src=[],We=iA.t={},bCe=0,mt=(t,e,r)=>{let i=bCe++;BCe(i,e),We[t]=i,Je[i]=e,QCe[i]=new RegExp(e,r?"g":void 0)};mt("NUMERICIDENTIFIER","0|[1-9]\\d*");mt("NUMERICIDENTIFIERLOOSE","[0-9]+");mt("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");mt("MAINVERSION",`(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})`);mt("MAINVERSIONLOOSE",`(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})`);mt("PRERELEASEIDENTIFIER",`(?:${Je[We.NUMERICIDENTIFIER]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASEIDENTIFIERLOOSE",`(?:${Je[We.NUMERICIDENTIFIERLOOSE]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASE",`(?:-(${Je[We.PRERELEASEIDENTIFIER]}(?:\\.${Je[We.PRERELEASEIDENTIFIER]})*))`);mt("PRERELEASELOOSE",`(?:-?(${Je[We.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${Je[We.PRERELEASEIDENTIFIERLOOSE]})*))`);mt("BUILDIDENTIFIER","[0-9A-Za-z-]+");mt("BUILD",`(?:\\+(${Je[We.BUILDIDENTIFIER]}(?:\\.${Je[We.BUILDIDENTIFIER]})*))`);mt("FULLPLAIN",`v?${Je[We.MAINVERSION]}${Je[We.PRERELEASE]}?${Je[We.BUILD]}?`);mt("FULL",`^${Je[We.FULLPLAIN]}$`);mt("LOOSEPLAIN",`[v=\\s]*${Je[We.MAINVERSIONLOOSE]}${Je[We.PRERELEASELOOSE]}?${Je[We.BUILD]}?`);mt("LOOSE",`^${Je[We.LOOSEPLAIN]}$`);mt("GTLT","((?:<|>)?=?)");mt("XRANGEIDENTIFIERLOOSE",`${Je[We.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);mt("XRANGEIDENTIFIER",`${Je[We.NUMERICIDENTIFIER]}|x|X|\\*`);mt("XRANGEPLAIN",`[v=\\s]*(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:${Je[We.PRERELEASE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGEPLAINLOOSE",`[v=\\s]*(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:${Je[We.PRERELEASELOOSE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAIN]}$`);mt("XRANGELOOSE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAINLOOSE]}$`);mt("COERCE",`(^|[^\\d])(\\d{1,${yv}})(?:\\.(\\d{1,${yv}}))?(?:\\.(\\d{1,${yv}}))?(?:$|[^\\d])`);mt("COERCERTL",Je[We.COERCE],!0);mt("LONETILDE","(?:~>?)");mt("TILDETRIM",`(\\s*)${Je[We.LONETILDE]}\\s+`,!0);iA.tildeTrimReplace="$1~";mt("TILDE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAIN]}$`);mt("TILDELOOSE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("LONECARET","(?:\\^)");mt("CARETTRIM",`(\\s*)${Je[We.LONECARET]}\\s+`,!0);iA.caretTrimReplace="$1^";mt("CARET",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAIN]}$`);mt("CARETLOOSE",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("COMPARATORLOOSE",`^${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]})$|^$`);mt("COMPARATOR",`^${Je[We.GTLT]}\\s*(${Je[We.FULLPLAIN]})$|^$`);mt("COMPARATORTRIM",`(\\s*)${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]}|${Je[We.XRANGEPLAIN]})`,!0);iA.comparatorTrimReplace="$1$2$3";mt("HYPHENRANGE",`^\\s*(${Je[We.XRANGEPLAIN]})\\s+-\\s+(${Je[We.XRANGEPLAIN]})\\s*$`);mt("HYPHENRANGELOOSE",`^\\s*(${Je[We.XRANGEPLAINLOOSE]})\\s+-\\s+(${Je[We.XRANGEPLAINLOOSE]})\\s*$`);mt("STAR","(<|>)?=?\\s*\\*");mt("GTE0","^\\s*>=\\s*0.0.0\\s*$");mt("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var kh=E((ttt,HU)=>{var vCe=["includePrerelease","loose","rtl"],SCe=t=>t?typeof t!="object"?{loose:!0}:vCe.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};HU.exports=SCe});var zE=E((rtt,GU)=>{var jU=/^[0-9]+$/,YU=(t,e)=>{let r=jU.test(t),i=jU.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:tYU(e,t);GU.exports={compareIdentifiers:YU,rcompareIdentifiers:xCe}});var bi=E((itt,qU)=>{var VE=xh(),{MAX_LENGTH:JU,MAX_SAFE_INTEGER:_E}=Sh(),{re:WU,t:zU}=Ql(),kCe=kh(),{compareIdentifiers:Ph}=zE(),_n=class{constructor(e,r){if(r=kCe(r),e instanceof _n){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>JU)throw new TypeError(`version is longer than ${JU} characters`);VE("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let i=e.trim().match(r.loose?WU[zU.LOOSE]:WU[zU.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>_E||this.major<0)throw new TypeError("Invalid major version");if(this.minor>_E||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>_E||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s<_E)return s}return n}):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(VE("SemVer.compare",this.version,this.options,e),!(e instanceof _n)){if(typeof e=="string"&&e===this.version)return 0;e=new _n(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof _n||(e=new _n(e,this.options)),Ph(this.major,e.major)||Ph(this.minor,e.minor)||Ph(this.patch,e.patch)}comparePre(e){if(e instanceof _n||(e=new _n(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let i=this.prerelease[r],n=e.prerelease[r];if(VE("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}compareBuild(e){e instanceof _n||(e=new _n(e,this.options));let r=0;do{let i=this.build[r],n=e.build[r];if(VE("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}inc(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r),this.inc("pre",r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};qU.exports=_n});var bl=E((ntt,VU)=>{var{MAX_LENGTH:PCe}=Sh(),{re:_U,t:XU}=Ql(),ZU=bi(),DCe=kh(),RCe=(t,e)=>{if(e=DCe(e),t instanceof ZU)return t;if(typeof t!="string"||t.length>PCe||!(e.loose?_U[XU.LOOSE]:_U[XU.FULL]).test(t))return null;try{return new ZU(t,e)}catch(i){return null}};VU.exports=RCe});var e2=E((stt,$U)=>{var FCe=bl(),NCe=(t,e)=>{let r=FCe(t,e);return r?r.version:null};$U.exports=NCe});var r2=E((ott,t2)=>{var LCe=bl(),TCe=(t,e)=>{let r=LCe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};t2.exports=TCe});var n2=E((att,i2)=>{var MCe=bi(),OCe=(t,e,r,i)=>{typeof r=="string"&&(i=r,r=void 0);try{return new MCe(t,r).inc(e,i).version}catch(n){return null}};i2.exports=OCe});var Xn=E((Att,s2)=>{var o2=bi(),KCe=(t,e,r)=>new o2(t,r).compare(new o2(e,r));s2.exports=KCe});var XE=E((ltt,a2)=>{var UCe=Xn(),HCe=(t,e,r)=>UCe(t,e,r)===0;a2.exports=HCe});var c2=E((ctt,A2)=>{var l2=bl(),GCe=XE(),jCe=(t,e)=>{if(GCe(t,e))return null;{let r=l2(t),i=l2(e),n=r.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==i[a])return s+a;return o}};A2.exports=jCe});var g2=E((utt,u2)=>{var YCe=bi(),qCe=(t,e)=>new YCe(t,e).major;u2.exports=qCe});var h2=E((gtt,f2)=>{var JCe=bi(),WCe=(t,e)=>new JCe(t,e).minor;f2.exports=WCe});var d2=E((ftt,p2)=>{var zCe=bi(),VCe=(t,e)=>new zCe(t,e).patch;p2.exports=VCe});var m2=E((htt,C2)=>{var _Ce=bl(),XCe=(t,e)=>{let r=_Ce(t,e);return r&&r.prerelease.length?r.prerelease:null};C2.exports=XCe});var I2=E((ptt,E2)=>{var ZCe=Xn(),$Ce=(t,e,r)=>ZCe(e,t,r);E2.exports=$Ce});var w2=E((dtt,y2)=>{var eme=Xn(),tme=(t,e)=>eme(t,e,!0);y2.exports=tme});var ZE=E((Ctt,B2)=>{var Q2=bi(),rme=(t,e,r)=>{let i=new Q2(t,r),n=new Q2(e,r);return i.compare(n)||i.compareBuild(n)};B2.exports=rme});var v2=E((mtt,b2)=>{var ime=ZE(),nme=(t,e)=>t.sort((r,i)=>ime(r,i,e));b2.exports=nme});var x2=E((Ett,S2)=>{var sme=ZE(),ome=(t,e)=>t.sort((r,i)=>sme(i,r,e));S2.exports=ome});var Dh=E((Itt,k2)=>{var ame=Xn(),Ame=(t,e,r)=>ame(t,e,r)>0;k2.exports=Ame});var $E=E((ytt,P2)=>{var lme=Xn(),cme=(t,e,r)=>lme(t,e,r)<0;P2.exports=cme});var wv=E((wtt,D2)=>{var ume=Xn(),gme=(t,e,r)=>ume(t,e,r)!==0;D2.exports=gme});var eI=E((Btt,R2)=>{var fme=Xn(),hme=(t,e,r)=>fme(t,e,r)>=0;R2.exports=hme});var tI=E((Qtt,F2)=>{var pme=Xn(),dme=(t,e,r)=>pme(t,e,r)<=0;F2.exports=dme});var Bv=E((btt,N2)=>{var Cme=XE(),mme=wv(),Eme=Dh(),Ime=eI(),yme=$E(),wme=tI(),Bme=(t,e,r,i)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Cme(t,r,i);case"!=":return mme(t,r,i);case">":return Eme(t,r,i);case">=":return Ime(t,r,i);case"<":return yme(t,r,i);case"<=":return wme(t,r,i);default:throw new TypeError(`Invalid operator: ${e}`)}};N2.exports=Bme});var T2=E((vtt,L2)=>{var Qme=bi(),bme=bl(),{re:rI,t:iI}=Ql(),vme=(t,e)=>{if(t instanceof Qme)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(rI[iI.COERCE]);else{let i;for(;(i=rI[iI.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||i.index+i[0].length!==r.index+r[0].length)&&(r=i),rI[iI.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;rI[iI.COERCERTL].lastIndex=-1}return r===null?null:bme(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};L2.exports=vme});var O2=E((Stt,M2)=>{"use strict";M2.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Rh=E((xtt,K2)=>{"use strict";K2.exports=Pt;Pt.Node=vl;Pt.create=Pt;function Pt(t){var e=this;if(e instanceof Pt||(e=new Pt),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};Pt.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};Pt.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Pt.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Pt.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Pt;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};Pt.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var Pme=Rh(),Sl=Symbol("max"),ra=Symbol("length"),uu=Symbol("lengthCalculator"),Fh=Symbol("allowStale"),xl=Symbol("maxAge"),ia=Symbol("dispose"),H2=Symbol("noDisposeOnSet"),si=Symbol("lruList"),ks=Symbol("cache"),G2=Symbol("updateAgeOnGet"),Qv=()=>1,j2=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[Sl]=e.max||Infinity,i=e.length||Qv;if(this[uu]=typeof i!="function"?Qv:i,this[Fh]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[xl]=e.maxAge||0,this[ia]=e.dispose,this[H2]=e.noDisposeOnSet||!1,this[G2]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Sl]=e||Infinity,Nh(this)}get max(){return this[Sl]}set allowStale(e){this[Fh]=!!e}get allowStale(){return this[Fh]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[xl]=e,Nh(this)}get maxAge(){return this[xl]}set lengthCalculator(e){typeof e!="function"&&(e=Qv),e!==this[uu]&&(this[uu]=e,this[ra]=0,this[si].forEach(r=>{r.length=this[uu](r.value,r.key),this[ra]+=r.length})),Nh(this)}get lengthCalculator(){return this[uu]}get length(){return this[ra]}get itemCount(){return this[si].length}rforEach(e,r){r=r||this;for(let i=this[si].tail;i!==null;){let n=i.prev;q2(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[si].head;i!==null;){let n=i.next;q2(this,e,i,r),i=n}}keys(){return this[si].toArray().map(e=>e.key)}values(){return this[si].toArray().map(e=>e.value)}reset(){this[ia]&&this[si]&&this[si].length&&this[si].forEach(e=>this[ia](e.key,e.value)),this[ks]=new Map,this[si]=new Pme,this[ra]=0}dump(){return this[si].map(e=>nI(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[si]}set(e,r,i){if(i=i||this[xl],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[uu](r,e);if(this[ks].has(e)){if(s>this[Sl])return gu(this,this[ks].get(e)),!1;let l=this[ks].get(e).value;return this[ia]&&(this[H2]||this[ia](e,l.value)),l.now=n,l.maxAge=i,l.value=r,this[ra]+=s-l.length,l.length=s,this.get(e),Nh(this),!0}let o=new Y2(e,r,s,n,i);return o.length>this[Sl]?(this[ia]&&this[ia](e,r),!1):(this[ra]+=o.length,this[si].unshift(o),this[ks].set(e,this[si].head),Nh(this),!0)}has(e){if(!this[ks].has(e))return!1;let r=this[ks].get(e).value;return!nI(this,r)}get(e){return bv(this,e,!0)}peek(e){return bv(this,e,!1)}pop(){let e=this[si].tail;return e?(gu(this,e),e.value):null}del(e){gu(this,this[ks].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[ks].forEach((e,r)=>bv(this,r,!1))}},bv=(t,e,r)=>{let i=t[ks].get(e);if(i){let n=i.value;if(nI(t,n)){if(gu(t,i),!t[Fh])return}else r&&(t[G2]&&(i.value.now=Date.now()),t[si].unshiftNode(i));return n.value}},nI=(t,e)=>{if(!e||!e.maxAge&&!t[xl])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[xl]&&r>t[xl]},Nh=t=>{if(t[ra]>t[Sl])for(let e=t[si].tail;t[ra]>t[Sl]&&e!==null;){let r=e.prev;gu(t,e),e=r}},gu=(t,e)=>{if(e){let r=e.value;t[ia]&&t[ia](r.key,r.value),t[ra]-=r.length,t[ks].delete(r.key),t[si].removeNode(e)}},Y2=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},q2=(t,e,r,i)=>{let n=r.value;nI(t,n)&&(gu(t,r),t[Fh]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};U2.exports=j2});var Zn=E((Ptt,W2)=>{var fu=class{constructor(e,r){if(r=Dme(r),e instanceof fu)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new fu(e.raw,r);if(e instanceof vv)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!V2(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&Tme(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=z2.get(i);if(n)return n;let s=this.options.loose,o=s?vi[di.HYPHENRANGELOOSE]:vi[di.HYPHENRANGE];e=e.replace(o,Kme(this.options.includePrerelease)),Rr("hyphen replace",e),e=e.replace(vi[di.COMPARATORTRIM],Fme),Rr("comparator trim",e,vi[di.COMPARATORTRIM]),e=e.replace(vi[di.TILDETRIM],Nme),e=e.replace(vi[di.CARETTRIM],Lme),e=e.split(/\s+/).join(" ");let a=s?vi[di.COMPARATORLOOSE]:vi[di.COMPARATOR],l=e.split(" ").map(f=>Mme(f,this.options)).join(" ").split(/\s+/).map(f=>Ome(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new vv(f,this.options)),c=l.length,u=new Map;for(let f of l){if(V2(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return z2.set(i,g),g}intersects(e,r){if(!(e instanceof fu))throw new TypeError("a Range is required");return this.set.some(i=>_2(i,r)&&e.set.some(n=>_2(n,r)&&i.every(s=>n.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new Rme(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",Tme=t=>t.value==="",_2=(t,e)=>{let r=!0,i=t.slice(),n=i.pop();for(;r&&i.length;)r=i.every(s=>n.intersects(s,e)),n=i.pop();return r},Mme=(t,e)=>(Rr("comp",t,e),t=jme(t,e),Rr("caret",t),t=Gme(t,e),Rr("tildes",t),t=Yme(t,e),Rr("xrange",t),t=qme(t,e),Rr("stars",t),t),Ji=t=>!t||t.toLowerCase()==="x"||t==="*",Gme=(t,e)=>t.trim().split(/\s+/).map(r=>Jme(r,e)).join(" "),Jme=(t,e)=>{let r=e.loose?vi[di.TILDELOOSE]:vi[di.TILDE];return t.replace(r,(i,n,s,o,a)=>{Rr("tilde",t,i,n,s,o,a);let l;return Ji(n)?l="":Ji(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Ji(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Rr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Rr("tilde return",l),l})},jme=(t,e)=>t.trim().split(/\s+/).map(r=>Wme(r,e)).join(" "),Wme=(t,e)=>{Rr("caret",t,e);let r=e.loose?vi[di.CARETLOOSE]:vi[di.CARET],i=e.includePrerelease?"-0":"";return t.replace(r,(n,s,o,a,l)=>{Rr("caret",t,n,s,o,a,l);let c;return Ji(s)?c="":Ji(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Ji(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Rr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Rr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Rr("caret return",c),c})},Yme=(t,e)=>(Rr("replaceXRanges",t,e),t.split(/\s+/).map(r=>zme(r,e)).join(" ")),zme=(t,e)=>{t=t.trim();let r=e.loose?vi[di.XRANGELOOSE]:vi[di.XRANGE];return t.replace(r,(i,n,s,o,a,l)=>{Rr("xRange",t,i,n,s,o,a,l);let c=Ji(s),u=c||Ji(o),g=u||Ji(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Rr("xRange return",i),i})},qme=(t,e)=>(Rr("replaceStars",t,e),t.trim().replace(vi[di.STAR],"")),Ome=(t,e)=>(Rr("replaceGTE0",t,e),t.trim().replace(vi[e.includePrerelease?di.GTE0PRE:di.GTE0],"")),Kme=t=>(e,r,i,n,s,o,a,l,c,u,g,f,h)=>(Ji(i)?r="":Ji(n)?r=`>=${i}.0.0${t?"-0":""}`:Ji(s)?r=`>=${i}.${n}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ji(c)?l="":Ji(u)?l=`<${+c+1}.0.0-0`:Ji(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:t?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),Ume=(t,e,r)=>{for(let i=0;i0){let n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Lh=E((Dtt,X2)=>{var Th=Symbol("SemVer ANY"),Mh=class{static get ANY(){return Th}constructor(e,r){if(r=Vme(r),e instanceof Mh){if(e.loose===!!r.loose)return e;e=e.value}xv("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Th?this.value="":this.value=this.operator+this.semver.version,xv("comp",this)}parse(e){let r=this.options.loose?Z2[$2.COMPARATORLOOSE]:Z2[$2.COMPARATOR],i=e.match(r);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new eH(i[2],this.options.loose):this.semver=Th}toString(){return this.value}test(e){if(xv("Comparator.test",e,this.options.loose),this.semver===Th||e===Th)return!0;if(typeof e=="string")try{e=new eH(e,this.options)}catch(r){return!1}return Sv(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Mh))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new tH(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new tH(this.value,r).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=Sv(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=Sv(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};X2.exports=Mh;var Vme=kh(),{re:Z2,t:$2}=Ql(),Sv=Bv(),xv=xh(),eH=bi(),tH=Zn()});var Oh=E((Rtt,rH)=>{var _me=Zn(),Xme=(t,e,r)=>{try{e=new _me(e,r)}catch(i){return!1}return e.test(t)};rH.exports=Xme});var nH=E((Ftt,iH)=>{var Zme=Zn(),$me=(t,e)=>new Zme(t,e).set.map(r=>r.map(i=>i.value).join(" ").trim().split(" "));iH.exports=$me});var oH=E((Ntt,sH)=>{var eEe=bi(),tEe=Zn(),rEe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new tEe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new eEe(i,r))}),i};sH.exports=rEe});var AH=E((Ltt,aH)=>{var iEe=bi(),nEe=Zn(),sEe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new nEe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new iEe(i,r))}),i};aH.exports=sEe});var uH=E((Ttt,lH)=>{var kv=bi(),oEe=Zn(),cH=Dh(),aEe=(t,e)=>{t=new oEe(t,e);let r=new kv("0.0.0");if(t.test(r)||(r=new kv("0.0.0-0"),t.test(r)))return r;r=null;for(let i=0;i{let a=new kv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||cH(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||cH(r,s))&&(r=s)}return r&&t.test(r)?r:null};lH.exports=aEe});var fH=E((Mtt,gH)=>{var AEe=Zn(),lEe=(t,e)=>{try{return new AEe(t,e).range||"*"}catch(r){return null}};gH.exports=lEe});var sI=E((Ott,hH)=>{var cEe=bi(),pH=Lh(),{ANY:uEe}=pH,gEe=Zn(),fEe=Oh(),dH=Dh(),CH=$E(),hEe=tI(),pEe=eI(),dEe=(t,e,r,i)=>{t=new cEe(t,i),e=new gEe(e,i);let n,s,o,a,l;switch(r){case">":n=dH,s=hEe,o=CH,a=">",l=">=";break;case"<":n=CH,s=pEe,o=dH,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fEe(t,e,i))return!1;for(let c=0;c{h.semver===uEe&&(h=new pH(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(t,f.semver))return!1;if(f.operator===l&&o(t,f.semver))return!1}return!0};hH.exports=dEe});var EH=E((Ktt,mH)=>{var CEe=sI(),mEe=(t,e,r)=>CEe(t,e,">",r);mH.exports=mEe});var yH=E((Utt,IH)=>{var EEe=sI(),IEe=(t,e,r)=>EEe(t,e,"<",r);IH.exports=IEe});var QH=E((Htt,wH)=>{var BH=Zn(),yEe=(t,e,r)=>(t=new BH(t,r),e=new BH(e,r),t.intersects(e));wH.exports=yEe});var vH=E((Gtt,bH)=>{var wEe=Oh(),BEe=Xn();bH.exports=(t,e,r)=>{let i=[],n=null,s=null,o=t.sort((u,g)=>BEe(u,g,r));for(let u of o)wEe(u,e,r)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var xH=Zn(),oI=Lh(),{ANY:Pv}=oI,Kh=Oh(),Dv=Xn(),bEe=(t,e,r={})=>{if(t===e)return!0;t=new xH(t,r),e=new xH(e,r);let i=!1;e:for(let n of t.set){for(let s of e.set){let o=QEe(n,s,r);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},QEe=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Pv){if(e.length===1&&e[0].semver===Pv)return!0;r.includePrerelease?t=[new oI(">=0.0.0-0")]:t=[new oI(">=0.0.0")]}if(e.length===1&&e[0].semver===Pv){if(r.includePrerelease)return!0;e=[new oI(">=0.0.0")]}let i=new Set,n,s;for(let h of t)h.operator===">"||h.operator===">="?n=kH(n,h,r):h.operator==="<"||h.operator==="<="?s=PH(s,h,r):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=Dv(n.semver,s.semver,r),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!Kh(h,String(n),r)||s&&!Kh(h,String(s),r))return null;for(let p of e)if(!Kh(h,String(p),r))return!1;return!0}let a,l,c,u,g=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=kH(n,h,r),a===h&&a!==n)return!1}else if(n.operator===">="&&!Kh(n.semver,String(h),r))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=PH(s,h,r),l===h&&l!==s)return!1}else if(s.operator==="<="&&!Kh(s.semver,String(h),r))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},kH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i>0?t:i<0||e.operator===">"&&t.operator===">="?e:t},PH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i<0?t:i>0||e.operator==="<"&&t.operator==="<="?e:t};SH.exports=bEe});var Or=E((Ytt,RH)=>{var Rv=Ql();RH.exports={re:Rv.re,src:Rv.src,tokens:Rv.t,SEMVER_SPEC_VERSION:Sh().SEMVER_SPEC_VERSION,SemVer:bi(),compareIdentifiers:zE().compareIdentifiers,rcompareIdentifiers:zE().rcompareIdentifiers,parse:bl(),valid:e2(),clean:r2(),inc:n2(),diff:c2(),major:g2(),minor:h2(),patch:d2(),prerelease:m2(),compare:Xn(),rcompare:I2(),compareLoose:w2(),compareBuild:ZE(),sort:v2(),rsort:x2(),gt:Dh(),lt:$E(),eq:XE(),neq:wv(),gte:eI(),lte:tI(),cmp:Bv(),coerce:T2(),Comparator:Lh(),Range:Zn(),satisfies:Oh(),toComparators:nH(),maxSatisfying:oH(),minSatisfying:AH(),minVersion:uH(),validRange:fH(),outside:sI(),gtr:EH(),ltr:yH(),intersects:QH(),simplifyRange:vH(),subset:DH()}});var Uv=E(AI=>{"use strict";Object.defineProperty(AI,"__esModule",{value:!0});AI.VERSION=void 0;AI.VERSION="9.1.0"});var Dt=E((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(t,e,r){if(r||arguments.length===2)for(var i=0,n=e.length,s;i{(function(t,e){typeof define=="function"&&define.amd?define([],e):typeof lI=="object"&&lI.exports?lI.exports=e():t.regexpToAst=e()})(typeof self!="undefined"?self:YH,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},t.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var d=this.disjunction();this.consumeChar("/");for(var m={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(m,"global");break;case"i":o(m,"ignoreCase");break;case"m":o(m,"multiLine");break;case"u":o(m,"unicode");break;case"y":o(m,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:m,value:d,loc:this.loc(0)}},t.prototype.disjunction=function(){var p=[],d=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(d)}},t.prototype.alternative=function(){for(var p=[],d=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(d)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var d;switch(this.popChar()){case"=":d="Lookahead";break;case"!":d="NegativeLookahead";break}a(d);var m=this.disjunction();return this.consumeChar(")"),{type:d,value:m,loc:this.loc(p)}}l()},t.prototype.quantifier=function(p){var d,m=this.idx;switch(this.popChar()){case"*":d={atLeast:0,atMost:Infinity};break;case"+":d={atLeast:1,atMost:Infinity};break;case"?":d={atLeast:0,atMost:1};break;case"{":var I=this.integerIncludingZero();switch(this.popChar()){case"}":d={atLeast:I,atMost:I};break;case",":var B;this.isDigit()?(B=this.integerIncludingZero(),d={atLeast:I,atMost:B}):d={atLeast:I,atMost:Infinity},this.consumeChar("}");break}if(p===!0&&d===void 0)return;a(d);break}if(!(p===!0&&d===void 0))return a(d),this.peekChar(0)==="?"?(this.consumeChar("?"),d.greedy=!1):d.greedy=!0,d.type="Quantifier",d.loc=this.loc(m),d},t.prototype.atom=function(){var p,d=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(d),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` -`),n("\r"),n("\u2028"),n("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},t.prototype.characterClassEscape=function(){var p,d=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,d=!0;break;case"s":p=f;break;case"S":p=f,d=!0;break;case"w":p=g;break;case"W":p=g,d=!0;break}return a(p),{type:"Set",value:p,complement:d}},t.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` -`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var d=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:d}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},t.prototype.characterClass=function(){var p=[],d=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),d=!0);this.isClassAtom();){var m=this.classAtom(),I=m.type==="Character";if(I&&this.isRangeDash()){this.consumeChar("-");var B=this.classAtom(),b=B.type==="Character";if(b){if(B.value=this.input.length)throw Error("Unexpected end of input");this.idx++},t.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,r=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,d){p.length!==void 0?p.forEach(function(m){d.push(m)}):d.push(p)}function o(p,d){if(p[d]===!0)throw"duplicate flag "+d;p[d]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` -`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var d in p){var m=p[d];p.hasOwnProperty(d)&&(m.type!==void 0?this.visit(m):Array.isArray(m)&&m.forEach(function(I){this.visit(I)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:t,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var gI=E(Eu=>{"use strict";Object.defineProperty(Eu,"__esModule",{value:!0});Eu.clearRegExpParserCache=Eu.getRegExpAst=void 0;var FEe=cI(),uI={},NEe=new FEe.RegExpParser;function LEe(t){var e=t.toString();if(uI.hasOwnProperty(e))return uI[e];var r=NEe.pattern(e);return uI[e]=r,r}Eu.getRegExpAst=LEe;function TEe(){uI={}}Eu.clearRegExpParserCache=TEe});var VH=E(fn=>{"use strict";var MEe=fn&&fn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(fn,"__esModule",{value:!0});fn.canMatchCharCode=fn.firstCharOptimizedIndices=fn.getOptimizedStartCodesIndices=fn.failedOptimizationPrefixMsg=void 0;var qH=cI(),$n=Dt(),JH=gI(),sa=Hv(),WH="Complement Sets are not supported for first char optimization";fn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: -`;function OEe(t,e){e===void 0&&(e=!1);try{var r=(0,JH.getRegExpAst)(t),i=fI(r.value,{},r.flags.ignoreCase);return i}catch(s){if(s.message===WH)e&&(0,$n.PRINT_WARNING)(""+fn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+t.toString()+` > -`)+` Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,$n.PRINT_ERROR)(fn.failedOptimizationPrefixMsg+` -`+(" Failed parsing: < "+t.toString()+` > -`)+(" Using the regexp-to-ast library version: "+qH.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}fn.getOptimizedStartCodesIndices=OEe;function fI(t,e,r){switch(t.type){case"Disjunction":for(var i=0;i=sa.minOptimizationVal)for(var f=u.from>=sa.minOptimizationVal?u.from:sa.minOptimizationVal,h=u.to,p=(0,sa.charCodeToOptimizedIndex)(f),d=(0,sa.charCodeToOptimizedIndex)(h),m=p;m<=d;m++)e[m]=m}}});break;case"Group":fI(o.value,e,r);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&Gv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,$n.values)(e)}fn.firstCharOptimizedIndices=fI;function hI(t,e,r){var i=(0,sa.charCodeToOptimizedIndex)(t);e[i]=i,r===!0&&KEe(t,e)}function KEe(t,e){var r=String.fromCharCode(t),i=r.toUpperCase();if(i!==r){var n=(0,sa.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=r.toLowerCase();if(s!==r){var n=(0,sa.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function zH(t,e){return(0,$n.find)(t.value,function(r){if(typeof r=="number")return(0,$n.contains)(e,r);var i=r;return(0,$n.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function Gv(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?(0,$n.isArray)(t.value)?(0,$n.every)(t.value,Gv):Gv(t.value):!1}var UEe=function(t){MEe(e,t);function e(r){var i=t.call(this)||this;return i.targetCharCodes=r,i.found=!1,i}return e.prototype.visitChildren=function(r){if(this.found!==!0){switch(r.type){case"Lookahead":this.visitLookahead(r);return;case"NegativeLookahead":this.visitNegativeLookahead(r);return}t.prototype.visitChildren.call(this,r)}},e.prototype.visitCharacter=function(r){(0,$n.contains)(this.targetCharCodes,r.value)&&(this.found=!0)},e.prototype.visitSet=function(r){r.complement?zH(r,this.targetCharCodes)===void 0&&(this.found=!0):zH(r,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(qH.BaseRegExpVisitor);function HEe(t,e){if(e instanceof RegExp){var r=(0,JH.getRegExpAst)(e),i=new UEe(t);return i.visit(r),i.found}else return(0,$n.find)(e,function(n){return(0,$n.contains)(t,n.charCodeAt(0))})!==void 0}fn.canMatchCharCode=HEe});var Hv=E(je=>{"use strict";var _H=je&&je.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(je,"__esModule",{value:!0});je.charCodeToOptimizedIndex=je.minOptimizationVal=je.buildLineBreakIssueMessage=je.LineTerminatorOptimizedTester=je.isShortPattern=je.isCustomPattern=je.cloneEmptyGroups=je.performWarningRuntimeChecks=je.performRuntimeChecks=je.addStickyFlag=je.addStartOfInput=je.findUnreachablePatterns=je.findModesThatDoNotExist=je.findInvalidGroupType=je.findDuplicatePatterns=je.findUnsupportedFlags=je.findStartOfInputAnchor=je.findEmptyMatchRegExps=je.findEndOfInputAnchor=je.findInvalidPatterns=je.findMissingPatterns=je.validatePatterns=je.analyzeTokenTypes=je.enableSticky=je.disableSticky=je.SUPPORT_STICKY=je.MODES=je.DEFAULT_MODE=void 0;var XH=cI(),zt=Gh(),Ie=Dt(),Iu=VH(),ZH=gI(),ao="PATTERN";je.DEFAULT_MODE="defaultMode";je.MODES="modes";je.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function GEe(){je.SUPPORT_STICKY=!1}je.disableSticky=GEe;function jEe(){je.SUPPORT_STICKY=!0}je.enableSticky=jEe;function qEe(t,e){e=(0,Ie.defaults)(e,{useSticky:je.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(B,b){return b()}});var r=e.tracer;r("initCharCodeToOptimizedIndexMap",function(){YEe()});var i;r("Reject Lexer.NA",function(){i=(0,Ie.reject)(t,function(B){return B[ao]===zt.Lexer.NA})});var n=!1,s;r("Transform Patterns",function(){n=!1,s=(0,Ie.map)(i,function(B){var b=B[ao];if((0,Ie.isRegExp)(b)){var R=b.source;return R.length===1&&R!=="^"&&R!=="$"&&R!=="."&&!b.ignoreCase?R:R.length===2&&R[0]==="\\"&&!(0,Ie.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],R[1])?R[1]:e.useSticky?Yv(b):jv(b)}else{if((0,Ie.isFunction)(b))return n=!0,{exec:b};if((0,Ie.has)(b,"exec"))return n=!0,b;if(typeof b=="string"){if(b.length===1)return b;var H=b.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),L=new RegExp(H);return e.useSticky?Yv(L):jv(L)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;r("misc mapping",function(){o=(0,Ie.map)(i,function(B){return B.tokenTypeIdx}),a=(0,Ie.map)(i,function(B){var b=B.GROUP;if(b!==zt.Lexer.SKIPPED){if((0,Ie.isString)(b))return b;if((0,Ie.isUndefined)(b))return!1;throw Error("non exhaustive match")}}),l=(0,Ie.map)(i,function(B){var b=B.LONGER_ALT;if(b){var R=(0,Ie.isArray)(b)?(0,Ie.map)(b,function(H){return(0,Ie.indexOf)(i,H)}):[(0,Ie.indexOf)(i,b)];return R}}),c=(0,Ie.map)(i,function(B){return B.PUSH_MODE}),u=(0,Ie.map)(i,function(B){return(0,Ie.has)(B,"POP_MODE")})});var g;r("Line Terminator Handling",function(){var B=tG(e.lineTerminatorCharacters);g=(0,Ie.map)(i,function(b){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Ie.map)(i,function(b){if((0,Ie.has)(b,"LINE_BREAKS"))return b.LINE_BREAKS;if(eG(b,B)===!1)return(0,Iu.canMatchCharCode)(B,b.PATTERN)}))});var f,h,p,d;r("Misc Mapping #2",function(){f=(0,Ie.map)(i,qv),h=(0,Ie.map)(s,$H),p=(0,Ie.reduce)(i,function(B,b){var R=b.GROUP;return(0,Ie.isString)(R)&&R!==zt.Lexer.SKIPPED&&(B[R]=[]),B},{}),d=(0,Ie.map)(s,function(B,b){return{pattern:s[b],longerAlt:l[b],canLineTerminator:g[b],isCustom:f[b],short:h[b],group:a[b],push:c[b],pop:u[b],tokenTypeIdx:o[b],tokenType:i[b]}})});var m=!0,I=[];return e.safeMode||r("First Char Optimization",function(){I=(0,Ie.reduce)(i,function(B,b,R){if(typeof b.PATTERN=="string"){var H=b.PATTERN.charCodeAt(0),L=Wv(H);Jv(B,L,d[R])}else if((0,Ie.isArray)(b.START_CHARS_HINT)){var K;(0,Ie.forEach)(b.START_CHARS_HINT,function(ne){var q=typeof ne=="string"?ne.charCodeAt(0):ne,A=Wv(q);K!==A&&(K=A,Jv(B,A,d[R]))})}else if((0,Ie.isRegExp)(b.PATTERN))if(b.PATTERN.unicode)m=!1,e.ensureOptimizations&&(0,Ie.PRINT_ERROR)(""+Iu.failedOptimizationPrefixMsg+(" Unable to analyze < "+b.PATTERN.toString()+` > pattern. -`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var J=(0,Iu.getOptimizedStartCodesIndices)(b.PATTERN,e.ensureOptimizations);(0,Ie.isEmpty)(J)&&(m=!1),(0,Ie.forEach)(J,function(ne){Jv(B,ne,d[R])})}else e.ensureOptimizations&&(0,Ie.PRINT_ERROR)(""+Iu.failedOptimizationPrefixMsg+(" TokenType: <"+b.name+`> is using a custom token pattern without providing parameter. -`)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),m=!1;return B},[])}),r("ArrayPacking",function(){I=(0,Ie.packArray)(I)}),{emptyGroups:p,patternIdxToConfig:d,charCodeToPatternIdxToConfig:I,hasCustom:n,canBeOptimized:m}}je.analyzeTokenTypes=qEe;function WEe(t,e){var r=[],i=rG(t);r=r.concat(i.errors);var n=iG(i.valid),s=n.valid;return r=r.concat(n.errors),r=r.concat(JEe(s)),r=r.concat(nG(s)),r=r.concat(sG(s,e)),r=r.concat(oG(s)),r}je.validatePatterns=WEe;function JEe(t){var e=[],r=(0,Ie.filter)(t,function(i){return(0,Ie.isRegExp)(i[ao])});return e=e.concat(aG(r)),e=e.concat(lG(r)),e=e.concat(cG(r)),e=e.concat(uG(r)),e=e.concat(AG(r)),e}function rG(t){var e=(0,Ie.filter)(t,function(n){return!(0,Ie.has)(n,ao)}),r=(0,Ie.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:zt.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Ie.difference)(t,e);return{errors:r,valid:i}}je.findMissingPatterns=rG;function iG(t){var e=(0,Ie.filter)(t,function(n){var s=n[ao];return!(0,Ie.isRegExp)(s)&&!(0,Ie.isFunction)(s)&&!(0,Ie.has)(s,"exec")&&!(0,Ie.isString)(s)}),r=(0,Ie.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:zt.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Ie.difference)(t,e);return{errors:r,valid:i}}je.findInvalidPatterns=iG;var zEe=/[^\\][\$]/;function aG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ie.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return zEe.test(s.source)}}),i=(0,Ie.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findEndOfInputAnchor=aG;function AG(t){var e=(0,Ie.filter)(t,function(i){var n=i[ao];return n.test("")}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:zt.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return r}je.findEmptyMatchRegExps=AG;var VEe=/[^\\[][\^]|^\^/;function lG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ie.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return VEe.test(s.source)}}),i=(0,Ie.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findStartOfInputAnchor=lG;function cG(t){var e=(0,Ie.filter)(t,function(i){var n=i[ao];return n instanceof RegExp&&(n.multiline||n.global)}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:zt.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return r}je.findUnsupportedFlags=cG;function uG(t){var e=[],r=(0,Ie.map)(t,function(s){return(0,Ie.reduce)(t,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Ie.contains)(e,a)&&a.PATTERN!==zt.Lexer.NA&&(e.push(a),o.push(a)),o},[])});r=(0,Ie.compact)(r);var i=(0,Ie.filter)(r,function(s){return s.length>1}),n=(0,Ie.map)(i,function(s){var o=(0,Ie.map)(s,function(l){return l.name}),a=(0,Ie.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:zt.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}je.findDuplicatePatterns=uG;function nG(t){var e=(0,Ie.filter)(t,function(i){if(!(0,Ie.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==zt.Lexer.SKIPPED&&n!==zt.Lexer.NA&&!(0,Ie.isString)(n)}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:zt.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return r}je.findInvalidGroupType=nG;function sG(t,e){var r=(0,Ie.filter)(t,function(n){return n.PUSH_MODE!==void 0&&!(0,Ie.contains)(e,n.PUSH_MODE)}),i=(0,Ie.map)(r,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:zt.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}je.findModesThatDoNotExist=sG;function oG(t){var e=[],r=(0,Ie.reduce)(t,function(i,n,s){var o=n.PATTERN;return o===zt.Lexer.NA||((0,Ie.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Ie.isRegExp)(o)&&XEe(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Ie.forEach)(t,function(i,n){(0,Ie.forEach)(r,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:zt.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}je.findUnreachablePatterns=oG;function _Ee(t,e){if((0,Ie.isRegExp)(e)){var r=e.exec(t);return r!==null&&r.index===0}else{if((0,Ie.isFunction)(e))return e(t,0,[],{});if((0,Ie.has)(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function XEe(t){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Ie.find)(e,function(r){return t.source.indexOf(r)!==-1})===void 0}function jv(t){var e=t.ignoreCase?"i":"";return new RegExp("^(?:"+t.source+")",e)}je.addStartOfInput=jv;function Yv(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}je.addStickyFlag=Yv;function ZEe(t,e,r){var i=[];return(0,Ie.has)(t,je.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.DEFAULT_MODE+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Ie.has)(t,je.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.MODES+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Ie.has)(t,je.MODES)&&(0,Ie.has)(t,je.DEFAULT_MODE)&&!(0,Ie.has)(t.modes,t.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+je.DEFAULT_MODE+": <"+t.defaultMode+`>which does not exist -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Ie.has)(t,je.MODES)&&(0,Ie.forEach)(t.modes,function(n,s){(0,Ie.forEach)(n,function(o,a){(0,Ie.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> -`),type:zt.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}je.performRuntimeChecks=ZEe;function $Ee(t,e,r){var i=[],n=!1,s=(0,Ie.compact)((0,Ie.flatten)((0,Ie.mapValues)(t.modes,function(l){return l}))),o=(0,Ie.reject)(s,function(l){return l[ao]===zt.Lexer.NA}),a=tG(r);return e&&(0,Ie.forEach)(o,function(l){var c=eG(l,a);if(c!==!1){var u=gG(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Ie.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Iu.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:zt.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}je.performWarningRuntimeChecks=$Ee;function eIe(t){var e={},r=(0,Ie.keys)(t);return(0,Ie.forEach)(r,function(i){var n=t[i];if((0,Ie.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}je.cloneEmptyGroups=eIe;function qv(t){var e=t.PATTERN;if((0,Ie.isRegExp)(e))return!1;if((0,Ie.isFunction)(e))return!0;if((0,Ie.has)(e,"exec"))return!0;if((0,Ie.isString)(e))return!1;throw Error("non exhaustive match")}je.isCustomPattern=qv;function $H(t){return(0,Ie.isString)(t)&&t.length===1?t.charCodeAt(0):!1}je.isShortPattern=$H;je.LineTerminatorOptimizedTester={test:function(t){for(var e=t.length,r=this.lastIndex;r Token Type -`)+(" Root cause: "+e.errMsg+`. -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===zt.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. -`+(" The problem is in the <"+t.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}je.buildLineBreakIssueMessage=gG;function tG(t){var e=(0,Ie.map)(t,function(r){return(0,Ie.isString)(r)&&r.length>0?r.charCodeAt(0):r});return e}function Jv(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}je.minOptimizationVal=256;var pI=[];function Wv(t){return t255?255+~~(t/255):t}}});var yu=E(Bt=>{"use strict";Object.defineProperty(Bt,"__esModule",{value:!0});Bt.isTokenType=Bt.hasExtendingTokensTypesMapProperty=Bt.hasExtendingTokensTypesProperty=Bt.hasCategoriesProperty=Bt.hasShortKeyProperty=Bt.singleAssignCategoriesToksMap=Bt.assignCategoriesMapProp=Bt.assignCategoriesTokensProp=Bt.assignTokenDefaultProps=Bt.expandCategories=Bt.augmentTokenTypes=Bt.tokenIdxToClass=Bt.tokenShortNameIdx=Bt.tokenStructuredMatcherNoCategories=Bt.tokenStructuredMatcher=void 0;var Kr=Dt();function tIe(t,e){var r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}Bt.tokenStructuredMatcher=tIe;function rIe(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}Bt.tokenStructuredMatcherNoCategories=rIe;Bt.tokenShortNameIdx=1;Bt.tokenIdxToClass={};function iIe(t){var e=fG(t);hG(e),dG(e),pG(e),(0,Kr.forEach)(e,function(r){r.isParent=r.categoryMatches.length>0})}Bt.augmentTokenTypes=iIe;function fG(t){for(var e=(0,Kr.cloneArr)(t),r=t,i=!0;i;){r=(0,Kr.compact)((0,Kr.flatten)((0,Kr.map)(r,function(s){return s.CATEGORIES})));var n=(0,Kr.difference)(r,e);e=e.concat(n),(0,Kr.isEmpty)(n)?i=!1:r=n}return e}Bt.expandCategories=fG;function hG(t){(0,Kr.forEach)(t,function(e){CG(e)||(Bt.tokenIdxToClass[Bt.tokenShortNameIdx]=e,e.tokenTypeIdx=Bt.tokenShortNameIdx++),zv(e)&&!(0,Kr.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),zv(e)||(e.CATEGORIES=[]),mG(e)||(e.categoryMatches=[]),EG(e)||(e.categoryMatchesMap={})})}Bt.assignTokenDefaultProps=hG;function pG(t){(0,Kr.forEach)(t,function(e){e.categoryMatches=[],(0,Kr.forEach)(e.categoryMatchesMap,function(r,i){e.categoryMatches.push(Bt.tokenIdxToClass[i].tokenTypeIdx)})})}Bt.assignCategoriesTokensProp=pG;function dG(t){(0,Kr.forEach)(t,function(e){Vv([],e)})}Bt.assignCategoriesMapProp=dG;function Vv(t,e){(0,Kr.forEach)(t,function(r){e.categoryMatchesMap[r.tokenTypeIdx]=!0}),(0,Kr.forEach)(e.CATEGORIES,function(r){var i=t.concat(e);(0,Kr.contains)(i,r)||Vv(i,r)})}Bt.singleAssignCategoriesToksMap=Vv;function CG(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.hasShortKeyProperty=CG;function zv(t){return(0,Kr.has)(t,"CATEGORIES")}Bt.hasCategoriesProperty=zv;function mG(t){return(0,Kr.has)(t,"categoryMatches")}Bt.hasExtendingTokensTypesProperty=mG;function EG(t){return(0,Kr.has)(t,"categoryMatchesMap")}Bt.hasExtendingTokensTypesMapProperty=EG;function nIe(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.isTokenType=nIe});var _v=E(dI=>{"use strict";Object.defineProperty(dI,"__esModule",{value:!0});dI.defaultLexerErrorProvider=void 0;dI.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(t){return"Unable to pop Lexer Mode after encountering Token ->"+t.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(t,e,r,i,n){return"unexpected character: ->"+t.charAt(e)+"<- at offset: "+e+","+(" skipped "+r+" characters.")}}});var Gh=E(Rl=>{"use strict";Object.defineProperty(Rl,"__esModule",{value:!0});Rl.Lexer=Rl.LexerDefinitionErrorType=void 0;var Ps=Hv(),Vt=Dt(),sIe=yu(),oIe=_v(),aIe=gI(),AIe;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(AIe=Rl.LexerDefinitionErrorType||(Rl.LexerDefinitionErrorType={}));var jh={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:oIe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(jh);var lIe=function(){function t(e,r){var i=this;if(r===void 0&&(r=jh),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=(0,Vt.merge)(jh,r);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=Infinity,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===jh.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Ps.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===jh.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,Vt.isArray)(e)?(s={modes:{}},s.modes[Ps.DEFAULT_MODE]=(0,Vt.cloneArr)(e),s[Ps.DEFAULT_MODE]=Ps.DEFAULT_MODE):(o=!1,s=(0,Vt.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Ps.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,Vt.forEach)(s.modes,function(u,g){s.modes[g]=(0,Vt.reject)(u,function(f){return(0,Vt.isUndefined)(f)})});var a=(0,Vt.keys)(s.modes);if((0,Vt.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.validatePatterns)(u,a))}),(0,Vt.isEmpty)(i.lexerDefinitionErrors)){(0,sIe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Ps.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,Vt.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,Vt.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,Vt.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+c)}(0,Vt.forEach)(i.lexerDefinitionWarning,function(u){(0,Vt.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Ps.SUPPORT_STICKY?(i.chopInput=Vt.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=Vt.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=Vt.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=Vt.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=Vt.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,Vt.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(r.ensureOptimizations&&!(0,Vt.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,aIe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,Vt.toFastProperties)(i)})})}return t.prototype.tokenize=function(e,r){if(r===void 0&&(r=this.defaultMode),!(0,Vt.isEmpty)(this.lexerDefinitionErrors)){var i=(0,Vt.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+n)}var s=this.tokenizeInternal(e,r);return s},t.prototype.tokenizeInternal=function(e,r){var i=this,n,s,o,a,l,c,u,g,f,h,p,d,m,I,B,b,R=e,H=R.length,L=0,K=0,J=this.hasCustom?0:Math.floor(e.length/10),ne=new Array(J),q=[],A=this.trackStartLines?1:void 0,V=this.trackStartLines?1:void 0,W=(0,Ps.cloneEmptyGroups)(this.emptyGroups),X=this.trackStartLines,F=this.config.lineTerminatorsPattern,D=0,he=[],pe=[],Ne=[],Pe=[];Object.freeze(Pe);var qe=void 0;function re(){return he}function se(wr){var Ui=(0,Ps.charCodeToOptimizedIndex)(wr),ws=pe[Ui];return ws===void 0?Pe:ws}var be=function(wr){if(Ne.length===1&&wr.tokenType.PUSH_MODE===void 0){var Ui=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(wr);q.push({offset:wr.startOffset,line:wr.startLine!==void 0?wr.startLine:void 0,column:wr.startColumn!==void 0?wr.startColumn:void 0,length:wr.image.length,message:Ui})}else{Ne.pop();var ws=(0,Vt.last)(Ne);he=i.patternIdxToConfig[ws],pe=i.charCodeToPatternIdxToConfig[ws],D=he.length;var Tf=i.canModeBeOptimized[ws]&&i.config.safeMode===!1;pe&&Tf?qe=se:qe=re}};function ae(wr){Ne.push(wr),pe=this.charCodeToPatternIdxToConfig[wr],he=this.patternIdxToConfig[wr],D=he.length,D=he.length;var Ui=this.canModeBeOptimized[wr]&&this.config.safeMode===!1;pe&&Ui?qe=se:qe=re}ae.call(this,r);for(var Ae;Lc.length){c=a,u=g,Ae=Oe;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,d=this.createTokenInstance(c,L,p,Ae.tokenType,A,V,f),this.handlePayload(d,u),h===!1?K=this.addToken(ne,K,d):W[h].push(d)),e=this.chopInput(e,f),L=L+f,V=this.computeNewColumn(V,f),X===!0&&Ae.canLineTerminator===!0){var dt=0,ri=void 0,ii=void 0;F.lastIndex=0;do ri=F.test(c),ri===!0&&(ii=F.lastIndex-1,dt++);while(ri===!0);dt!==0&&(A=A+dt,V=f-ii,this.updateTokenEndLineColumnLocation(d,h,ii,dt,A,V,f))}this.handleModes(Ae,be,ae,d)}else{for(var an=L,yr=A,Ki=V,Qi=!1;!Qi&&L <"+e+">");var n=(0,Vt.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",t.NA=/NOT_APPLICABLE/,t}();Rl.Lexer=lIe});var nA=E(Ci=>{"use strict";Object.defineProperty(Ci,"__esModule",{value:!0});Ci.tokenMatcher=Ci.createTokenInstance=Ci.EOF=Ci.createToken=Ci.hasTokenLabel=Ci.tokenName=Ci.tokenLabel=void 0;var Ds=Dt(),cIe=Gh(),Xv=yu();function uIe(t){return IG(t)?t.LABEL:t.name}Ci.tokenLabel=uIe;function gIe(t){return t.name}Ci.tokenName=gIe;function IG(t){return(0,Ds.isString)(t.LABEL)&&t.LABEL!==""}Ci.hasTokenLabel=IG;var fIe="parent",yG="categories",wG="label",BG="group",QG="push_mode",bG="pop_mode",vG="longer_alt",SG="line_breaks",xG="start_chars_hint";function kG(t){return hIe(t)}Ci.createToken=kG;function hIe(t){var e=t.pattern,r={};if(r.name=t.name,(0,Ds.isUndefined)(e)||(r.PATTERN=e),(0,Ds.has)(t,fIe))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Ds.has)(t,yG)&&(r.CATEGORIES=t[yG]),(0,Xv.augmentTokenTypes)([r]),(0,Ds.has)(t,wG)&&(r.LABEL=t[wG]),(0,Ds.has)(t,BG)&&(r.GROUP=t[BG]),(0,Ds.has)(t,bG)&&(r.POP_MODE=t[bG]),(0,Ds.has)(t,QG)&&(r.PUSH_MODE=t[QG]),(0,Ds.has)(t,vG)&&(r.LONGER_ALT=t[vG]),(0,Ds.has)(t,SG)&&(r.LINE_BREAKS=t[SG]),(0,Ds.has)(t,xG)&&(r.START_CHARS_HINT=t[xG]),r}Ci.EOF=kG({name:"EOF",pattern:cIe.Lexer.NA});(0,Xv.augmentTokenTypes)([Ci.EOF]);function pIe(t,e,r,i,n,s,o,a){return{image:e,startOffset:r,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}Ci.createTokenInstance=pIe;function dIe(t,e){return(0,Xv.tokenStructuredMatcher)(t,e)}Ci.tokenMatcher=dIe});var hn=E(Tt=>{"use strict";var oa=Tt&&Tt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Tt,"__esModule",{value:!0});Tt.serializeProduction=Tt.serializeGrammar=Tt.Terminal=Tt.Alternation=Tt.RepetitionWithSeparator=Tt.Repetition=Tt.RepetitionMandatoryWithSeparator=Tt.RepetitionMandatory=Tt.Option=Tt.Alternative=Tt.Rule=Tt.NonTerminal=Tt.AbstractProduction=void 0;var $t=Dt(),CIe=nA(),Ao=function(){function t(e){this._definition=e}return Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),(0,$t.forEach)(this.definition,function(r){r.accept(e)})},t}();Tt.AbstractProduction=Ao;var PG=function(t){oa(e,t);function e(r){var i=t.call(this,[])||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(r){},enumerable:!1,configurable:!0}),e.prototype.accept=function(r){r.visit(this)},e}(Ao);Tt.NonTerminal=PG;var DG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.orgText="",(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Rule=DG;var RG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.ignoreAmbiguities=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Alternative=RG;var FG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Option=FG;var NG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatory=NG;var LG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatoryWithSeparator=LG;var TG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Repetition=TG;var MG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionWithSeparator=MG;var OG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(r){this._definition=r},enumerable:!1,configurable:!0}),e}(Ao);Tt.Alternation=OG;var CI=function(){function t(e){this.idx=1,(0,$t.assign)(this,(0,$t.pick)(e,function(r){return r!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();Tt.Terminal=CI;function mIe(t){return(0,$t.map)(t,Yh)}Tt.serializeGrammar=mIe;function Yh(t){function e(s){return(0,$t.map)(s,Yh)}if(t instanceof PG){var r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return(0,$t.isString)(t.label)&&(r.label=t.label),r}else{if(t instanceof RG)return{type:"Alternative",definition:e(t.definition)};if(t instanceof FG)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof NG)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof LG)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Yh(new CI({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof MG)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Yh(new CI({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof TG)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof OG)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof CI){var i={type:"Terminal",name:t.terminalType.name,label:(0,CIe.tokenLabel)(t.terminalType),idx:t.idx};(0,$t.isString)(t.label)&&(i.terminalLabel=t.label);var n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(i.pattern=(0,$t.isRegExp)(n)?n.source:n),i}else{if(t instanceof DG)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}Tt.serializeProduction=Yh});var EI=E(mI=>{"use strict";Object.defineProperty(mI,"__esModule",{value:!0});mI.RestWalker=void 0;var Zv=Dt(),pn=hn(),EIe=function(){function t(){}return t.prototype.walk=function(e,r){var i=this;r===void 0&&(r=[]),(0,Zv.forEach)(e.definition,function(n,s){var o=(0,Zv.drop)(e.definition,s+1);if(n instanceof pn.NonTerminal)i.walkProdRef(n,o,r);else if(n instanceof pn.Terminal)i.walkTerminal(n,o,r);else if(n instanceof pn.Alternative)i.walkFlat(n,o,r);else if(n instanceof pn.Option)i.walkOption(n,o,r);else if(n instanceof pn.RepetitionMandatory)i.walkAtLeastOne(n,o,r);else if(n instanceof pn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,r);else if(n instanceof pn.RepetitionWithSeparator)i.walkManySep(n,o,r);else if(n instanceof pn.Repetition)i.walkMany(n,o,r);else if(n instanceof pn.Alternation)i.walkOr(n,o,r);else throw Error("non exhaustive match")})},t.prototype.walkTerminal=function(e,r,i){},t.prototype.walkProdRef=function(e,r,i){},t.prototype.walkFlat=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkOption=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkAtLeastOne=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkAtLeastOneSep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkMany=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkManySep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkOr=function(e,r,i){var n=this,s=r.concat(i);(0,Zv.forEach)(e.definition,function(o){var a=new pn.Alternative({definition:[o]});n.walk(a,s)})},t}();mI.RestWalker=EIe;function KG(t,e,r){var i=[new pn.Option({definition:[new pn.Terminal({terminalType:t.separator})].concat(t.definition)})],n=i.concat(e,r);return n}});var wu=E(II=>{"use strict";Object.defineProperty(II,"__esModule",{value:!0});II.GAstVisitor=void 0;var lo=hn(),IIe=function(){function t(){}return t.prototype.visit=function(e){var r=e;switch(r.constructor){case lo.NonTerminal:return this.visitNonTerminal(r);case lo.Alternative:return this.visitAlternative(r);case lo.Option:return this.visitOption(r);case lo.RepetitionMandatory:return this.visitRepetitionMandatory(r);case lo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(r);case lo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(r);case lo.Repetition:return this.visitRepetition(r);case lo.Alternation:return this.visitAlternation(r);case lo.Terminal:return this.visitTerminal(r);case lo.Rule:return this.visitRule(r);default:throw Error("non exhaustive match")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}();II.GAstVisitor=IIe});var Jh=E(Si=>{"use strict";var yIe=Si&&Si.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Si,"__esModule",{value:!0});Si.collectMethods=Si.DslMethodsCollectorVisitor=Si.getProductionDslName=Si.isBranchingProd=Si.isOptionalProd=Si.isSequenceProd=void 0;var qh=Dt(),dr=hn(),wIe=wu();function BIe(t){return t instanceof dr.Alternative||t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionMandatory||t instanceof dr.RepetitionMandatoryWithSeparator||t instanceof dr.RepetitionWithSeparator||t instanceof dr.Terminal||t instanceof dr.Rule}Si.isSequenceProd=BIe;function $v(t,e){e===void 0&&(e=[]);var r=t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionWithSeparator;return r?!0:t instanceof dr.Alternation?(0,qh.some)(t.definition,function(i){return $v(i,e)}):t instanceof dr.NonTerminal&&(0,qh.contains)(e,t)?!1:t instanceof dr.AbstractProduction?(t instanceof dr.NonTerminal&&e.push(t),(0,qh.every)(t.definition,function(i){return $v(i,e)})):!1}Si.isOptionalProd=$v;function QIe(t){return t instanceof dr.Alternation}Si.isBranchingProd=QIe;function bIe(t){if(t instanceof dr.NonTerminal)return"SUBRULE";if(t instanceof dr.Option)return"OPTION";if(t instanceof dr.Alternation)return"OR";if(t instanceof dr.RepetitionMandatory)return"AT_LEAST_ONE";if(t instanceof dr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(t instanceof dr.RepetitionWithSeparator)return"MANY_SEP";if(t instanceof dr.Repetition)return"MANY";if(t instanceof dr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Si.getProductionDslName=bIe;var UG=function(t){yIe(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.separator="-",r.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},r}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(r){var i=r.terminalType.name+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitNonTerminal=function(r){var i=r.nonTerminalName+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitOption=function(r){this.dslMethods.option.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.dslMethods.repetitionWithSeparator.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.dslMethods.repetitionMandatory.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.dslMethods.repetitionMandatoryWithSeparator.push(r)},e.prototype.visitRepetition=function(r){this.dslMethods.repetition.push(r)},e.prototype.visitAlternation=function(r){this.dslMethods.alternation.push(r)},e}(wIe.GAstVisitor);Si.DslMethodsCollectorVisitor=UG;var yI=new UG;function vIe(t){yI.reset(),t.accept(yI);var e=yI.dslMethods;return yI.reset(),e}Si.collectMethods=vIe});var tS=E(co=>{"use strict";Object.defineProperty(co,"__esModule",{value:!0});co.firstForTerminal=co.firstForBranching=co.firstForSequence=co.first=void 0;var wI=Dt(),HG=hn(),eS=Jh();function BI(t){if(t instanceof HG.NonTerminal)return BI(t.referencedRule);if(t instanceof HG.Terminal)return YG(t);if((0,eS.isSequenceProd)(t))return GG(t);if((0,eS.isBranchingProd)(t))return jG(t);throw Error("non exhaustive match")}co.first=BI;function GG(t){for(var e=[],r=t.definition,i=0,n=r.length>i,s,o=!0;n&&o;)s=r[i],o=(0,eS.isOptionalProd)(s),e=e.concat(BI(s)),i=i+1,n=r.length>i;return(0,wI.uniq)(e)}co.firstForSequence=GG;function jG(t){var e=(0,wI.map)(t.definition,function(r){return BI(r)});return(0,wI.uniq)((0,wI.flatten)(e))}co.firstForBranching=jG;function YG(t){return[t.terminalType]}co.firstForTerminal=YG});var rS=E(QI=>{"use strict";Object.defineProperty(QI,"__esModule",{value:!0});QI.IN=void 0;QI.IN="_~IN~_"});var VG=E(es=>{"use strict";var SIe=es&&es.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(es,"__esModule",{value:!0});es.buildInProdFollowPrefix=es.buildBetweenProdsFollowPrefix=es.computeAllProdsFollows=es.ResyncFollowsWalker=void 0;var xIe=EI(),kIe=tS(),qG=Dt(),JG=rS(),PIe=hn(),zG=function(t){SIe(e,t);function e(r){var i=t.call(this)||this;return i.topProd=r,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(r,i,n){},e.prototype.walkProdRef=function(r,i,n){var s=WG(r.referencedRule,r.idx)+this.topProd.name,o=i.concat(n),a=new PIe.Alternative({definition:o}),l=(0,kIe.first)(a);this.follows[s]=l},e}(xIe.RestWalker);es.ResyncFollowsWalker=zG;function DIe(t){var e={};return(0,qG.forEach)(t,function(r){var i=new zG(r).startWalking();(0,qG.assign)(e,i)}),e}es.computeAllProdsFollows=DIe;function WG(t,e){return t.name+e+JG.IN}es.buildBetweenProdsFollowPrefix=WG;function RIe(t){var e=t.terminalType.name;return e+t.idx+JG.IN}es.buildInProdFollowPrefix=RIe});var Wh=E(aa=>{"use strict";Object.defineProperty(aa,"__esModule",{value:!0});aa.defaultGrammarValidatorErrorProvider=aa.defaultGrammarResolverErrorProvider=aa.defaultParserErrorProvider=void 0;var Bu=nA(),FIe=Dt(),Rs=Dt(),iS=hn(),_G=Jh();aa.defaultParserErrorProvider={buildMismatchTokenMessage:function(t){var e=t.expected,r=t.actual,i=t.previous,n=t.ruleName,s=(0,Bu.hasTokenLabel)(e),o=s?"--> "+(0,Bu.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+r.image+"' <--";return a},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant,r=t.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,r=t.actual,i=t.previous,n=t.customUserDescription,s=t.ruleName,o="Expecting: ",a=(0,Rs.first)(r).image,l=` -but found: '`+a+"'";if(n)return o+n+l;var c=(0,Rs.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,Rs.map)(c,function(h){return"["+(0,Rs.map)(h,function(p){return(0,Bu.tokenLabel)(p)}).join(", ")+"]"}),g=(0,Rs.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: -`+g.join(` -`);return o+f+l},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,r=t.actual,i=t.customUserDescription,n=t.ruleName,s="Expecting: ",o=(0,Rs.first)(r).image,a=` -but found: '`+o+"'";if(i)return s+i+a;var l=(0,Rs.map)(e,function(u){return"["+(0,Rs.map)(u,function(g){return(0,Bu.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(aa.defaultParserErrorProvider);aa.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(t,e){var r="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-";return r}};aa.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(t,e){function r(u){return u instanceof iS.Terminal?u.terminalType.name:u instanceof iS.NonTerminal?u.nonTerminalName:""}var i=t.name,n=(0,Rs.first)(e),s=n.idx,o=(0,_G.getProductionDslName)(n),a=r(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` - appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` -`),c},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar. -`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+t.name+`>. -`)+`To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous alternatives: <"+t.ambiguityIndices.join(" ,")+`> due to common lookahead prefix -`+("in inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`;return i},buildAlternationAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous Alternatives Detected: <"+t.ambiguityIndices.join(" ,")+"> in "+(" inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,i},buildEmptyRepetitionError:function(t){var e=(0,_G.getProductionDslName)(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var r="The repetition <"+e+"> within Rule <"+t.topLevelRule.name+`> can never consume any tokens. -This could lead to an infinite loop.`;return r},buildTokenNameError:function(t){return"deprecated"},buildEmptyAlternationError:function(t){var e="Ambiguous empty alternative: <"+(t.emptyChoiceIdx+1)+">"+(" in inside <"+t.topLevelRule.name+`> Rule. -`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives: -`+(" inside <"+t.topLevelRule.name+`> Rule. - has `+(t.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,r=FIe.map(t.leftRecursionPath,function(s){return s.name}),i=e+" --> "+r.concat([e]).join(" --> "),n=`Left Recursion found in grammar. -`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) -`)+(`without consuming any Tokens. The grammar path that causes this is: - `+i+` -`)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(t){return"deprecated"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof iS.Rule?e=t.topLevelRule.name:e=t.topLevelRule;var r="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+t.grammarName+"<-";return r}}});var $G=E(sA=>{"use strict";var NIe=sA&&sA.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(sA,"__esModule",{value:!0});sA.GastRefResolverVisitor=sA.resolveGrammar=void 0;var LIe=Tn(),XG=Dt(),TIe=wu();function MIe(t,e){var r=new ZG(t,e);return r.resolveRefs(),r.errors}sA.resolveGrammar=MIe;var ZG=function(t){NIe(e,t);function e(r,i){var n=t.call(this)||this;return n.nameToTopRule=r,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var r=this;(0,XG.forEach)((0,XG.values)(this.nameToTopRule),function(i){r.currTopLevel=i,i.accept(r)})},e.prototype.visitNonTerminal=function(r){var i=this.nameToTopRule[r.nonTerminalName];if(i)r.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,r);this.errors.push({message:n,type:LIe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:r.nonTerminalName})}},e}(TIe.GAstVisitor);sA.GastRefResolverVisitor=ZG});var Vh=E(Br=>{"use strict";var Fl=Br&&Br.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Br,"__esModule",{value:!0});Br.nextPossibleTokensAfter=Br.possiblePathsFrom=Br.NextTerminalAfterAtLeastOneSepWalker=Br.NextTerminalAfterAtLeastOneWalker=Br.NextTerminalAfterManySepWalker=Br.NextTerminalAfterManyWalker=Br.AbstractNextTerminalAfterProductionWalker=Br.NextAfterTokenWalker=Br.AbstractNextPossibleTokensWalker=void 0;var ej=EI(),xt=Dt(),OIe=tS(),It=hn(),tj=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topProd=r,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,xt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,xt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(r,i){i===void 0&&(i=[]),this.found||t.prototype.walk.call(this,r,i)},e.prototype.walkProdRef=function(r,i,n){if(r.referencedRule.name===this.nextProductionName&&r.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(r.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,xt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(ej.RestWalker);Br.AbstractNextPossibleTokensWalker=tj;var KIe=function(t){Fl(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(r,i,n){if(this.isAtEndOfPath&&r.terminalType.name===this.nextTerminalName&&r.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new It.Alternative({definition:s});this.possibleTokTypes=(0,OIe.first)(o),this.found=!0}},e}(tj);Br.NextAfterTokenWalker=KIe;var zh=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topRule=r,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(ej.RestWalker);Br.AbstractNextTerminalAfterProductionWalker=zh;var UIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkMany.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManyWalker=UIe;var HIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkManySep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManySepWalker=HIe;var GIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOne.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneWalker=GIe;var jIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOneSep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneSepWalker=jIe;function rj(t,e,r){r===void 0&&(r=[]),r=(0,xt.cloneArr)(r);var i=[],n=0;function s(c){return c.concat((0,xt.drop)(t,n+1))}function o(c){var u=rj(s(c),e,r);return i.concat(u)}for(;r.length=0;W--){var X=I.definition[W],F={idx:p,def:X.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m};g.push(F),g.push(o)}else if(I instanceof It.Alternative)g.push({idx:p,def:I.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m});else if(I instanceof It.Rule)g.push(YIe(I,p,d,m));else throw Error("non exhaustive match")}}return u}Br.nextPossibleTokensAfter=qIe;function YIe(t,e,r,i){var n=(0,xt.cloneArr)(r);n.push(t.name);var s=(0,xt.cloneArr)(i);return s.push(1),{idx:e,def:t.definition,ruleStack:n,occurrenceStack:s}}});var _h=E(Gt=>{"use strict";var ij=Gt&&Gt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Gt,"__esModule",{value:!0});Gt.areTokenCategoriesNotUsed=Gt.isStrictPrefixOfPath=Gt.containsPath=Gt.getLookaheadPathsForOptionalProd=Gt.getLookaheadPathsForOr=Gt.lookAheadSequenceFromAlternatives=Gt.buildSingleAlternativeLookaheadFunction=Gt.buildAlternativesLookAheadFunc=Gt.buildLookaheadFuncForOptionalProd=Gt.buildLookaheadFuncForOr=Gt.getProdType=Gt.PROD_TYPE=void 0;var _t=Dt(),nj=Vh(),JIe=EI(),bI=yu(),oA=hn(),WIe=wu(),zr;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(zr=Gt.PROD_TYPE||(Gt.PROD_TYPE={}));function zIe(t){if(t instanceof oA.Option)return zr.OPTION;if(t instanceof oA.Repetition)return zr.REPETITION;if(t instanceof oA.RepetitionMandatory)return zr.REPETITION_MANDATORY;if(t instanceof oA.RepetitionMandatoryWithSeparator)return zr.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof oA.RepetitionWithSeparator)return zr.REPETITION_WITH_SEPARATOR;if(t instanceof oA.Alternation)return zr.ALTERNATION;throw Error("non exhaustive match")}Gt.getProdType=zIe;function VIe(t,e,r,i,n,s){var o=sj(t,e,r),a=nS(o)?bI.tokenStructuredMatcherNoCategories:bI.tokenStructuredMatcher;return s(o,i,a,n)}Gt.buildLookaheadFuncForOr=VIe;function _Ie(t,e,r,i,n,s){var o=oj(t,e,n,r),a=nS(o)?bI.tokenStructuredMatcherNoCategories:bI.tokenStructuredMatcher;return s(o[0],a,i)}Gt.buildLookaheadFuncForOptionalProd=_Ie;function XIe(t,e,r,i){var n=t.length,s=(0,_t.every)(t,function(l){return(0,_t.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,_t.map)(l,function(b){return b.GATE}),u=0;u{"use strict";var aS=Mt&&Mt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Mt,"__esModule",{value:!0});Mt.checkPrefixAlternativesAmbiguities=Mt.validateSomeNonEmptyLookaheadPath=Mt.validateTooManyAlts=Mt.RepetionCollector=Mt.validateAmbiguousAlternationAlternatives=Mt.validateEmptyOrAlternative=Mt.getFirstNoneTerminal=Mt.validateNoLeftRecursion=Mt.validateRuleIsOverridden=Mt.validateRuleDoesNotAlreadyExist=Mt.OccurrenceValidationCollector=Mt.identifyProductionForDuplicates=Mt.validateGrammar=void 0;var jt=Dt(),Cr=Dt(),uo=Tn(),AS=Jh(),Qu=_h(),rye=Vh(),Fs=hn(),lS=wu();function sye(t,e,r,i,n){var s=jt.map(t,function(h){return iye(h,i)}),o=jt.map(t,function(h){return cS(h,h,i)}),a=[],l=[],c=[];(0,Cr.every)(o,Cr.isEmpty)&&(a=(0,Cr.map)(t,function(h){return uj(h,i)}),l=(0,Cr.map)(t,function(h){return gj(h,e,i)}),c=hj(t,e,i));var u=nye(t,r,i),g=(0,Cr.map)(t,function(h){return fj(h,i)}),f=(0,Cr.map)(t,function(h){return cj(h,t,n,i)});return jt.flatten(s.concat(c,o,a,l,u,g,f))}Mt.validateGrammar=sye;function iye(t,e){var r=new Cj;t.accept(r);var i=r.allProductions,n=jt.groupBy(i,pj),s=jt.pick(n,function(a){return a.length>1}),o=jt.map(jt.values(s),function(a){var l=jt.first(a),c=e.buildDuplicateFoundError(t,a),u=(0,AS.getProductionDslName)(l),g={message:c,type:uo.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:u,occurrence:l.idx},f=dj(l);return f&&(g.parameter=f),g});return o}function pj(t){return(0,AS.getProductionDslName)(t)+"_#_"+t.idx+"_#_"+dj(t)}Mt.identifyProductionForDuplicates=pj;function dj(t){return t instanceof Fs.Terminal?t.terminalType.name:t instanceof Fs.NonTerminal?t.nonTerminalName:""}var Cj=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitNonTerminal=function(r){this.allProductions.push(r)},e.prototype.visitOption=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e.prototype.visitAlternation=function(r){this.allProductions.push(r)},e.prototype.visitTerminal=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.OccurrenceValidationCollector=Cj;function cj(t,e,r,i){var n=[],s=(0,Cr.reduce)(e,function(a,l){return l.name===t.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});n.push({message:o,type:uo.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:t.name})}return n}Mt.validateRuleDoesNotAlreadyExist=cj;function oye(t,e,r){var i=[],n;return jt.contains(e,t)||(n="Invalid rule override, rule: ->"+t+"<- cannot be overridden in the grammar: ->"+r+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:uo.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:t})),i}Mt.validateRuleIsOverridden=oye;function cS(t,e,r,i){i===void 0&&(i=[]);var n=[],s=Xh(e.definition);if(jt.isEmpty(s))return[];var o=t.name,a=jt.contains(s,t);a&&n.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:i}),type:uo.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=jt.difference(s,i.concat([t])),c=jt.map(l,function(u){var g=jt.cloneArr(i);return g.push(u),cS(t,u,r,g)});return n.concat(jt.flatten(c))}Mt.validateNoLeftRecursion=cS;function Xh(t){var e=[];if(jt.isEmpty(t))return e;var r=jt.first(t);if(r instanceof Fs.NonTerminal)e.push(r.referencedRule);else if(r instanceof Fs.Alternative||r instanceof Fs.Option||r instanceof Fs.RepetitionMandatory||r instanceof Fs.RepetitionMandatoryWithSeparator||r instanceof Fs.RepetitionWithSeparator||r instanceof Fs.Repetition)e=e.concat(Xh(r.definition));else if(r instanceof Fs.Alternation)e=jt.flatten(jt.map(r.definition,function(o){return Xh(o.definition)}));else if(!(r instanceof Fs.Terminal))throw Error("non exhaustive match");var i=(0,AS.isOptionalProd)(r),n=t.length>1;if(i&&n){var s=jt.drop(t);return e.concat(Xh(s))}else return e}Mt.getFirstNoneTerminal=Xh;var uS=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.alternations=[],r}return e.prototype.visitAlternation=function(r){this.alternations.push(r)},e}(lS.GAstVisitor);function uj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){var a=jt.dropRight(o.definition),l=jt.map(a,function(c,u){var g=(0,rye.nextPossibleTokensAfter)([c],[],null,1);return jt.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:o,emptyChoiceIdx:u}),type:uo.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(jt.compact(l))},[]);return n}Mt.validateEmptyOrAlternative=uj;function gj(t,e,r){var i=new uS;t.accept(i);var n=i.alternations;n=(0,Cr.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=jt.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,Qu.getLookaheadPathsForOr)(l,t,c,a),g=aye(u,a,t,r),f=mj(u,a,t,r);return o.concat(g,f)},[]);return s}Mt.validateAmbiguousAlternationAlternatives=gj;var Ej=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.RepetionCollector=Ej;function fj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:o}),type:uo.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:t.name,occurrence:o.idx}),s},[]);return n}Mt.validateTooManyAlts=fj;function hj(t,e,r){var i=[];return(0,Cr.forEach)(t,function(n){var s=new Ej;n.accept(s);var o=s.allProductions;(0,Cr.forEach)(o,function(a){var l=(0,Qu.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,Qu.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,Cr.isEmpty)((0,Cr.flatten)(f))){var h=r.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:uo.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}Mt.validateSomeNonEmptyLookaheadPath=hj;function aye(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,Cr.forEach)(l,function(u){var g=[c];(0,Cr.forEach)(t,function(f,h){c!==h&&(0,Qu.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,Qu.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=jt.map(s,function(a){var l=(0,Cr.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:uo.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function mj(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(o,a,l){var c=(0,Cr.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,Cr.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,Cr.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(bu,"__esModule",{value:!0});bu.validateGrammar=bu.resolveGrammar=void 0;var fS=Dt(),Aye=$G(),lye=gS(),Ij=Wh();function cye(t){t=(0,fS.defaults)(t,{errMsgProvider:Ij.defaultGrammarResolverErrorProvider});var e={};return(0,fS.forEach)(t.rules,function(r){e[r.name]=r}),(0,Aye.resolveGrammar)(e,t.errMsgProvider)}bu.resolveGrammar=cye;function uye(t){return t=(0,fS.defaults)(t,{errMsgProvider:Ij.defaultGrammarValidatorErrorProvider}),(0,lye.validateGrammar)(t.rules,t.maxLookahead,t.tokenTypes,t.errMsgProvider,t.grammarName)}bu.validateGrammar=uye});var vu=E(dn=>{"use strict";var Zh=dn&&dn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.EarlyExitException=dn.NotAllInputParsedException=dn.NoViableAltException=dn.MismatchedTokenException=dn.isRecognitionException=void 0;var gye=Dt(),wj="MismatchedTokenException",Bj="NoViableAltException",Qj="EarlyExitException",bj="NotAllInputParsedException",vj=[wj,Bj,Qj,bj];Object.freeze(vj);function fye(t){return(0,gye.contains)(vj,t.name)}dn.isRecognitionException=fye;var vI=function(t){Zh(e,t);function e(r,i){var n=this.constructor,s=t.call(this,r)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),hye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=wj,s}return e}(vI);dn.MismatchedTokenException=hye;var pye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Bj,s}return e}(vI);dn.NoViableAltException=pye;var dye=function(t){Zh(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.name=bj,n}return e}(vI);dn.NotAllInputParsedException=dye;var Cye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Qj,s}return e}(vI);dn.EarlyExitException=Cye});var pS=E(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.attemptInRepetitionRecovery=xi.Recoverable=xi.InRuleRecoveryException=xi.IN_RULE_RECOVERY_EXCEPTION=xi.EOF_FOLLOW_KEY=void 0;var SI=nA(),ts=Dt(),mye=vu(),Eye=rS(),Iye=Tn();xi.EOF_FOLLOW_KEY={};xi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function hS(t){this.name=xi.IN_RULE_RECOVERY_EXCEPTION,this.message=t}xi.InRuleRecoveryException=hS;hS.prototype=Error.prototype;var yye=function(){function t(){}return t.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,ts.has)(e,"recoveryEnabled")?e.recoveryEnabled:Iye.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Sj)},t.prototype.getTokenToInsert=function(e){var r=(0,SI.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r},t.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},t.prototype.tryInRepetitionRecovery=function(e,r,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),d=new mye.MismatchedTokenException(p,u,s.LA(0));d.resyncedTokens=(0,ts.dropRight)(l),s.SAVE_ERROR(d)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,r);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},t.prototype.shouldInRepetitionRecoveryBeTried=function(e,r,i){return!(i===!1||e===void 0||r===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))},t.prototype.getFollowsForInRuleRecovery=function(e,r){var i=this.getCurrentGrammarPath(e,r),n=this.getNextPossibleTokenTypes(i);return n},t.prototype.tryInRuleRecovery=function(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new hS("sad sad panda")},t.prototype.canPerformInRuleRecovery=function(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)},t.prototype.canRecoverWithSingleTokenInsertion=function(e,r){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,ts.isEmpty)(r))return!1;var n=this.LA(1),s=(0,ts.find)(r,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},t.prototype.canRecoverWithSingleTokenDeletion=function(e){var r=this.tokenMatcher(this.LA(2),e);return r},t.prototype.isInCurrentRuleReSyncSet=function(e){var r=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(r);return(0,ts.contains)(i,e)},t.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),r=this.LA(1),i=2;;){var n=r.tokenType;if((0,ts.contains)(e,n))return n;r=this.LA(i),i++}},t.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return xi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(i)}},t.prototype.buildFullFollowKeyStack=function(){var e=this,r=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,ts.map)(r,function(n,s){return s===0?xi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(r[s-1])}})},t.prototype.flattenFollowSet=function(){var e=this,r=(0,ts.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,ts.flatten)(r)},t.prototype.getFollowSetFromFollowKey=function(e){if(e===xi.EOF_FOLLOW_KEY)return[SI.EOF];var r=e.ruleName+e.idxInCallingRule+Eye.IN+e.inRule;return this.resyncFollows[r]},t.prototype.addToResyncTokens=function(e,r){return this.tokenMatcher(e,SI.EOF)||r.push(e),r},t.prototype.reSyncTo=function(e){for(var r=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,r);return(0,ts.dropRight)(r)},t.prototype.attemptInRepetitionRecovery=function(e,r,i,n,s,o,a){},t.prototype.getCurrentGrammarPath=function(e,r){var i=this.getHumanReadableRuleStack(),n=(0,ts.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:r};return s},t.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,ts.map)(this.RULE_STACK,function(r){return e.shortRuleNameToFullName(r)})},t}();xi.Recoverable=yye;function Sj(t,e,r,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=SI.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(t,e,r,f)}xi.attemptInRepetitionRecovery=Sj});var xI=E(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.getKeyForAutomaticLookahead=Nt.AT_LEAST_ONE_SEP_IDX=Nt.MANY_SEP_IDX=Nt.AT_LEAST_ONE_IDX=Nt.MANY_IDX=Nt.OPTION_IDX=Nt.OR_IDX=Nt.BITS_FOR_ALT_IDX=Nt.BITS_FOR_RULE_IDX=Nt.BITS_FOR_OCCURRENCE_IDX=Nt.BITS_FOR_METHOD_TYPE=void 0;Nt.BITS_FOR_METHOD_TYPE=4;Nt.BITS_FOR_OCCURRENCE_IDX=8;Nt.BITS_FOR_RULE_IDX=12;Nt.BITS_FOR_ALT_IDX=8;Nt.OR_IDX=1<{"use strict";Object.defineProperty(kI,"__esModule",{value:!0});kI.LooksAhead=void 0;var Aa=_h(),Ns=Dt(),xj=Tn(),la=xI(),Nl=Jh(),Bye=function(){function t(){}return t.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,Ns.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:xj.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,Ns.has)(e,"maxLookahead")?e.maxLookahead:xj.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,Ns.isES2015MapSupported)()?new Map:[],(0,Ns.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},t.prototype.preComputeLookaheadFunctions=function(e){var r=this;(0,Ns.forEach)(e,function(i){r.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Nl.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,Ns.forEach)(s,function(g){var f=g.idx===0?"":g.idx;r.TRACE_INIT(""+(0,Nl.getProductionDslName)(g)+f,function(){var h=(0,Aa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||r.maxLookahead,g.hasPredicates,r.dynamicTokensEnabled,r.lookAheadBuilderForAlternatives),p=(0,la.getKeyForAutomaticLookahead)(r.fullRuleNameToShort[i.name],la.OR_IDX,g.idx);r.setLaFuncCache(p,h)})}),(0,Ns.forEach)(o,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_IDX,Aa.PROD_TYPE.REPETITION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(a,function(g){r.computeLookaheadFunc(i,g.idx,la.OPTION_IDX,Aa.PROD_TYPE.OPTION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(l,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(c,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_SEP_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(u,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_SEP_IDX,Aa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))})})})},t.prototype.computeLookaheadFunc=function(e,r,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(r===0?"":r),function(){var l=(0,Aa.buildLookaheadFuncForOptionalProd)(r,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,la.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,r);a.setLaFuncCache(c,l)})},t.prototype.lookAheadBuilderForOptional=function(e,r,i){return(0,Aa.buildSingleAlternativeLookaheadFunction)(e,r,i)},t.prototype.lookAheadBuilderForAlternatives=function(e,r,i,n){return(0,Aa.buildAlternativesLookAheadFunc)(e,r,i,n)},t.prototype.getKeyForAutomaticLookahead=function(e,r){var i=this.getLastExplicitRuleShortName();return(0,la.getKeyForAutomaticLookahead)(i,e,r)},t.prototype.getLaFuncFromCache=function(e){},t.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},t.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},t.prototype.setLaFuncCache=function(e,r){},t.prototype.setLaFuncCacheUsingMap=function(e,r){this.lookAheadFuncsCache.set(e,r)},t.prototype.setLaFuncUsingObj=function(e,r){this.lookAheadFuncsCache[e]=r},t}();kI.LooksAhead=Bye});var Pj=E(go=>{"use strict";Object.defineProperty(go,"__esModule",{value:!0});go.addNoneTerminalToCst=go.addTerminalToCst=go.setNodeLocationFull=go.setNodeLocationOnlyOffset=void 0;function Qye(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";Object.defineProperty(aA,"__esModule",{value:!0});aA.defineNameProp=aA.functionName=aA.classNameFromInstance=void 0;var xye=Dt();function kye(t){return Dj(t.constructor)}aA.classNameFromInstance=kye;var Rj="name";function Dj(t){var e=t.name;return e||"anonymous"}aA.functionName=Dj;function Pye(t,e){var r=Object.getOwnPropertyDescriptor(t,Rj);return(0,xye.isUndefined)(r)||r.configurable?(Object.defineProperty(t,Rj,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}aA.defineNameProp=Pye});var Mj=E(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.validateRedundantMethods=mi.validateMissingCstMethods=mi.validateVisitor=mi.CstVisitorDefinitionError=mi.createBaseVisitorConstructorWithDefaults=mi.createBaseSemanticVisitorConstructor=mi.defaultVisit=void 0;var rs=Dt(),$h=dS();function Fj(t,e){for(var r=(0,rs.keys)(t),i=r.length,n=0;n: - `+(""+s.join(` - -`).replace(/\n/g,` - `)))}}};return r.prototype=i,r.prototype.constructor=r,r._RULE_NAMES=e,r}mi.createBaseSemanticVisitorConstructor=Dye;function Rye(t,e,r){var i=function(){};(0,$h.defineNameProp)(i,t+"BaseSemanticsWithDefaults");var n=Object.create(r.prototype);return(0,rs.forEach)(e,function(s){n[s]=Fj}),i.prototype=n,i.prototype.constructor=i,i}mi.createBaseVisitorConstructorWithDefaults=Rye;var CS;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(CS=mi.CstVisitorDefinitionError||(mi.CstVisitorDefinitionError={}));function Nj(t,e){var r=Lj(t,e),i=Tj(t,e);return r.concat(i)}mi.validateVisitor=Nj;function Lj(t,e){var r=(0,rs.map)(e,function(i){if(!(0,rs.isFunction)(t[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+" CST Visitor.",type:CS.MISSING_METHOD,methodName:i}});return(0,rs.compact)(r)}mi.validateMissingCstMethods=Lj;var Fye=["constructor","visit","validateVisitor"];function Tj(t,e){var r=[];for(var i in t)(0,rs.isFunction)(t[i])&&!(0,rs.contains)(Fye,i)&&!(0,rs.contains)(e,i)&&r.push({msg:"Redundant visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+` CST Visitor -There is no Grammar Rule corresponding to this method's name. -`,type:CS.REDUNDANT_METHOD,methodName:i});return r}mi.validateRedundantMethods=Tj});var Kj=E(PI=>{"use strict";Object.defineProperty(PI,"__esModule",{value:!0});PI.TreeBuilder=void 0;var Su=Pj(),Ur=Dt(),Oj=Mj(),Nye=Tn(),Lye=function(){function t(){}return t.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,Ur.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:Nye.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Ur.NOOP,this.cstFinallyStateUpdate=Ur.NOOP,this.cstPostTerminal=Ur.NOOP,this.cstPostNonTerminal=Ur.NOOP,this.cstPostRule=Ur.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationFull,this.setNodeLocationFromNode=Su.setNodeLocationFull,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=Su.setNodeLocationOnlyOffset,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=Ur.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.setInitialNodeLocationFullRegular=function(e){var r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.cstInvocationStateUpdate=function(e,r){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?(i.endOffset=r.endOffset,i.endLine=r.endLine,i.endColumn=r.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?i.endOffset=r.endOffset:i.startOffset=NaN},t.prototype.cstPostTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addTerminalToCst)(i,r,e),this.setNodeLocationFromToken(i.location,r)},t.prototype.cstPostNonTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addNoneTerminalToCst)(i,r,e),this.setNodeLocationFromNode(i.location,e.location)},t.prototype.getBaseCstVisitorConstructor=function(){if((0,Ur.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,Oj.createBaseSemanticVisitorConstructor)(this.className,(0,Ur.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},t.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,Ur.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,Oj.createBaseVisitorConstructorWithDefaults)(this.className,(0,Ur.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}();PI.TreeBuilder=Lye});var Hj=E(DI=>{"use strict";Object.defineProperty(DI,"__esModule",{value:!0});DI.LexerAdapter=void 0;var Uj=Tn(),Tye=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Uj.END_OF_FILE},t.prototype.LA=function(e){var r=this.currIdx+e;return r<0||this.tokVectorLength<=r?Uj.END_OF_FILE:this.tokVector[r]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}();DI.LexerAdapter=Tye});var jj=E(RI=>{"use strict";Object.defineProperty(RI,"__esModule",{value:!0});RI.RecognizerApi=void 0;var Gj=Dt(),Mye=vu(),mS=Tn(),Oye=Wh(),Kye=gS(),Uye=hn(),Hye=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,r,i){return this.consumeInternal(r,e,i)},t.prototype.subrule=function(e,r,i){return this.subruleInternal(r,e,i)},t.prototype.option=function(e,r){return this.optionInternal(r,e)},t.prototype.or=function(e,r){return this.orInternal(r,e)},t.prototype.many=function(e,r){return this.manyInternal(e,r)},t.prototype.atLeastOne=function(e,r){return this.atLeastOneInternal(e,r)},t.prototype.CONSUME=function(e,r){return this.consumeInternal(e,0,r)},t.prototype.CONSUME1=function(e,r){return this.consumeInternal(e,1,r)},t.prototype.CONSUME2=function(e,r){return this.consumeInternal(e,2,r)},t.prototype.CONSUME3=function(e,r){return this.consumeInternal(e,3,r)},t.prototype.CONSUME4=function(e,r){return this.consumeInternal(e,4,r)},t.prototype.CONSUME5=function(e,r){return this.consumeInternal(e,5,r)},t.prototype.CONSUME6=function(e,r){return this.consumeInternal(e,6,r)},t.prototype.CONSUME7=function(e,r){return this.consumeInternal(e,7,r)},t.prototype.CONSUME8=function(e,r){return this.consumeInternal(e,8,r)},t.prototype.CONSUME9=function(e,r){return this.consumeInternal(e,9,r)},t.prototype.SUBRULE=function(e,r){return this.subruleInternal(e,0,r)},t.prototype.SUBRULE1=function(e,r){return this.subruleInternal(e,1,r)},t.prototype.SUBRULE2=function(e,r){return this.subruleInternal(e,2,r)},t.prototype.SUBRULE3=function(e,r){return this.subruleInternal(e,3,r)},t.prototype.SUBRULE4=function(e,r){return this.subruleInternal(e,4,r)},t.prototype.SUBRULE5=function(e,r){return this.subruleInternal(e,5,r)},t.prototype.SUBRULE6=function(e,r){return this.subruleInternal(e,6,r)},t.prototype.SUBRULE7=function(e,r){return this.subruleInternal(e,7,r)},t.prototype.SUBRULE8=function(e,r){return this.subruleInternal(e,8,r)},t.prototype.SUBRULE9=function(e,r){return this.subruleInternal(e,9,r)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,r,i){if(i===void 0&&(i=mS.DEFAULT_RULE_CONFIG),(0,Gj.contains)(this.definedRulesNames,e)){var n=Oye.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:mS.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,r,i);return this[e]=o,o},t.prototype.OVERRIDE_RULE=function(e,r,i){i===void 0&&(i=mS.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,Kye.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,r,i);return this[e]=s,s},t.prototype.BACKTRACK=function(e,r){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,r),!0}catch(n){if((0,Mye.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return(0,Uye.serializeGrammar)((0,Gj.values)(this.gastProductionsCache))},t}();RI.RecognizerApi=Hye});var Wj=E(FI=>{"use strict";Object.defineProperty(FI,"__esModule",{value:!0});FI.RecognizerEngine=void 0;var Er=Dt(),Mn=xI(),NI=vu(),Yj=_h(),xu=Vh(),qj=Tn(),Gye=pS(),Jj=nA(),ep=yu(),jye=dS(),Yye=function(){function t(){}return t.prototype.initRecognizerEngine=function(e,r){if(this.className=(0,jye.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=ep.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Er.has)(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if((0,Er.isArray)(e)){if((0,Er.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if((0,Er.isArray)(e))this.tokensMap=(0,Er.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Er.has)(e,"modes")&&(0,Er.every)((0,Er.flatten)((0,Er.values)(e.modes)),ep.isTokenType)){var i=(0,Er.flatten)((0,Er.values)(e.modes)),n=(0,Er.uniq)(i);this.tokensMap=(0,Er.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Er.isObject)(e))this.tokensMap=(0,Er.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=Jj.EOF;var s=(0,Er.every)((0,Er.values)(e),function(o){return(0,Er.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?ep.tokenStructuredMatcherNoCategories:ep.tokenStructuredMatcher,(0,ep.augmentTokenTypes)((0,Er.values)(this.tokensMap))},t.prototype.defineRule=function(e,r,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Er.has)(i,"resyncEnabled")?i.resyncEnabled:qj.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Er.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:qj.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<r},t.prototype.orInternal=function(e,r){var i=this.getKeyForAutomaticLookahead(Mn.OR_IDX,r),n=(0,Er.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(r,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new NI.NotAllInputParsedException(r,e))}},t.prototype.subruleInternal=function(e,r,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,r,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},t.prototype.subruleInternalError=function(e,r,i){throw(0,NI.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:i),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,r,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,r,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},t.prototype.consumeInternalError=function(e,r,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new NI.MismatchedTokenException(n,r,s))},t.prototype.consumeInternalRecovery=function(e,r,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===Gye.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},t.prototype.saveRecogState=function(){var e=this.errors,r=(0,Er.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,r,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),Jj.EOF)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}();FI.RecognizerEngine=Yye});var Vj=E(LI=>{"use strict";Object.defineProperty(LI,"__esModule",{value:!0});LI.ErrorHandler=void 0;var ES=vu(),IS=Dt(),zj=_h(),qye=Tn(),Jye=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,IS.has)(e,"errorMessageProvider")?e.errorMessageProvider:qye.DEFAULT_PARSER_CONFIG.errorMessageProvider},t.prototype.SAVE_ERROR=function(e){if((0,ES.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,IS.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(t.prototype,"errors",{get:function(){return(0,IS.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,r,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,zj.getLookaheadPathsForOptionalProd)(e,s,r,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new ES.EarlyExitException(u,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,r){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,zj.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new ES.NoViableAltException(c,this.LA(1),l))},t}();LI.ErrorHandler=Jye});var Zj=E(TI=>{"use strict";Object.defineProperty(TI,"__esModule",{value:!0});TI.ContentAssist=void 0;var _j=Vh(),Xj=Dt(),Wye=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,r){var i=this.gastProductionsCache[e];if((0,Xj.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,_j.nextPossibleTokensAfter)([i],r,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var r=(0,Xj.first)(e.ruleStack),i=this.getGAstProductions(),n=i[r],s=new _j.NextAfterTokenWalker(n,e).startWalking();return s},t}();TI.ContentAssist=Wye});var oY=E(MI=>{"use strict";Object.defineProperty(MI,"__esModule",{value:!0});MI.GastRecorder=void 0;var Cn=Dt(),fo=hn(),zye=Gh(),$j=yu(),eY=nA(),Vye=Tn(),_ye=xI(),OI={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(OI);var tY=!0,rY=Math.pow(2,_ye.BITS_FOR_OCCURRENCE_IDX)-1,iY=(0,eY.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:zye.Lexer.NA});(0,$j.augmentTokenTypes)([iY]);var nY=(0,eY.createTokenInstance)(iY,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(nY);var Xye={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},$ye=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var r=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)r(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var r=0;r<10;r++){var i=r>0?r:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,r){return function(){return!0}},t.prototype.LA_RECORD=function(e){return Vye.END_OF_FILE},t.prototype.topLevelRuleRecord=function(e,r){try{var i=new fo.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),r.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch(s){throw n}throw n}},t.prototype.optionInternalRecord=function(e,r){return tp.call(this,fo.Option,e,r)},t.prototype.atLeastOneInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatory,r,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatoryWithSeparator,r,e,tY)},t.prototype.manyInternalRecord=function(e,r){tp.call(this,fo.Repetition,r,e)},t.prototype.manySepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionWithSeparator,r,e,tY)},t.prototype.orInternalRecord=function(e,r){return Zye.call(this,e,r)},t.prototype.subruleInternalRecord=function(e,r,i){if(KI(r),!e||(0,Cn.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=e.ruleName,a=new fo.NonTerminal({idx:r,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?Xye:OI},t.prototype.consumeInternalRecord=function(e,r,i){if(KI(r),!(0,$j.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=new fo.Terminal({idx:r,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),nY},t}();MI.GastRecorder=$ye;function tp(t,e,r,i){i===void 0&&(i=!1),KI(r);var n=(0,Cn.peek)(this.recordingProdStack),s=(0,Cn.isFunction)(e)?e:e.DEF,o=new t({definition:[],idx:r});return i&&(o.separator=e.SEP),(0,Cn.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),OI}function Zye(t,e){var r=this;KI(e);var i=(0,Cn.peek)(this.recordingProdStack),n=(0,Cn.isArray)(t)===!1,s=n===!1?t:t.DEF,o=new fo.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});(0,Cn.has)(t,"MAX_LOOKAHEAD")&&(o.maxLookahead=t.MAX_LOOKAHEAD);var a=(0,Cn.some)(s,function(l){return(0,Cn.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,Cn.forEach)(s,function(l){var c=new fo.Alternative({definition:[]});o.definition.push(c),(0,Cn.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,Cn.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),r.recordingProdStack.push(c),l.ALT.call(r),r.recordingProdStack.pop()}),OI}function sY(t){return t===0?"":""+t}function KI(t){if(t<0||t>rY){var e=new Error("Invalid DSL Method idx value: <"+t+`> - `+("Idx value must be a none negative value smaller than "+(rY+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var AY=E(UI=>{"use strict";Object.defineProperty(UI,"__esModule",{value:!0});UI.PerformanceTracer=void 0;var aY=Dt(),ewe=Tn(),twe=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if((0,aY.has)(e,"traceInitPerf")){var r=e.traceInitPerf,i=typeof r=="number";this.traceInitMaxIdent=i?r:Infinity,this.traceInitPerf=i?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ewe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,aY.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t}();UI.PerformanceTracer=twe});var lY=E(HI=>{"use strict";Object.defineProperty(HI,"__esModule",{value:!0});HI.applyMixins=void 0;function rwe(t,e){e.forEach(function(r){var i=r.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(t.prototype,n,s):t.prototype[n]=r.prototype[n]}})})}HI.applyMixins=rwe});var Tn=E(or=>{"use strict";var cY=or&&or.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(or,"__esModule",{value:!0});or.EmbeddedActionsParser=or.CstParser=or.Parser=or.EMPTY_ALT=or.ParserDefinitionErrorType=or.DEFAULT_RULE_CONFIG=or.DEFAULT_PARSER_CONFIG=or.END_OF_FILE=void 0;var Wi=Dt(),iwe=VG(),uY=nA(),gY=Wh(),fY=yj(),nwe=pS(),swe=kj(),owe=Kj(),awe=Hj(),Awe=jj(),lwe=Wj(),cwe=Vj(),uwe=Zj(),gwe=oY(),fwe=AY(),hwe=lY();or.END_OF_FILE=(0,uY.createTokenInstance)(uY.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(or.END_OF_FILE);or.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:gY.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});or.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var pwe;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(pwe=or.ParserDefinitionErrorType||(or.ParserDefinitionErrorType={}));function dwe(t){return t===void 0&&(t=void 0),function(){return t}}or.EMPTY_ALT=dwe;var GI=function(){function t(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(r),i.initLexerAdapter(),i.initLooksAhead(r),i.initRecognizerEngine(e,r),i.initRecoverable(r),i.initTreeBuilder(r),i.initContentAssist(),i.initGastRecorder(r),i.initPerformanceTracer(r),(0,Wi.has)(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=(0,Wi.has)(r,"skipValidations")?r.skipValidations:or.DEFAULT_PARSER_CONFIG.skipValidations}return t.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var r;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,Wi.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,Wi.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,fY.resolveGrammar)({rules:(0,Wi.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,Wi.isEmpty)(n)&&e.skipValidations===!1){var s=(0,fY.validateGrammar)({rules:(0,Wi.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,Wi.values)(e.tokensMap),errMsgProvider:gY.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,Wi.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,iwe.computeAllProdsFollows)((0,Wi.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,Wi.values)(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,Wi.isEmpty)(e.definitionErrors))throw r=(0,Wi.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: - `+r.join(` -------------------------------- -`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();or.Parser=GI;(0,hwe.applyMixins)(GI,[nwe.Recoverable,swe.LooksAhead,owe.TreeBuilder,awe.LexerAdapter,lwe.RecognizerEngine,Awe.RecognizerApi,cwe.ErrorHandler,uwe.ContentAssist,gwe.GastRecorder,fwe.PerformanceTracer]);var Cwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!0,n=t.call(this,r,s)||this,n}return e}(GI);or.CstParser=Cwe;var mwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!1,n=t.call(this,r,s)||this,n}return e}(GI);or.EmbeddedActionsParser=mwe});var pY=E(jI=>{"use strict";Object.defineProperty(jI,"__esModule",{value:!0});jI.createSyntaxDiagramsCode=void 0;var hY=Uv();function Ewe(t,e){var r=e===void 0?{}:e,i=r.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/":i,s=r.css,o=s===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/diagrams.css":s,a=` - - - - - -`,l=` - -`,c=` - - - - -`,u=` -

-`,g=` - -`,f=` - -`;return a+l+c+u+g+f}jI.createSyntaxDiagramsCode=Ewe});var mY=E(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.Parser=He.createSyntaxDiagramsCode=He.clearCache=He.GAstVisitor=He.serializeProduction=He.serializeGrammar=He.Terminal=He.Rule=He.RepetitionWithSeparator=He.RepetitionMandatoryWithSeparator=He.RepetitionMandatory=He.Repetition=He.Option=He.NonTerminal=He.Alternative=He.Alternation=He.defaultLexerErrorProvider=He.NoViableAltException=He.NotAllInputParsedException=He.MismatchedTokenException=He.isRecognitionException=He.EarlyExitException=He.defaultParserErrorProvider=He.tokenName=He.tokenMatcher=He.tokenLabel=He.EOF=He.createTokenInstance=He.createToken=He.LexerDefinitionErrorType=He.Lexer=He.EMPTY_ALT=He.ParserDefinitionErrorType=He.EmbeddedActionsParser=He.CstParser=He.VERSION=void 0;var Iwe=Uv();Object.defineProperty(He,"VERSION",{enumerable:!0,get:function(){return Iwe.VERSION}});var YI=Tn();Object.defineProperty(He,"CstParser",{enumerable:!0,get:function(){return YI.CstParser}});Object.defineProperty(He,"EmbeddedActionsParser",{enumerable:!0,get:function(){return YI.EmbeddedActionsParser}});Object.defineProperty(He,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return YI.ParserDefinitionErrorType}});Object.defineProperty(He,"EMPTY_ALT",{enumerable:!0,get:function(){return YI.EMPTY_ALT}});var dY=Gh();Object.defineProperty(He,"Lexer",{enumerable:!0,get:function(){return dY.Lexer}});Object.defineProperty(He,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return dY.LexerDefinitionErrorType}});var ku=nA();Object.defineProperty(He,"createToken",{enumerable:!0,get:function(){return ku.createToken}});Object.defineProperty(He,"createTokenInstance",{enumerable:!0,get:function(){return ku.createTokenInstance}});Object.defineProperty(He,"EOF",{enumerable:!0,get:function(){return ku.EOF}});Object.defineProperty(He,"tokenLabel",{enumerable:!0,get:function(){return ku.tokenLabel}});Object.defineProperty(He,"tokenMatcher",{enumerable:!0,get:function(){return ku.tokenMatcher}});Object.defineProperty(He,"tokenName",{enumerable:!0,get:function(){return ku.tokenName}});var ywe=Wh();Object.defineProperty(He,"defaultParserErrorProvider",{enumerable:!0,get:function(){return ywe.defaultParserErrorProvider}});var rp=vu();Object.defineProperty(He,"EarlyExitException",{enumerable:!0,get:function(){return rp.EarlyExitException}});Object.defineProperty(He,"isRecognitionException",{enumerable:!0,get:function(){return rp.isRecognitionException}});Object.defineProperty(He,"MismatchedTokenException",{enumerable:!0,get:function(){return rp.MismatchedTokenException}});Object.defineProperty(He,"NotAllInputParsedException",{enumerable:!0,get:function(){return rp.NotAllInputParsedException}});Object.defineProperty(He,"NoViableAltException",{enumerable:!0,get:function(){return rp.NoViableAltException}});var wwe=_v();Object.defineProperty(He,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return wwe.defaultLexerErrorProvider}});var ho=hn();Object.defineProperty(He,"Alternation",{enumerable:!0,get:function(){return ho.Alternation}});Object.defineProperty(He,"Alternative",{enumerable:!0,get:function(){return ho.Alternative}});Object.defineProperty(He,"NonTerminal",{enumerable:!0,get:function(){return ho.NonTerminal}});Object.defineProperty(He,"Option",{enumerable:!0,get:function(){return ho.Option}});Object.defineProperty(He,"Repetition",{enumerable:!0,get:function(){return ho.Repetition}});Object.defineProperty(He,"RepetitionMandatory",{enumerable:!0,get:function(){return ho.RepetitionMandatory}});Object.defineProperty(He,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionMandatoryWithSeparator}});Object.defineProperty(He,"RepetitionWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionWithSeparator}});Object.defineProperty(He,"Rule",{enumerable:!0,get:function(){return ho.Rule}});Object.defineProperty(He,"Terminal",{enumerable:!0,get:function(){return ho.Terminal}});var CY=hn();Object.defineProperty(He,"serializeGrammar",{enumerable:!0,get:function(){return CY.serializeGrammar}});Object.defineProperty(He,"serializeProduction",{enumerable:!0,get:function(){return CY.serializeProduction}});var Bwe=wu();Object.defineProperty(He,"GAstVisitor",{enumerable:!0,get:function(){return Bwe.GAstVisitor}});function Qwe(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API. - It performs no action other than printing this message. - Please avoid using it as it will be completely removed in the future`)}He.clearCache=Qwe;var bwe=pY();Object.defineProperty(He,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return bwe.createSyntaxDiagramsCode}});var vwe=function(){function t(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead. -See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return t}();He.Parser=vwe});var yY=E((Trt,EY)=>{var qI=mY(),ca=qI.createToken,IY=qI.tokenMatcher,yS=qI.Lexer,Swe=qI.EmbeddedActionsParser;EY.exports=t=>{let e=ca({name:"LogicalOperator",pattern:yS.NA}),r=ca({name:"Or",pattern:/\|/,categories:e}),i=ca({name:"Xor",pattern:/\^/,categories:e}),n=ca({name:"And",pattern:/&/,categories:e}),s=ca({name:"Not",pattern:/!/}),o=ca({name:"LParen",pattern:/\(/}),a=ca({name:"RParen",pattern:/\)/}),l=ca({name:"Query",pattern:t}),u=[ca({name:"WhiteSpace",pattern:/\s+/,group:yS.SKIPPED}),r,i,n,o,a,s,e,l],g=new yS(u);class f extends Swe{constructor(p){super(u);this.RULE("expression",()=>this.SUBRULE(this.logicalExpression)),this.RULE("logicalExpression",()=>{let m=this.SUBRULE(this.atomicExpression);return this.MANY(()=>{let I=m,B=this.CONSUME(e),b=this.SUBRULE2(this.atomicExpression);IY(B,r)?m=R=>I(R)||b(R):IY(B,i)?m=R=>!!(I(R)^b(R)):m=R=>I(R)&&b(R)}),m}),this.RULE("atomicExpression",()=>this.OR([{ALT:()=>this.SUBRULE(this.parenthesisExpression)},{ALT:()=>{let{image:d}=this.CONSUME(l);return m=>m(d)}},{ALT:()=>{this.CONSUME(s);let d=this.SUBRULE(this.atomicExpression);return m=>!d(m)}}])),this.RULE("parenthesisExpression",()=>{let d;return this.CONSUME(o),d=this.SUBRULE(this.expression),this.CONSUME(a),d}),this.performSelfAnalysis()}}return{TinylogicLexer:g,TinylogicParser:f}}});var wY=E(JI=>{var xwe=yY();JI.makeParser=(t=/[a-z]+/)=>{let{TinylogicLexer:e,TinylogicParser:r}=xwe(t),i=new r;return(n,s)=>{let o=e.tokenize(n);return i.input=o.tokens,i.expression()(s)}};JI.parse=JI.makeParser()});var QY=E((Ort,BY)=>{"use strict";BY.exports=(...t)=>[...new Set([].concat(...t))]});var wS=E((Krt,bY)=>{"use strict";var kwe=require("stream"),vY=kwe.PassThrough,Pwe=Array.prototype.slice;bY.exports=Dwe;function Dwe(){let t=[],e=!1,r=Pwe.call(arguments),i=r[r.length-1];i&&!Array.isArray(i)&&i.pipe==null?r.pop():i={};let n=i.end!==!1;i.objectMode==null&&(i.objectMode=!0),i.highWaterMark==null&&(i.highWaterMark=64*1024);let s=vY(i);function o(){for(let c=0,u=arguments.length;c0||(e=!1,a())}function f(h){function p(){h.removeListener("merge2UnpipeEnd",p),h.removeListener("end",p),g()}if(h._readableState.endEmitted)return g();h.on("merge2UnpipeEnd",p),h.on("end",p),h.pipe(s,{end:!1}),h.resume()}for(let h=0;h{"use strict";Object.defineProperty(WI,"__esModule",{value:!0});function Rwe(t){return t.reduce((e,r)=>[].concat(e,r),[])}WI.flatten=Rwe;function Fwe(t,e){let r=[[]],i=0;for(let n of t)e(n)?(i++,r[i]=[]):r[i].push(n);return r}WI.splitWhen=Fwe});var kY=E(BS=>{"use strict";Object.defineProperty(BS,"__esModule",{value:!0});function Nwe(t){return t.code==="ENOENT"}BS.isEnoentCodeError=Nwe});var DY=E(QS=>{"use strict";Object.defineProperty(QS,"__esModule",{value:!0});var PY=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function Lwe(t,e){return new PY(t,e)}QS.createDirentFromStats=Lwe});var RY=E(Pu=>{"use strict";Object.defineProperty(Pu,"__esModule",{value:!0});var Twe=require("path"),Mwe=2,Owe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function Kwe(t){return t.replace(/\\/g,"/")}Pu.unixify=Kwe;function Uwe(t,e){return Twe.resolve(t,e)}Pu.makeAbsolute=Uwe;function Hwe(t){return t.replace(Owe,"\\$2")}Pu.escape=Hwe;function Gwe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(Mwe)}return t}Pu.removeLeadingDotSegment=Gwe});var NY=E((Yrt,FY)=>{FY.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var TY=E((qrt,LY)=>{var jwe=NY(),Ywe={"{":"}","(":")","[":"]"},qwe=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,Jwe=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;LY.exports=function(e,r){if(typeof e!="string"||e==="")return!1;if(jwe(e))return!0;var i=qwe,n;for(r&&r.strict===!1&&(i=Jwe);n=i.exec(e);){if(n[2])return!0;var s=n.index+n[0].length,o=n[1],a=o?Ywe[o]:null;if(o&&a){var l=e.indexOf(a,s);l!==-1&&(s=l+1)}e=e.slice(s)}return!1}});var OY=E((Jrt,MY)=>{"use strict";var Wwe=TY(),zwe=require("path").posix.dirname,Vwe=require("os").platform()==="win32",bS="/",_we=/\\/g,Xwe=/[\{\[].*[\}\]]$/,Zwe=/(^|[^\\])([\{\[]|\([^\)]+$)/,$we=/\\([\!\*\?\|\[\]\(\)\{\}])/g;MY.exports=function(e,r){var i=Object.assign({flipBackslashes:!0},r);i.flipBackslashes&&Vwe&&e.indexOf(bS)<0&&(e=e.replace(_we,bS)),Xwe.test(e)&&(e+=bS),e+="a";do e=zwe(e);while(Wwe(e)||Zwe.test(e));return e.replace($we,"$1")}});var WY=E(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});var eBe=require("path"),tBe=OY(),KY=Nn(),rBe=iv(),UY="**",iBe="\\",nBe=/[*?]|^!/,sBe=/\[.*]/,oBe=/(?:^|[^!*+?@])\(.*\|.*\)/,aBe=/[!*+?@]\(.*\)/,ABe=/{.*(?:,|\.\.).*}/;function GY(t,e={}){return!HY(t,e)}Hr.isStaticPattern=GY;function HY(t,e={}){return!!(e.caseSensitiveMatch===!1||t.includes(iBe)||nBe.test(t)||sBe.test(t)||oBe.test(t)||e.extglob!==!1&&aBe.test(t)||e.braceExpansion!==!1&&ABe.test(t))}Hr.isDynamicPattern=HY;function lBe(t){return zI(t)?t.slice(1):t}Hr.convertToPositivePattern=lBe;function cBe(t){return"!"+t}Hr.convertToNegativePattern=cBe;function zI(t){return t.startsWith("!")&&t[1]!=="("}Hr.isNegativePattern=zI;function jY(t){return!zI(t)}Hr.isPositivePattern=jY;function uBe(t){return t.filter(zI)}Hr.getNegativePatterns=uBe;function gBe(t){return t.filter(jY)}Hr.getPositivePatterns=gBe;function fBe(t){return tBe(t,{flipBackslashes:!1})}Hr.getBaseDirectory=fBe;function hBe(t){return t.includes(UY)}Hr.hasGlobStar=hBe;function YY(t){return t.endsWith("/"+UY)}Hr.endsWithSlashGlobStar=YY;function pBe(t){let e=eBe.basename(t);return YY(t)||GY(e)}Hr.isAffectDepthOfReadingPattern=pBe;function dBe(t){return t.reduce((e,r)=>e.concat(qY(r)),[])}Hr.expandPatternsWithBraceExpansion=dBe;function qY(t){return KY.braces(t,{expand:!0,nodupes:!0})}Hr.expandBraceExpansion=qY;function CBe(t,e){let r=rBe.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.parts.length===0?[t]:r.parts}Hr.getPatternParts=CBe;function JY(t,e){return KY.makeRe(t,e)}Hr.makeRe=JY;function mBe(t,e){return t.map(r=>JY(r,e))}Hr.convertPatternsToRe=mBe;function EBe(t,e){return e.some(r=>r.test(t))}Hr.matchAny=EBe});var VY=E(vS=>{"use strict";Object.defineProperty(vS,"__esModule",{value:!0});var IBe=wS();function yBe(t){let e=IBe(t);return t.forEach(r=>{r.once("error",i=>e.emit("error",i))}),e.once("close",()=>zY(t)),e.once("end",()=>zY(t)),e}vS.merge=yBe;function zY(t){t.forEach(e=>e.emit("close"))}});var _Y=E(VI=>{"use strict";Object.defineProperty(VI,"__esModule",{value:!0});function wBe(t){return typeof t=="string"}VI.isString=wBe;function BBe(t){return t===""}VI.isEmpty=BBe});var ga=E(ua=>{"use strict";Object.defineProperty(ua,"__esModule",{value:!0});var QBe=xY();ua.array=QBe;var bBe=kY();ua.errno=bBe;var vBe=DY();ua.fs=vBe;var SBe=RY();ua.path=SBe;var xBe=WY();ua.pattern=xBe;var kBe=VY();ua.stream=kBe;var PBe=_Y();ua.string=PBe});var tq=E(fa=>{"use strict";Object.defineProperty(fa,"__esModule",{value:!0});var Ll=ga();function DBe(t,e){let r=XY(t),i=ZY(t,e.ignore),n=r.filter(l=>Ll.pattern.isStaticPattern(l,e)),s=r.filter(l=>Ll.pattern.isDynamicPattern(l,e)),o=SS(n,i,!1),a=SS(s,i,!0);return o.concat(a)}fa.generate=DBe;function SS(t,e,r){let i=$Y(t);return"."in i?[xS(".",t,e,r)]:eq(i,e,r)}fa.convertPatternsToTasks=SS;function XY(t){return Ll.pattern.getPositivePatterns(t)}fa.getPositivePatterns=XY;function ZY(t,e){return Ll.pattern.getNegativePatterns(t).concat(e).map(Ll.pattern.convertToPositivePattern)}fa.getNegativePatternsAsPositive=ZY;function $Y(t){let e={};return t.reduce((r,i)=>{let n=Ll.pattern.getBaseDirectory(i);return n in r?r[n].push(i):r[n]=[i],r},e)}fa.groupPatternsByBaseDirectory=$Y;function eq(t,e,r){return Object.keys(t).map(i=>xS(i,t[i],e,r))}fa.convertPatternGroupsToTasks=eq;function xS(t,e,r,i){return{dynamic:i,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Ll.pattern.convertToNegativePattern))}}fa.convertPatternGroupToTask=xS});var iq=E(_I=>{"use strict";Object.defineProperty(_I,"__esModule",{value:!0});_I.read=void 0;function RBe(t,e,r){e.fs.lstat(t,(i,n)=>{if(i!==null){rq(r,i);return}if(!n.isSymbolicLink()||!e.followSymbolicLink){kS(r,n);return}e.fs.stat(t,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){rq(r,s);return}kS(r,n);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),kS(r,o)})})}_I.read=RBe;function rq(t,e){t(e)}function kS(t,e){t(null,e)}});var nq=E(XI=>{"use strict";Object.defineProperty(XI,"__esModule",{value:!0});XI.read=void 0;function FBe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let i=e.fs.statSync(t);return e.markSymbolicLink&&(i.isSymbolicLink=()=>!0),i}catch(i){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw i}}XI.read=FBe});var sq=E(AA=>{"use strict";Object.defineProperty(AA,"__esModule",{value:!0});AA.createFileSystemAdapter=AA.FILE_SYSTEM_ADAPTER=void 0;var ZI=require("fs");AA.FILE_SYSTEM_ADAPTER={lstat:ZI.lstat,stat:ZI.stat,lstatSync:ZI.lstatSync,statSync:ZI.statSync};function NBe(t){return t===void 0?AA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},AA.FILE_SYSTEM_ADAPTER),t)}AA.createFileSystemAdapter=NBe});var aq=E(PS=>{"use strict";Object.defineProperty(PS,"__esModule",{value:!0});var LBe=sq(),oq=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=LBe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e!=null?e:r}};PS.default=oq});var Tl=E(lA=>{"use strict";Object.defineProperty(lA,"__esModule",{value:!0});lA.statSync=lA.stat=lA.Settings=void 0;var Aq=iq(),TBe=nq(),DS=aq();lA.Settings=DS.default;function MBe(t,e,r){if(typeof e=="function"){Aq.read(t,RS(),e);return}Aq.read(t,RS(e),r)}lA.stat=MBe;function OBe(t,e){let r=RS(e);return TBe.read(t,r)}lA.statSync=OBe;function RS(t={}){return t instanceof DS.default?t:new DS.default(t)}});var cq=E((iit,lq)=>{lq.exports=KBe;function KBe(t,e){var r,i,n,s=!0;Array.isArray(t)?(r=[],i=t.length):(n=Object.keys(t),r={},i=n.length);function o(l){function c(){e&&e(l,r),e=null}s?process.nextTick(c):c()}function a(l,c,u){r[l]=u,(--i==0||c)&&o(c)}i?n?n.forEach(function(l){t[l](function(c,u){a(l,c,u)})}):t.forEach(function(l,c){l(function(u,g){a(c,u,g)})}):o(null),s=!1}});var FS=E($I=>{"use strict";Object.defineProperty($I,"__esModule",{value:!0});$I.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var ey=process.versions.node.split(".");if(ey[0]===void 0||ey[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var uq=Number.parseInt(ey[0],10),UBe=Number.parseInt(ey[1],10),gq=10,HBe=10,GBe=uq>gq,jBe=uq===gq&&UBe>=HBe;$I.IS_SUPPORT_READDIR_WITH_FILE_TYPES=GBe||jBe});var hq=E(ty=>{"use strict";Object.defineProperty(ty,"__esModule",{value:!0});ty.createDirentFromStats=void 0;var fq=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function YBe(t,e){return new fq(t,e)}ty.createDirentFromStats=YBe});var NS=E(ry=>{"use strict";Object.defineProperty(ry,"__esModule",{value:!0});ry.fs=void 0;var qBe=hq();ry.fs=qBe});var LS=E(iy=>{"use strict";Object.defineProperty(iy,"__esModule",{value:!0});iy.joinPathSegments=void 0;function JBe(t,e,r){return t.endsWith(r)?t+e:t+r+e}iy.joinPathSegments=JBe});var Iq=E(cA=>{"use strict";Object.defineProperty(cA,"__esModule",{value:!0});cA.readdir=cA.readdirWithFileTypes=cA.read=void 0;var WBe=Tl(),pq=cq(),zBe=FS(),dq=NS(),Cq=LS();function VBe(t,e,r){if(!e.stats&&zBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){mq(t,e,r);return}Eq(t,e,r)}cA.read=VBe;function mq(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(a=>({dirent:a,name:a.name,path:Cq.joinPathSegments(t,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){TS(r,s);return}let o=s.map(a=>_Be(a,e));pq(o,(a,l)=>{if(a!==null){ny(r,a);return}TS(r,l)})})}cA.readdirWithFileTypes=mq;function _Be(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(i,n)=>{if(i!==null){if(e.throwErrorOnBrokenSymbolicLink){r(i);return}r(null,t);return}t.dirent=dq.fs.createDirentFromStats(t.name,n),r(null,t)})}}function Eq(t,e,r){e.fs.readdir(t,(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(o=>{let a=Cq.joinPathSegments(t,o,e.pathSegmentSeparator);return l=>{WBe.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let g={name:o,path:a,dirent:dq.fs.createDirentFromStats(o,u)};e.stats&&(g.stats=u),l(null,g)})}});pq(s,(o,a)=>{if(o!==null){ny(r,o);return}TS(r,a)})})}cA.readdir=Eq;function ny(t,e){t(e)}function TS(t,e){t(null,e)}});var bq=E(uA=>{"use strict";Object.defineProperty(uA,"__esModule",{value:!0});uA.readdir=uA.readdirWithFileTypes=uA.read=void 0;var XBe=Tl(),ZBe=FS(),yq=NS(),wq=LS();function $Be(t,e){return!e.stats&&ZBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Bq(t,e):Qq(t,e)}uA.read=$Be;function Bq(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(i=>{let n={dirent:i,name:i.name,path:wq.joinPathSegments(t,i.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(n.path);n.dirent=yq.fs.createDirentFromStats(n.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return n})}uA.readdirWithFileTypes=Bq;function Qq(t,e){return e.fs.readdirSync(t).map(i=>{let n=wq.joinPathSegments(t,i,e.pathSegmentSeparator),s=XBe.statSync(n,e.fsStatSettings),o={name:i,path:n,dirent:yq.fs.createDirentFromStats(i,s)};return e.stats&&(o.stats=s),o})}uA.readdir=Qq});var vq=E(gA=>{"use strict";Object.defineProperty(gA,"__esModule",{value:!0});gA.createFileSystemAdapter=gA.FILE_SYSTEM_ADAPTER=void 0;var Du=require("fs");gA.FILE_SYSTEM_ADAPTER={lstat:Du.lstat,stat:Du.stat,lstatSync:Du.lstatSync,statSync:Du.statSync,readdir:Du.readdir,readdirSync:Du.readdirSync};function e0e(t){return t===void 0?gA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},gA.FILE_SYSTEM_ADAPTER),t)}gA.createFileSystemAdapter=e0e});var xq=E(MS=>{"use strict";Object.defineProperty(MS,"__esModule",{value:!0});var t0e=require("path"),r0e=Tl(),i0e=vq(),Sq=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=i0e.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,t0e.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new r0e.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};MS.default=Sq});var sy=E(fA=>{"use strict";Object.defineProperty(fA,"__esModule",{value:!0});fA.Settings=fA.scandirSync=fA.scandir=void 0;var kq=Iq(),n0e=bq(),OS=xq();fA.Settings=OS.default;function s0e(t,e,r){if(typeof e=="function"){kq.read(t,KS(),e);return}kq.read(t,KS(e),r)}fA.scandir=s0e;function o0e(t,e){let r=KS(e);return n0e.read(t,r)}fA.scandirSync=o0e;function KS(t={}){return t instanceof OS.default?t:new OS.default(t)}});var Dq=E((fit,Pq)=>{"use strict";function a0e(t){var e=new t,r=e;function i(){var s=e;return s.next?e=s.next:(e=new t,r=e),s.next=null,s}function n(s){r.next=s,r=s}return{get:i,release:n}}Pq.exports=a0e});var Fq=E((hit,US)=>{"use strict";var A0e=Dq();function Rq(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var i=A0e(l0e),n=null,s=null,o=0,a=null,l={push:d,drain:po,saturated:po,pause:u,paused:!1,concurrency:r,running:c,resume:h,idle:p,length:g,getQueue:f,unshift:m,empty:po,kill:B,killAndDrain:b,error:R};return l;function c(){return o}function u(){l.paused=!0}function g(){for(var H=n,L=0;H;)H=H.next,L++;return L}function f(){for(var H=n,L=[];H;)L.push(H.value),H=H.next;return L}function h(){if(!!l.paused){l.paused=!1;for(var H=0;H{"use strict";Object.defineProperty(Co,"__esModule",{value:!0});Co.joinPathSegments=Co.replacePathSegmentSeparator=Co.isAppliedFilter=Co.isFatalError=void 0;function u0e(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Co.isFatalError=u0e;function g0e(t,e){return t===null||t(e)}Co.isAppliedFilter=g0e;function f0e(t,e){return t.split(/[/\\]/).join(e)}Co.replacePathSegmentSeparator=f0e;function h0e(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Co.joinPathSegments=h0e});var GS=E(HS=>{"use strict";Object.defineProperty(HS,"__esModule",{value:!0});var p0e=oy(),Nq=class{constructor(e,r){this._root=e,this._settings=r,this._root=p0e.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};HS.default=Nq});var YS=E(jS=>{"use strict";Object.defineProperty(jS,"__esModule",{value:!0});var d0e=require("events"),C0e=sy(),m0e=Fq(),ay=oy(),E0e=GS(),Lq=class extends E0e.default{constructor(e,r){super(e,r);this._settings=r,this._scandir=C0e.scandir,this._emitter=new d0e.EventEmitter,this._queue=m0e(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let i={directory:e,base:r};this._queue.push(i,n=>{n!==null&&this._handleError(n)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(i,n)=>{if(i!==null){r(i,void 0);return}for(let s of n)this._handleEntry(s,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!ay.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let i=e.path;r!==void 0&&(e.path=ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),ay.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};jS.default=Lq});var Mq=E(qS=>{"use strict";Object.defineProperty(qS,"__esModule",{value:!0});var I0e=YS(),Tq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new I0e.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(r=>{y0e(e,r)}),this._reader.onEntry(r=>{this._storage.add(r)}),this._reader.onEnd(()=>{w0e(e,[...this._storage])}),this._reader.read()}};qS.default=Tq;function y0e(t,e){t(e)}function w0e(t,e){t(null,e)}});var Kq=E(JS=>{"use strict";Object.defineProperty(JS,"__esModule",{value:!0});var B0e=require("stream"),Q0e=YS(),Oq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Q0e.default(this._root,this._settings),this._stream=new B0e.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};JS.default=Oq});var Hq=E(WS=>{"use strict";Object.defineProperty(WS,"__esModule",{value:!0});var b0e=sy(),Ay=oy(),v0e=GS(),Uq=class extends v0e.default{constructor(){super(...arguments);this._scandir=b0e.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let i=this._scandir(e,this._settings.fsScandirSettings);for(let n of i)this._handleEntry(n,r)}catch(i){this._handleError(i)}}_handleError(e){if(!!Ay.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let i=e.path;r!==void 0&&(e.path=Ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),Ay.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&Ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_pushToStorage(e){this._storage.add(e)}};WS.default=Uq});var jq=E(zS=>{"use strict";Object.defineProperty(zS,"__esModule",{value:!0});var S0e=Hq(),Gq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new S0e.default(this._root,this._settings)}read(){return this._reader.read()}};zS.default=Gq});var qq=E(VS=>{"use strict";Object.defineProperty(VS,"__esModule",{value:!0});var x0e=require("path"),k0e=sy(),Yq=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,x0e.sep),this.fsScandirSettings=new k0e.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};VS.default=Yq});var XS=E(mo=>{"use strict";Object.defineProperty(mo,"__esModule",{value:!0});mo.Settings=mo.walkStream=mo.walkSync=mo.walk=void 0;var Jq=Mq(),P0e=Kq(),D0e=jq(),_S=qq();mo.Settings=_S.default;function R0e(t,e,r){if(typeof e=="function"){new Jq.default(t,ly()).read(e);return}new Jq.default(t,ly(e)).read(r)}mo.walk=R0e;function F0e(t,e){let r=ly(e);return new D0e.default(t,r).read()}mo.walkSync=F0e;function N0e(t,e){let r=ly(e);return new P0e.default(t,r).read()}mo.walkStream=N0e;function ly(t={}){return t instanceof _S.default?t:new _S.default(t)}});var $S=E(ZS=>{"use strict";Object.defineProperty(ZS,"__esModule",{value:!0});var L0e=require("path"),T0e=Tl(),Wq=ga(),zq=class{constructor(e){this._settings=e,this._fsStatSettings=new T0e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return L0e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let i={name:r,path:r,dirent:Wq.fs.createDirentFromStats(r,e)};return this._settings.stats&&(i.stats=e),i}_isFatalError(e){return!Wq.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};ZS.default=zq});var tx=E(ex=>{"use strict";Object.defineProperty(ex,"__esModule",{value:!0});var M0e=require("stream"),O0e=Tl(),K0e=XS(),U0e=$S(),Vq=class extends U0e.default{constructor(){super(...arguments);this._walkStream=K0e.walkStream,this._stat=O0e.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let i=e.map(this._getFullEntryPath,this),n=new M0e.PassThrough({objectMode:!0});n._write=(s,o,a)=>this._getEntry(i[s],e[s],r).then(l=>{l!==null&&r.entryFilter(l)&&n.push(l),s===i.length-1&&n.end(),a()}).catch(a);for(let s=0;sthis._makeEntry(n,r)).catch(n=>{if(i.errorFilter(n))return null;throw n})}_getStat(e){return new Promise((r,i)=>{this._stat(e,this._fsStatSettings,(n,s)=>n===null?r(s):i(n))})}};ex.default=Vq});var Xq=E(rx=>{"use strict";Object.defineProperty(rx,"__esModule",{value:!0});var Ru=ga(),_q=class{constructor(e,r,i){this._patterns=e,this._settings=r,this._micromatchOptions=i,this._storage=[],this._fillStorage()}_fillStorage(){let e=Ru.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let i=this._getPatternSegments(r),n=this._splitSegmentsIntoSections(i);this._storage.push({complete:n.length<=1,pattern:r,segments:i,sections:n})}}_getPatternSegments(e){return Ru.pattern.getPatternParts(e,this._micromatchOptions).map(i=>Ru.pattern.isDynamicPattern(i,this._settings)?{dynamic:!0,pattern:i,patternRe:Ru.pattern.makeRe(i,this._micromatchOptions)}:{dynamic:!1,pattern:i})}_splitSegmentsIntoSections(e){return Ru.array.splitWhen(e,r=>r.dynamic&&Ru.pattern.hasGlobStar(r.pattern))}};rx.default=_q});var $q=E(ix=>{"use strict";Object.defineProperty(ix,"__esModule",{value:!0});var H0e=Xq(),Zq=class extends H0e.default{match(e){let r=e.split("/"),i=r.length,n=this._storage.filter(s=>!s.complete||s.segments.length>i);for(let s of n){let o=s.sections[0];if(!s.complete&&i>o.length||r.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};ix.default=Zq});var tJ=E(nx=>{"use strict";Object.defineProperty(nx,"__esModule",{value:!0});var cy=ga(),G0e=$q(),eJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,i){let n=this._getMatcher(r),s=this._getNegativePatternsRe(i);return o=>this._filter(e,o,n,s)}_getMatcher(e){return new G0e.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(cy.pattern.isAffectDepthOfReadingPattern);return cy.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,i,n){let s=this._getEntryLevel(e,r.path);if(this._isSkippedByDeep(s)||this._isSkippedSymbolicLink(r))return!1;let o=cy.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(o,i)?!1:this._isSkippedByNegativePatterns(o,n)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,r){let i=e.split("/").length;return r.split("/").length-(e===""?0:i)}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!cy.pattern.matchAny(e,r)}};nx.default=eJ});var iJ=E(sx=>{"use strict";Object.defineProperty(sx,"__esModule",{value:!0});var ip=ga(),rJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let i=ip.pattern.convertPatternsToRe(e,this._micromatchOptions),n=ip.pattern.convertPatternsToRe(r,this._micromatchOptions);return s=>this._filter(s,i,n)}_filter(e,r,i){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e,i))return!1;let n=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(n,r)&&!this._isMatchToPatterns(e.path,i)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let i=ip.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(i,r)}_isMatchToPatterns(e,r){let i=ip.path.removeLeadingDotSegment(e);return ip.pattern.matchAny(i,r)}};sx.default=rJ});var sJ=E(ox=>{"use strict";Object.defineProperty(ox,"__esModule",{value:!0});var j0e=ga(),nJ=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return j0e.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};ox.default=nJ});var AJ=E(ax=>{"use strict";Object.defineProperty(ax,"__esModule",{value:!0});var oJ=ga(),aJ=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=oJ.path.makeAbsolute(this._settings.cwd,r),r=oJ.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};ax.default=aJ});var uy=E(Ax=>{"use strict";Object.defineProperty(Ax,"__esModule",{value:!0});var Y0e=require("path"),q0e=tJ(),J0e=iJ(),W0e=sJ(),z0e=AJ(),lJ=class{constructor(e){this._settings=e,this.errorFilter=new W0e.default(this._settings),this.entryFilter=new J0e.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new q0e.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new z0e.default(this._settings)}_getRootDirectory(e){return Y0e.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};Ax.default=lJ});var uJ=E(lx=>{"use strict";Object.defineProperty(lx,"__esModule",{value:!0});var V0e=tx(),_0e=uy(),cJ=class extends _0e.default{constructor(){super(...arguments);this._reader=new V0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=[];return new Promise((s,o)=>{let a=this.api(r,e,i);a.once("error",o),a.on("data",l=>n.push(i.transform(l))),a.once("end",()=>s(n))})}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};lx.default=cJ});var fJ=E(cx=>{"use strict";Object.defineProperty(cx,"__esModule",{value:!0});var X0e=require("stream"),Z0e=tx(),$0e=uy(),gJ=class extends $0e.default{constructor(){super(...arguments);this._reader=new Z0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=this.api(r,e,i),s=new X0e.Readable({objectMode:!0,read:()=>{}});return n.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",i.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>n.destroy()),s}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};cx.default=gJ});var pJ=E(ux=>{"use strict";Object.defineProperty(ux,"__esModule",{value:!0});var eQe=Tl(),tQe=XS(),rQe=$S(),hJ=class extends rQe.default{constructor(){super(...arguments);this._walkSync=tQe.walkSync,this._statSync=eQe.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let i=[];for(let n of e){let s=this._getFullEntryPath(n),o=this._getEntry(s,n,r);o===null||!r.entryFilter(o)||i.push(o)}return i}_getEntry(e,r,i){try{let n=this._getStat(e);return this._makeEntry(n,r)}catch(n){if(i.errorFilter(n))return null;throw n}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};ux.default=hJ});var CJ=E(gx=>{"use strict";Object.defineProperty(gx,"__esModule",{value:!0});var iQe=pJ(),nQe=uy(),dJ=class extends nQe.default{constructor(){super(...arguments);this._reader=new iQe.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e);return this.api(r,e,i).map(i.transform)}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};gx.default=dJ});var EJ=E(np=>{"use strict";Object.defineProperty(np,"__esModule",{value:!0});var Fu=require("fs"),sQe=require("os"),oQe=sQe.cpus().length;np.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Fu.lstat,lstatSync:Fu.lstatSync,stat:Fu.stat,statSync:Fu.statSync,readdir:Fu.readdir,readdirSync:Fu.readdirSync};var mJ=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,oQe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,Infinity),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},np.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};np.default=mJ});var gy=E((Oit,IJ)=>{"use strict";var yJ=tq(),aQe=uJ(),AQe=fJ(),lQe=CJ(),fx=EJ(),Ml=ga();async function px(t,e){Nu(t);let r=hx(t,aQe.default,e),i=await Promise.all(r);return Ml.array.flatten(i)}(function(t){function e(o,a){Nu(o);let l=hx(o,lQe.default,a);return Ml.array.flatten(l)}t.sync=e;function r(o,a){Nu(o);let l=hx(o,AQe.default,a);return Ml.stream.merge(l)}t.stream=r;function i(o,a){Nu(o);let l=[].concat(o),c=new fx.default(a);return yJ.generate(l,c)}t.generateTasks=i;function n(o,a){Nu(o);let l=new fx.default(a);return Ml.pattern.isDynamicPattern(o,l)}t.isDynamicPattern=n;function s(o){return Nu(o),Ml.path.escape(o)}t.escapePath=s})(px||(px={}));function hx(t,e,r){let i=[].concat(t),n=new fx.default(r),s=yJ.generate(i,n),o=new e(n);return s.map(o.read,o)}function Nu(t){if(![].concat(t).every(i=>Ml.string.isString(i)&&!Ml.string.isEmpty(i)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}IJ.exports=px});var BJ=E(Ol=>{"use strict";var{promisify:cQe}=require("util"),wJ=require("fs");async function dx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await cQe(wJ[t])(r))[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}function Cx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return wJ[t](r)[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}Ol.isFile=dx.bind(null,"stat","isFile");Ol.isDirectory=dx.bind(null,"stat","isDirectory");Ol.isSymlink=dx.bind(null,"lstat","isSymbolicLink");Ol.isFileSync=Cx.bind(null,"statSync","isFile");Ol.isDirectorySync=Cx.bind(null,"statSync","isDirectory");Ol.isSymlinkSync=Cx.bind(null,"lstatSync","isSymbolicLink")});var xJ=E((Uit,mx)=>{"use strict";var Kl=require("path"),QJ=BJ(),bJ=t=>t.length>1?`{${t.join(",")}}`:t[0],vJ=(t,e)=>{let r=t[0]==="!"?t.slice(1):t;return Kl.isAbsolute(r)?r:Kl.join(e,r)},uQe=(t,e)=>Kl.extname(t)?`**/${t}`:`**/${t}.${bJ(e)}`,SJ=(t,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(r=>Kl.posix.join(t,uQe(r,e.extensions))):e.files?e.files.map(r=>Kl.posix.join(t,`**/${r}`)):e.extensions?[Kl.posix.join(t,`**/*.${bJ(e.extensions)}`)]:[Kl.posix.join(t,"**")]};mx.exports=async(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=await Promise.all([].concat(t).map(async i=>await QJ.isDirectory(vJ(i,e.cwd))?SJ(i,e):i));return[].concat.apply([],r)};mx.exports.sync=(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=[].concat(t).map(i=>QJ.isDirectorySync(vJ(i,e.cwd))?SJ(i,e):i);return[].concat.apply([],r)}});var TJ=E((Hit,kJ)=>{function PJ(t){return Array.isArray(t)?t:[t]}var gQe=/^\s+$/,fQe=/^\\!/,hQe=/^\\#/,pQe=/\r?\n/g,dQe=/^\.*\/|^\.+$/,Ex="/",DJ=typeof Symbol!="undefined"?Symbol.for("node-ignore"):"node-ignore",CQe=(t,e,r)=>Object.defineProperty(t,e,{value:r}),mQe=/([0-z])-([0-z])/g,EQe=t=>t.replace(mQe,(e,r,i)=>r.charCodeAt(0)<=i.charCodeAt(0)?e:""),IQe=[[/\\?\s+$/,t=>t.indexOf("\\")===0?" ":""],[/\\\s/g,()=>" "],[/[\\^$.|*+(){]/g,t=>`\\${t}`],[/\[([^\]/]*)($|\])/g,(t,e,r)=>r==="]"?`[${EQe(e)}]`:`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6`${e}[^\\/]*`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`],[/\\\\\\/g,()=>"\\"]],RJ=Object.create(null),yQe=(t,e,r)=>{let i=RJ[t];if(i)return i;let n=IQe.reduce((s,o)=>s.replace(o[0],o[1].bind(t)),t);return RJ[t]=r?new RegExp(n,"i"):new RegExp(n)},Ix=t=>typeof t=="string",wQe=t=>t&&Ix(t)&&!gQe.test(t)&&t.indexOf("#")!==0,BQe=t=>t.split(pQe),FJ=class{constructor(e,r,i,n){this.origin=e,this.pattern=r,this.negative=i,this.regex=n}},QQe=(t,e)=>{let r=t,i=!1;t.indexOf("!")===0&&(i=!0,t=t.substr(1)),t=t.replace(fQe,"!").replace(hQe,"#");let n=yQe(t,i,e);return new FJ(r,t,i,n)},bQe=(t,e)=>{throw new e(t)},ha=(t,e,r)=>Ix(t)?t?ha.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),NJ=t=>dQe.test(t);ha.isNotRelative=NJ;ha.convert=t=>t;var LJ=class{constructor({ignorecase:e=!0}={}){this._rules=[],this._ignorecase=e,CQe(this,DJ,!0),this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[DJ]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(wQe(e)){let r=QQe(e,this._ignorecase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,PJ(Ix(e)?BQe(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let i=!1,n=!1;return this._rules.forEach(s=>{let{negative:o}=s;if(n===o&&i!==n||o&&!i&&!n&&!r)return;s.regex.test(e)&&(i=!o,n=o)}),{ignored:i,unignored:n}}_test(e,r,i,n){let s=e&&ha.convert(e);return ha(s,e,bQe),this._t(s,r,i,n)}_t(e,r,i,n){if(e in r)return r[e];if(n||(n=e.split(Ex)),n.pop(),!n.length)return r[e]=this._testOne(e,i);let s=this._t(n.join(Ex)+Ex,r,i,n);return r[e]=s.ignored?s:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return PJ(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},fy=t=>new LJ(t),vQe=()=>!1,SQe=t=>ha(t&&ha.convert(t),t,vQe);fy.isPathValid=SQe;fy.default=fy;kJ.exports=fy;if(typeof process!="undefined"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");ha.convert=t;let e=/^[a-z]:\//i;ha.isNotRelative=r=>e.test(r)||NJ(r)}});var OJ=E((Git,MJ)=>{"use strict";MJ.exports=t=>{let e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")}});var qJ=E((jit,yx)=>{"use strict";var{promisify:xQe}=require("util"),KJ=require("fs"),pa=require("path"),UJ=gy(),kQe=TJ(),sp=OJ(),HJ=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],PQe=xQe(KJ.readFile),DQe=t=>e=>e.startsWith("!")?"!"+pa.posix.join(t,e.slice(1)):pa.posix.join(t,e),RQe=(t,e)=>{let r=sp(pa.relative(e.cwd,pa.dirname(e.fileName)));return t.split(/\r?\n/).filter(Boolean).filter(i=>!i.startsWith("#")).map(DQe(r))},GJ=t=>{let e=kQe();for(let r of t)e.add(RQe(r.content,{cwd:r.cwd,fileName:r.filePath}));return e},FQe=(t,e)=>{if(t=sp(t),pa.isAbsolute(e)){if(sp(e).startsWith(t))return e;throw new Error(`Path ${e} is not in cwd ${t}`)}return pa.join(t,e)},jJ=(t,e)=>r=>t.ignores(sp(pa.relative(e,FQe(e,r.path||r)))),NQe=async(t,e)=>{let r=pa.join(e,t),i=await PQe(r,"utf8");return{cwd:e,filePath:r,content:i}},LQe=(t,e)=>{let r=pa.join(e,t),i=KJ.readFileSync(r,"utf8");return{cwd:e,filePath:r,content:i}},YJ=({ignore:t=[],cwd:e=sp(process.cwd())}={})=>({ignore:t,cwd:e});yx.exports=async t=>{t=YJ(t);let e=await UJ("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}),r=await Promise.all(e.map(n=>NQe(n,t.cwd))),i=GJ(r);return jJ(i,t.cwd)};yx.exports.sync=t=>{t=YJ(t);let r=UJ.sync("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}).map(n=>LQe(n,t.cwd)),i=GJ(r);return jJ(i,t.cwd)}});var VJ=E((Yit,JJ)=>{"use strict";var{Transform:TQe}=require("stream"),wx=class extends TQe{constructor(){super({objectMode:!0})}},WJ=class extends wx{constructor(e){super();this._filter=e}_transform(e,r,i){this._filter(e)&&this.push(e),i()}},zJ=class extends wx{constructor(){super();this._pushed=new Set}_transform(e,r,i){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),i()}};JJ.exports={FilterStream:WJ,UniqueStream:zJ}});var vx=E((qit,Ul)=>{"use strict";var _J=require("fs"),hy=QY(),MQe=wS(),py=gy(),dy=xJ(),Bx=qJ(),{FilterStream:OQe,UniqueStream:KQe}=VJ(),XJ=()=>!1,ZJ=t=>t[0]==="!",UQe=t=>{if(!t.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},HQe=(t={})=>{if(!t.cwd)return;let e;try{e=_J.statSync(t.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},GQe=t=>t.stats instanceof _J.Stats?t.path:t,Cy=(t,e)=>{t=hy([].concat(t)),UQe(t),HQe(e);let r=[];e=P({ignore:[],expandDirectories:!0},e);for(let[i,n]of t.entries()){if(ZJ(n))continue;let s=t.slice(i).filter(a=>ZJ(a)).map(a=>a.slice(1)),o=_(P({},e),{ignore:e.ignore.concat(s)});r.push({pattern:n,options:o})}return r},jQe=(t,e)=>{let r={};return t.options.cwd&&(r.cwd=t.options.cwd),Array.isArray(t.options.expandDirectories)?r=_(P({},r),{files:t.options.expandDirectories}):typeof t.options.expandDirectories=="object"&&(r=P(P({},r),t.options.expandDirectories)),e(t.pattern,r)},Qx=(t,e)=>t.options.expandDirectories?jQe(t,e):[t.pattern],$J=t=>t&&t.gitignore?Bx.sync({cwd:t.cwd,ignore:t.ignore}):XJ,bx=t=>e=>{let{options:r}=t;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=dy.sync(r.ignore)),{pattern:e,options:r}};Ul.exports=async(t,e)=>{let r=Cy(t,e),i=async()=>e&&e.gitignore?Bx({cwd:e.cwd,ignore:e.ignore}):XJ,n=async()=>{let l=await Promise.all(r.map(async c=>{let u=await Qx(c,dy);return Promise.all(u.map(bx(c)))}));return hy(...l)},[s,o]=await Promise.all([i(),n()]),a=await Promise.all(o.map(l=>py(l.pattern,l.options)));return hy(...a).filter(l=>!s(GQe(l)))};Ul.exports.sync=(t,e)=>{let r=Cy(t,e),i=[];for(let o of r){let a=Qx(o,dy.sync).map(bx(o));i.push(...a)}let n=$J(e),s=[];for(let o of i)s=hy(s,py.sync(o.pattern,o.options));return s.filter(o=>!n(o))};Ul.exports.stream=(t,e)=>{let r=Cy(t,e),i=[];for(let a of r){let l=Qx(a,dy.sync).map(bx(a));i.push(...l)}let n=$J(e),s=new OQe(a=>!n(a)),o=new KQe;return MQe(i.map(a=>py.stream(a.pattern,a.options))).pipe(s).pipe(o)};Ul.exports.generateGlobTasks=Cy;Ul.exports.hasMagic=(t,e)=>[].concat(t).some(r=>py.isDynamicPattern(r,e));Ul.exports.gitignore=Bx});var Ca=E((da,Dy)=>{"use strict";Object.defineProperty(da,"__esModule",{value:!0});var A3=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function ibe(t){return A3.includes(t)}var nbe=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...A3];function sbe(t){return nbe.includes(t)}var obe=["null","undefined","string","number","bigint","boolean","symbol"];function abe(t){return obe.includes(t)}function Hu(t){return e=>typeof e===t}var{toString:l3}=Object.prototype,mp=t=>{let e=l3.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&j.domElement(t))return"HTMLElement";if(sbe(e))return e},er=t=>e=>mp(e)===t;function j(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(j.observable(t))return"Observable";if(j.array(t))return"Array";if(j.buffer(t))return"Buffer";let e=mp(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}j.undefined=Hu("undefined");j.string=Hu("string");var Abe=Hu("number");j.number=t=>Abe(t)&&!j.nan(t);j.bigint=Hu("bigint");j.function_=Hu("function");j.null_=t=>t===null;j.class_=t=>j.function_(t)&&t.toString().startsWith("class ");j.boolean=t=>t===!0||t===!1;j.symbol=Hu("symbol");j.numericString=t=>j.string(t)&&!j.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));j.array=(t,e)=>Array.isArray(t)?j.function_(e)?t.every(e):!0:!1;j.buffer=t=>{var e,r,i,n;return(n=(i=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||i===void 0?void 0:i.call(r,t))!==null&&n!==void 0?n:!1};j.nullOrUndefined=t=>j.null_(t)||j.undefined(t);j.object=t=>!j.null_(t)&&(typeof t=="object"||j.function_(t));j.iterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};j.asyncIterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};j.generator=t=>j.iterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.asyncGenerator=t=>j.asyncIterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.nativePromise=t=>er("Promise")(t);var lbe=t=>{var e,r;return j.function_((e=t)===null||e===void 0?void 0:e.then)&&j.function_((r=t)===null||r===void 0?void 0:r.catch)};j.promise=t=>j.nativePromise(t)||lbe(t);j.generatorFunction=er("GeneratorFunction");j.asyncGeneratorFunction=t=>mp(t)==="AsyncGeneratorFunction";j.asyncFunction=t=>mp(t)==="AsyncFunction";j.boundFunction=t=>j.function_(t)&&!t.hasOwnProperty("prototype");j.regExp=er("RegExp");j.date=er("Date");j.error=er("Error");j.map=t=>er("Map")(t);j.set=t=>er("Set")(t);j.weakMap=t=>er("WeakMap")(t);j.weakSet=t=>er("WeakSet")(t);j.int8Array=er("Int8Array");j.uint8Array=er("Uint8Array");j.uint8ClampedArray=er("Uint8ClampedArray");j.int16Array=er("Int16Array");j.uint16Array=er("Uint16Array");j.int32Array=er("Int32Array");j.uint32Array=er("Uint32Array");j.float32Array=er("Float32Array");j.float64Array=er("Float64Array");j.bigInt64Array=er("BigInt64Array");j.bigUint64Array=er("BigUint64Array");j.arrayBuffer=er("ArrayBuffer");j.sharedArrayBuffer=er("SharedArrayBuffer");j.dataView=er("DataView");j.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;j.urlInstance=t=>er("URL")(t);j.urlString=t=>{if(!j.string(t))return!1;try{return new URL(t),!0}catch(e){return!1}};j.truthy=t=>Boolean(t);j.falsy=t=>!t;j.nan=t=>Number.isNaN(t);j.primitive=t=>j.null_(t)||abe(typeof t);j.integer=t=>Number.isInteger(t);j.safeInteger=t=>Number.isSafeInteger(t);j.plainObject=t=>{if(l3.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};j.typedArray=t=>ibe(mp(t));var cbe=t=>j.safeInteger(t)&&t>=0;j.arrayLike=t=>!j.nullOrUndefined(t)&&!j.function_(t)&&cbe(t.length);j.inRange=(t,e)=>{if(j.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(j.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var ube=1,gbe=["innerHTML","ownerDocument","style","attributes","nodeValue"];j.domElement=t=>j.object(t)&&t.nodeType===ube&&j.string(t.nodeName)&&!j.plainObject(t)&&gbe.every(e=>e in t);j.observable=t=>{var e,r,i,n;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((n=(i=t)["@@observable"])===null||n===void 0?void 0:n.call(i)):!1};j.nodeStream=t=>j.object(t)&&j.function_(t.pipe)&&!j.observable(t);j.infinite=t=>t===Infinity||t===-Infinity;var c3=t=>e=>j.integer(e)&&Math.abs(e%2)===t;j.evenInteger=c3(0);j.oddInteger=c3(1);j.emptyArray=t=>j.array(t)&&t.length===0;j.nonEmptyArray=t=>j.array(t)&&t.length>0;j.emptyString=t=>j.string(t)&&t.length===0;j.nonEmptyString=t=>j.string(t)&&t.length>0;var fbe=t=>j.string(t)&&!/\S/.test(t);j.emptyStringOrWhitespace=t=>j.emptyString(t)||fbe(t);j.emptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length===0;j.nonEmptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length>0;j.emptySet=t=>j.set(t)&&t.size===0;j.nonEmptySet=t=>j.set(t)&&t.size>0;j.emptyMap=t=>j.map(t)&&t.size===0;j.nonEmptyMap=t=>j.map(t)&&t.size>0;j.propertyKey=t=>j.any([j.string,j.number,j.symbol],t);j.formData=t=>er("FormData")(t);j.urlSearchParams=t=>er("URLSearchParams")(t);var u3=(t,e,r)=>{if(!j.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};j.any=(t,...e)=>(j.array(t)?t:[t]).some(i=>u3(Array.prototype.some,i,e));j.all=(t,...e)=>u3(Array.prototype.every,t,e);var Te=(t,e,r,i={})=>{if(!t){let{multipleValues:n}=i,s=n?`received values of types ${[...new Set(r.map(o=>`\`${j(o)}\``))].join(", ")}`:`received value of type \`${j(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${s}.`)}};da.assert={undefined:t=>Te(j.undefined(t),"undefined",t),string:t=>Te(j.string(t),"string",t),number:t=>Te(j.number(t),"number",t),bigint:t=>Te(j.bigint(t),"bigint",t),function_:t=>Te(j.function_(t),"Function",t),null_:t=>Te(j.null_(t),"null",t),class_:t=>Te(j.class_(t),"Class",t),boolean:t=>Te(j.boolean(t),"boolean",t),symbol:t=>Te(j.symbol(t),"symbol",t),numericString:t=>Te(j.numericString(t),"string with a number",t),array:(t,e)=>{Te(j.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>Te(j.buffer(t),"Buffer",t),nullOrUndefined:t=>Te(j.nullOrUndefined(t),"null or undefined",t),object:t=>Te(j.object(t),"Object",t),iterable:t=>Te(j.iterable(t),"Iterable",t),asyncIterable:t=>Te(j.asyncIterable(t),"AsyncIterable",t),generator:t=>Te(j.generator(t),"Generator",t),asyncGenerator:t=>Te(j.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>Te(j.nativePromise(t),"native Promise",t),promise:t=>Te(j.promise(t),"Promise",t),generatorFunction:t=>Te(j.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>Te(j.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>Te(j.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>Te(j.boundFunction(t),"Function",t),regExp:t=>Te(j.regExp(t),"RegExp",t),date:t=>Te(j.date(t),"Date",t),error:t=>Te(j.error(t),"Error",t),map:t=>Te(j.map(t),"Map",t),set:t=>Te(j.set(t),"Set",t),weakMap:t=>Te(j.weakMap(t),"WeakMap",t),weakSet:t=>Te(j.weakSet(t),"WeakSet",t),int8Array:t=>Te(j.int8Array(t),"Int8Array",t),uint8Array:t=>Te(j.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>Te(j.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>Te(j.int16Array(t),"Int16Array",t),uint16Array:t=>Te(j.uint16Array(t),"Uint16Array",t),int32Array:t=>Te(j.int32Array(t),"Int32Array",t),uint32Array:t=>Te(j.uint32Array(t),"Uint32Array",t),float32Array:t=>Te(j.float32Array(t),"Float32Array",t),float64Array:t=>Te(j.float64Array(t),"Float64Array",t),bigInt64Array:t=>Te(j.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>Te(j.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>Te(j.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>Te(j.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>Te(j.dataView(t),"DataView",t),urlInstance:t=>Te(j.urlInstance(t),"URL",t),urlString:t=>Te(j.urlString(t),"string with a URL",t),truthy:t=>Te(j.truthy(t),"truthy",t),falsy:t=>Te(j.falsy(t),"falsy",t),nan:t=>Te(j.nan(t),"NaN",t),primitive:t=>Te(j.primitive(t),"primitive",t),integer:t=>Te(j.integer(t),"integer",t),safeInteger:t=>Te(j.safeInteger(t),"integer",t),plainObject:t=>Te(j.plainObject(t),"plain object",t),typedArray:t=>Te(j.typedArray(t),"TypedArray",t),arrayLike:t=>Te(j.arrayLike(t),"array-like",t),domElement:t=>Te(j.domElement(t),"HTMLElement",t),observable:t=>Te(j.observable(t),"Observable",t),nodeStream:t=>Te(j.nodeStream(t),"Node.js Stream",t),infinite:t=>Te(j.infinite(t),"infinite number",t),emptyArray:t=>Te(j.emptyArray(t),"empty array",t),nonEmptyArray:t=>Te(j.nonEmptyArray(t),"non-empty array",t),emptyString:t=>Te(j.emptyString(t),"empty string",t),nonEmptyString:t=>Te(j.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>Te(j.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>Te(j.emptyObject(t),"empty object",t),nonEmptyObject:t=>Te(j.nonEmptyObject(t),"non-empty object",t),emptySet:t=>Te(j.emptySet(t),"empty set",t),nonEmptySet:t=>Te(j.nonEmptySet(t),"non-empty set",t),emptyMap:t=>Te(j.emptyMap(t),"empty map",t),nonEmptyMap:t=>Te(j.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>Te(j.propertyKey(t),"PropertyKey",t),formData:t=>Te(j.formData(t),"FormData",t),urlSearchParams:t=>Te(j.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>Te(j.evenInteger(t),"even integer",t),oddInteger:t=>Te(j.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>Te(j.directInstanceOf(t,e),"T",t),inRange:(t,e)=>Te(j.inRange(t,e),"in range",t),any:(t,...e)=>Te(j.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>Te(j.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(j,{class:{value:j.class_},function:{value:j.function_},null:{value:j.null_}});Object.defineProperties(da.assert,{class:{value:da.assert.class_},function:{value:da.assert.function_},null:{value:da.assert.null_}});da.default=j;Dy.exports=j;Dy.exports.default=j;Dy.exports.assert=da.assert});var g3=E((gnt,Ux)=>{"use strict";var Hx=class extends Error{constructor(e){super(e||"Promise was canceled");this.name="CancelError"}get isCanceled(){return!0}},Ep=class{static fn(e){return(...r)=>new Ep((i,n,s)=>{r.push(s),e(...r).then(i,n)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,i)=>{this._reject=i;let n=a=>{this._isPending=!1,r(a)},s=a=>{this._isPending=!1,i(a)},o=a=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(a)};return Object.defineProperties(o,{shouldReject:{get:()=>this._rejectOnCancel,set:a=>{this._rejectOnCancel=a}}}),e(n,s,o)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new Hx(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(Ep.prototype,Promise.prototype);Ux.exports=Ep;Ux.exports.CancelError=Hx});var f3=E((Gx,jx)=>{"use strict";Object.defineProperty(Gx,"__esModule",{value:!0});var hbe=require("tls"),Yx=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let i=typeof r.connect=="function",n=typeof r.secureConnect=="function",s=typeof r.close=="function",o=()=>{i&&r.connect(),t instanceof hbe.TLSSocket&&n&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),s&&t.once("close",r.close)};t.writable&&!t.connecting?o():t.connecting?t.once("connect",o):t.destroyed&&s&&r.close(t._hadError)};Gx.default=Yx;jx.exports=Yx;jx.exports.default=Yx});var h3=E((qx,Jx)=>{"use strict";Object.defineProperty(qx,"__esModule",{value:!0});var pbe=f3(),dbe=Number(process.versions.node.split(".")[0]),Wx=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=o=>{let a=o.emit.bind(o);o.emit=(l,...c)=>(l==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,o.emit=a),a(l,...c))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||dbe>=13)&&(e.phases.total=Date.now()-e.start)});let i=o=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let a=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};o.prependOnceListener("lookup",a),pbe.default(o,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(o.removeListener("lookup",a),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?i(t.socket):t.prependOnceListener("socket",i);let n=()=>{var o;e.upload=Date.now(),e.phases.request=e.upload-(o=e.secureConnect,o!=null?o:e.connect)};return(()=>typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?n():t.prependOnceListener("finish",n),t.prependOnceListener("response",o=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,o.timings=e,r(o),o.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};qx.default=Wx;Jx.exports=Wx;Jx.exports.default=Wx});var y3=E((fnt,zx)=>{"use strict";var{V4MAPPED:Cbe,ADDRCONFIG:mbe,ALL:p3,promises:{Resolver:d3},lookup:Ebe}=require("dns"),{promisify:Vx}=require("util"),Ibe=require("os"),Gu=Symbol("cacheableLookupCreateConnection"),_x=Symbol("cacheableLookupInstance"),C3=Symbol("expires"),ybe=typeof p3=="number",m3=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},wbe=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},E3=()=>{let t=!1,e=!1;for(let r of Object.values(Ibe.networkInterfaces()))for(let i of r)if(!i.internal&&(i.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Bbe=t=>Symbol.iterator in t,I3={ttl:!0},Qbe={all:!0},Xx=class{constructor({cache:e=new Map,maxTtl:r=Infinity,fallbackDuration:i=3600,errorTtl:n=.15,resolver:s=new d3,lookup:o=Ebe}={}){if(this.maxTtl=r,this.errorTtl=n,this._cache=e,this._resolver=s,this._dnsLookup=Vx(o),this._resolver instanceof d3?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=Vx(this._resolver.resolve4.bind(this._resolver)),this._resolve6=Vx(this._resolver.resolve6.bind(this._resolver))),this._iface=E3(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,i<1)this._fallback=!1;else{this._fallback=!0;let a=setInterval(()=>{this._hostnamesToFallback.clear()},i*1e3);a.unref&&a.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,i){if(typeof r=="function"?(i=r,r={}):typeof r=="number"&&(r={family:r}),!i)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(n=>{r.all?i(null,n):i(null,n.address,n.family,n.expires,n.ttl)},i)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let i=await this.query(e);if(r.family===6){let n=i.filter(s=>s.family===6);r.hints&Cbe&&(ybe&&r.hints&p3||n.length===0)?wbe(i):i=n}else r.family===4&&(i=i.filter(n=>n.family===4));if(r.hints&mbe){let{_iface:n}=this;i=i.filter(s=>s.family===6?n.has6:n.has4)}if(i.length===0){let n=new Error(`cacheableLookup ENOTFOUND ${e}`);throw n.code="ENOTFOUND",n.hostname=e,n}return r.all?i:i[0]}async query(e){let r=await this._cache.get(e);if(!r){let i=this._pending[e];if(i)r=await i;else{let n=this.queryAndCache(e);this._pending[e]=n,r=await n}}return r=r.map(i=>P({},i)),r}async _resolve(e){let r=async c=>{try{return await c}catch(u){if(u.code==="ENODATA"||u.code==="ENOTFOUND")return[];throw u}},[i,n]=await Promise.all([this._resolve4(e,I3),this._resolve6(e,I3)].map(c=>r(c))),s=0,o=0,a=0,l=Date.now();for(let c of i)c.family=4,c.expires=l+c.ttl*1e3,s=Math.max(s,c.ttl);for(let c of n)c.family=6,c.expires=l+c.ttl*1e3,o=Math.max(o,c.ttl);return i.length>0?n.length>0?a=Math.min(s,o):a=s:a=o,{entries:[...i,...n],cacheTtl:a}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch(r){return{entries:[],cacheTtl:0}}}async _set(e,r,i){if(this.maxTtl>0&&i>0){i=Math.min(i,this.maxTtl)*1e3,r[C3]=Date.now()+i;try{await this._cache.set(e,r,i)}catch(n){this.lookupAsync=async()=>{let s=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw s.cause=n,s}}Bbe(this._cache)&&this._tick(i)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Qbe);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let i=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,i),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let i=Infinity,n=Date.now();for(let[s,o]of this._cache){let a=o[C3];n>=a?this._cache.delete(s):a("lookup"in r||(r.lookup=this.lookup),e[Gu](r,i))}uninstall(e){if(m3(e),e[Gu]){if(e[_x]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[Gu],delete e[Gu],delete e[_x]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=E3(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};zx.exports=Xx;zx.exports.default=Xx});var Q3=E((hnt,Zx)=>{"use strict";var bbe=typeof URL=="undefined"?require("url").URL:URL,vbe="text/plain",Sbe="us-ascii",w3=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),xbe=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let i=r[1].split(";"),n=r[2],s=e?"":r[3],o=!1;i[i.length-1]==="base64"&&(i.pop(),o=!0);let a=(i.shift()||"").toLowerCase(),c=[...i.map(u=>{let[g,f=""]=u.split("=").map(h=>h.trim());return g==="charset"&&(f=f.toLowerCase(),f===Sbe)?"":`${g}${f?`=${f}`:""}`}).filter(Boolean)];return o&&c.push("base64"),(c.length!==0||a&&a!==vbe)&&c.unshift(a),`data:${c.join(";")},${o?n.trim():n}${s?`#${s}`:""}`},B3=(t,e)=>{if(e=P({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return xbe(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new bbe(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?!:).|^)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];w3(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])w3(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,"")),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};Zx.exports=B3;Zx.exports.default=B3});var S3=E((pnt,b3)=>{b3.exports=v3;function v3(t,e){if(t&&e)return v3(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(i){r[i]=t[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var x3=S3();$x.exports=x3(Ry);$x.exports.strict=x3(k3);Ry.proto=Ry(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Ry(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return k3(this)},configurable:!0})});function Ry(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function k3(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var tk=E((Cnt,P3)=>{var kbe=ek(),Pbe=function(){},Dbe=function(t){return t.setHeader&&typeof t.abort=="function"},Rbe=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},D3=function(t,e,r){if(typeof e=="function")return D3(t,null,e);e||(e={}),r=kbe(r||Pbe);var i=t._writableState,n=t._readableState,s=e.readable||e.readable!==!1&&t.readable,o=e.writable||e.writable!==!1&&t.writable,a=function(){t.writable||l()},l=function(){o=!1,s||r.call(t)},c=function(){s=!1,o||r.call(t)},u=function(p){r.call(t,p?new Error("exited with error code: "+p):null)},g=function(p){r.call(t,p)},f=function(){if(s&&!(n&&n.ended))return r.call(t,new Error("premature close"));if(o&&!(i&&i.ended))return r.call(t,new Error("premature close"))},h=function(){t.req.on("finish",l)};return Dbe(t)?(t.on("complete",l),t.on("abort",f),t.req?h():t.on("request",h)):o&&!i&&(t.on("end",a),t.on("close",a)),Rbe(t)&&t.on("exit",u),t.on("end",c),t.on("finish",l),e.error!==!1&&t.on("error",g),t.on("close",f),function(){t.removeListener("complete",l),t.removeListener("abort",f),t.removeListener("request",h),t.req&&t.req.removeListener("finish",l),t.removeListener("end",a),t.removeListener("close",a),t.removeListener("finish",l),t.removeListener("exit",u),t.removeListener("end",c),t.removeListener("error",g),t.removeListener("close",f)}};P3.exports=D3});var N3=E((mnt,R3)=>{var Fbe=ek(),Nbe=tk(),rk=require("fs"),Ip=function(){},Lbe=/^v?\.0/.test(process.version),Fy=function(t){return typeof t=="function"},Tbe=function(t){return!Lbe||!rk?!1:(t instanceof(rk.ReadStream||Ip)||t instanceof(rk.WriteStream||Ip))&&Fy(t.close)},Mbe=function(t){return t.setHeader&&Fy(t.abort)},Obe=function(t,e,r,i){i=Fbe(i);var n=!1;t.on("close",function(){n=!0}),Nbe(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,Tbe(t))return t.close(Ip);if(Mbe(t))return t.abort();if(Fy(t.destroy))return t.destroy();i(o||new Error("stream was destroyed"))}}},F3=function(t){t()},Kbe=function(t,e){return t.pipe(e)},Ube=function(){var t=Array.prototype.slice.call(arguments),e=Fy(t[t.length-1]||Ip)&&t.pop()||Ip;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,i=t.map(function(n,s){var o=s0;return Obe(n,o,a,function(l){r||(r=l),l&&i.forEach(F3),!o&&(i.forEach(F3),e(r))})});return t.reduce(Kbe)};R3.exports=Ube});var T3=E((Ent,L3)=>{"use strict";var{PassThrough:Hbe}=require("stream");L3.exports=t=>{t=P({},t);let{array:e}=t,{encoding:r}=t,i=r==="buffer",n=!1;e?n=!(r||i):r=r||"utf8",i&&(r=null);let s=new Hbe({objectMode:n});r&&s.setEncoding(r);let o=0,a=[];return s.on("data",l=>{a.push(l),n?o=a.length:o+=l.length}),s.getBufferedValue=()=>e?a:i?Buffer.concat(a,o):a.join(""),s.getBufferedLength=()=>o,s}});var M3=E((Int,ju)=>{"use strict";var Gbe=N3(),jbe=T3(),ik=class extends Error{constructor(){super("maxBuffer exceeded");this.name="MaxBufferError"}};async function Ny(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e=P({maxBuffer:Infinity},e);let{maxBuffer:r}=e,i;return await new Promise((n,s)=>{let o=a=>{a&&(a.bufferedData=i.getBufferedValue()),s(a)};i=Gbe(t,jbe(e),a=>{if(a){o(a);return}n()}),i.on("data",()=>{i.getBufferedLength()>r&&o(new ik)})}),i.getBufferedValue()}ju.exports=Ny;ju.exports.default=Ny;ju.exports.buffer=(t,e)=>Ny(t,_(P({},e),{encoding:"buffer"}));ju.exports.array=(t,e)=>Ny(t,_(P({},e),{array:!0}));ju.exports.MaxBufferError=ik});var K3=E((wnt,O3)=>{"use strict";var Ybe=[200,203,204,206,300,301,404,405,410,414,501],qbe=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],Jbe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},Wbe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function nk(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let i of r){let[n,s]=i.split(/\s*=\s*/,2);e[n]=s===void 0?!0:s.replace(/^"|"$/g,"")}return e}function zbe(t){let e=[];for(let r in t){let i=t[r];e.push(i===!0?r:r+"="+i)}if(!!e.length)return e.join(", ")}O3.exports=class{constructor(e,r,{shared:i,cacheHeuristic:n,immutableMinTimeToLive:s,ignoreCargoCult:o,trustServerDate:a,_fromObject:l}={}){if(l){this._fromObject(l);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=i!==!1,this._trustServerDate=a!==void 0?a:!0,this._cacheHeuristic=n!==void 0?n:.1,this._immutableMinTtl=s!==void 0?s:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=nk(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=nk(e.headers["cache-control"]),o&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":zbe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!r.headers["cache-control"]&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&qbe.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||Ybe.indexOf(this._status)!==-1))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=nk(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let i of r)if(e.headers[i]!==this._reqHeaders[i])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let i in e)Jbe[i]||(r[i]=e[i]);if(e.connection){let i=e.connection.trim().split(/\s*,\s*/);for(let n of i)delete r[n]}if(r.warning){let i=r.warning.split(/,/).filter(n=>!/^\s*1[0-9][0-9]/.test(n));i.length?r.warning=i.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){return this._trustServerDate?this._serverDate():this._responseTime}_serverDate(){let e=Date.parse(this._resHeaders.date);if(isFinite(e)){let r=8*3600*1e3;if(Math.abs(this._responseTime-e)e&&(e=i)}let r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){let e=parseInt(this._resHeaders.age);return isFinite(e)?e:0}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this._serverDate();if(this._resHeaders.expires){let i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||ii)return Math.max(e,(r-i)/1e3*this._cacheHeuristic)}return e}timeToLive(){return Math.max(0,this.maxAge()-this.age())*1e3}stale(){return this.maxAge()<=this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let n=r["if-none-match"].split(/,/).filter(s=>!/^\s*W\//.test(s));n.length?r["if-none-match"]=n.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),!r||!r.headers)throw Error("Response headers missing");let i=!1;if(r.status!==void 0&&r.status!=304?i=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let n={};for(let o in this._resHeaders)n[o]=o in r.headers&&!Wbe[o]?r.headers[o]:this._resHeaders[o];let s=Object.assign({},r,{status:this._status,method:this._method,headers:n});return{policy:new this.constructor(e,s,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl,trustServerDate:this._trustServerDate}),modified:!1,matches:!0}}}});var Ly=E((Bnt,U3)=>{"use strict";U3.exports=t=>{let e={};for(let[r,i]of Object.entries(t))e[r.toLowerCase()]=i;return e}});var j3=E((Qnt,H3)=>{"use strict";var Vbe=require("stream").Readable,_be=Ly(),G3=class extends Vbe{constructor(e,r,i,n){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(i instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof n!="string")throw new TypeError("Argument `url` should be a string");super();this.statusCode=e,this.headers=_be(r),this.body=i,this.url=n}_read(){this.push(this.body),this.push(null)}};H3.exports=G3});var q3=E((bnt,Y3)=>{"use strict";var Xbe=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Y3.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Xbe));for(let i of r)i in e||(e[i]=typeof t[i]=="function"?t[i].bind(t):t[i])}});var W3=E((vnt,J3)=>{"use strict";var Zbe=require("stream").PassThrough,$be=q3(),eve=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Zbe;return $be(t,e),t.pipe(e)};J3.exports=eve});var z3=E(sk=>{sk.stringify=function t(e){if(typeof e=="undefined")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",i=Array.isArray(e);r=i?"[":"{";var n=!0;for(var s in e){var o=typeof e[s]=="function"||!i&&typeof e[s]=="undefined";Object.hasOwnProperty.call(e,s)&&!o&&(n||(r+=","),n=!1,i?e[s]==null?r+="null":r+=t(e[s]):e[s]!==void 0&&(r+=t(s)+":"+t(e[s])))}return r+=i?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e=="undefined"?"null":JSON.stringify(e)};sk.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var Z3=E((xnt,V3)=>{"use strict";var tve=require("events"),_3=z3(),rve=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(require(e[r]))(t)}return new Map},X3=class extends tve{constructor(e,r){super();if(this.opts=Object.assign({namespace:"keyv",serialize:_3.stringify,deserialize:_3.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let i=Object.assign({},this.opts);this.opts.store=rve(i)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",i=>this.emit("error",i)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:i}=this.opts;return Promise.resolve().then(()=>i.get(e)).then(n=>typeof n=="string"?this.opts.deserialize(n):n).then(n=>{if(n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(e);return}return r&&r.raw?n:n.value}})}set(e,r,i){e=this._getKeyPrefix(e),typeof i=="undefined"&&(i=this.opts.ttl),i===0&&(i=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let s=typeof i=="number"?Date.now()+i:null;return r={value:r,expires:s},this.opts.serialize(r)}).then(s=>n.set(e,s,i)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};V3.exports=X3});var tW=E((knt,$3)=>{"use strict";var ive=require("events"),Ty=require("url"),nve=Q3(),sve=M3(),ok=K3(),eW=j3(),ove=Ly(),ave=W3(),Ave=Z3(),yo=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Ave({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,i)=>{let n;if(typeof r=="string")n=ak(Ty.parse(r)),r={};else if(r instanceof Ty.URL)n=ak(Ty.parse(r.toString())),r={};else{let[g,...f]=(r.path||"").split("?"),h=f.length>0?`?${f.join("?")}`:"";n=ak(_(P({},r),{pathname:g,search:h}))}r=P(P({headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1},r),lve(n)),r.headers=ove(r.headers);let s=new ive,o=nve(Ty.format(n),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),a=`${r.method}:${o}`,l=!1,c=!1,u=g=>{c=!0;let f=!1,h,p=new Promise(m=>{h=()=>{f||(f=!0,m())}}),d=m=>{if(l&&!g.forceRefresh){m.status=m.statusCode;let B=ok.fromObject(l.cachePolicy).revalidatedPolicy(g,m);if(!B.modified){let b=B.policy.responseHeaders();m=new eW(l.statusCode,b,l.body,l.url),m.cachePolicy=B.policy,m.fromCache=!0}}m.fromCache||(m.cachePolicy=new ok(g,m,g),m.fromCache=!1);let I;g.cache&&m.cachePolicy.storable()?(I=ave(m),(async()=>{try{let B=sve.buffer(m);if(await Promise.race([p,new Promise(L=>m.once("end",L))]),f)return;let b=await B,R={cachePolicy:m.cachePolicy.toObject(),url:m.url,statusCode:m.fromCache?l.statusCode:m.statusCode,body:b},H=g.strictTtl?m.cachePolicy.timeToLive():void 0;g.maxTtl&&(H=H?Math.min(H,g.maxTtl):g.maxTtl),await this.cache.set(a,R,H)}catch(B){s.emit("error",new yo.CacheError(B))}})()):g.cache&&l&&(async()=>{try{await this.cache.delete(a)}catch(B){s.emit("error",new yo.CacheError(B))}})(),s.emit("response",I||m),typeof i=="function"&&i(I||m)};try{let m=e(g,d);m.once("error",h),m.once("abort",h),s.emit("request",m)}catch(m){s.emit("error",new yo.RequestError(m))}};return(async()=>{let g=async h=>{await Promise.resolve();let p=h.cache?await this.cache.get(a):void 0;if(typeof p=="undefined")return u(h);let d=ok.fromObject(p.cachePolicy);if(d.satisfiesWithoutRevalidation(h)&&!h.forceRefresh){let m=d.responseHeaders(),I=new eW(p.statusCode,m,p.body,p.url);I.cachePolicy=d,I.fromCache=!0,s.emit("response",I),typeof i=="function"&&i(I)}else l=p,h.headers=d.revalidationHeaders(h),u(h)},f=h=>s.emit("error",new yo.CacheError(h));this.cache.once("error",f),s.on("response",()=>this.cache.removeListener("error",f));try{await g(r)}catch(h){r.automaticFailover&&!c&&u(r),s.emit("error",new yo.CacheError(h))}})(),s}}};function lve(t){let e=P({},t);return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function ak(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}yo.RequestError=class extends Error{constructor(t){super(t.message);this.name="RequestError",Object.assign(this,t)}};yo.CacheError=class extends Error{constructor(t){super(t.message);this.name="CacheError",Object.assign(this,t)}};$3.exports=yo});var iW=E((Pnt,rW)=>{"use strict";var cve=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];rW.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(cve)),i={};for(let n of r)n in e||(i[n]={get(){let s=t[n];return typeof s=="function"?s.bind(t):s},set(s){t[n]=s},enumerable:!0,configurable:!1});return Object.defineProperties(e,i),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var sW=E((Dnt,nW)=>{"use strict";var{Transform:uve,PassThrough:gve}=require("stream"),Ak=require("zlib"),fve=iW();nW.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof Ak.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let i=!0,n=new uve({transform(a,l,c){i=!1,c(null,a)},flush(a){a()}}),s=new gve({autoDestroy:!1,destroy(a,l){t.destroy(),l(a)}}),o=r?Ak.createBrotliDecompress():Ak.createUnzip();return o.once("error",a=>{if(i&&!t.readable){s.end();return}s.destroy(a)}),fve(t,s),t.pipe(n).pipe(o).pipe(s),s}});var lk=E((Rnt,oW)=>{"use strict";var aW=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[i,n]of this.oldCache.entries())this.onEviction(i,n);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};oW.exports=aW});var uk=E((Fnt,AW)=>{"use strict";var hve=require("events"),pve=require("tls"),dve=require("http2"),Cve=lk(),_i=Symbol("currentStreamsCount"),lW=Symbol("request"),ns=Symbol("cachedOriginSet"),Yu=Symbol("gracefullyClosing"),mve=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],Eve=(t,e,r)=>{let i=0,n=t.length;for(;i>>1;r(t[s],e)?i=s+1:n=s}return i},Ive=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,ck=(t,e)=>{for(let r of t)r[ns].lengthe[ns].includes(i))&&r[_i]+e[_i]<=e.remoteSettings.maxConcurrentStreams&&cW(r)},yve=(t,e)=>{for(let r of t)e[ns].lengthr[ns].includes(i))&&e[_i]+r[_i]<=r.remoteSettings.maxConcurrentStreams&&cW(e)},uW=({agent:t,isFree:e})=>{let r={};for(let i in t.sessions){let s=t.sessions[i].filter(o=>{let a=o[ma.kCurrentStreamsCount]{t[Yu]=!0,t[_i]===0&&t.close()},ma=class extends hve{constructor({timeout:e=6e4,maxSessions:r=Infinity,maxFreeSessions:i=10,maxCachedTlsSessions:n=100}={}){super();this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=i,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Cve({maxSize:n})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let i of mve)e[i]&&(r+=`:${e[i]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let i=this.queue[e][r];this._sessionsCount{Array.isArray(i)?(i=[...i],n()):i=[{resolve:n,reject:s}];let o=this.normalizeOptions(r),a=ma.normalizeOrigin(e,r&&r.servername);if(a===void 0){for(let{reject:u}of i)u(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(o in this.sessions){let u=this.sessions[o],g=-1,f=-1,h;for(let p of u){let d=p.remoteSettings.maxConcurrentStreams;if(d=d||p[Yu]||p.destroyed)continue;h||(g=d),m>f&&(h=p,f=m)}}if(h){if(i.length!==1){for(let{reject:p}of i){let d=new Error(`Expected the length of listeners to be 1, got ${i.length}. -Please report this to https://github.com/szmarczak/http2-wrapper/`);p(d)}return}i[0].resolve(h);return}}if(o in this.queue){if(a in this.queue[o]){this.queue[o][a].listeners.push(...i),this._tryToCreateNewSession(o,a);return}}else this.queue[o]={};let l=()=>{o in this.queue&&this.queue[o][a]===c&&(delete this.queue[o][a],Object.keys(this.queue[o]).length===0&&delete this.queue[o])},c=()=>{let u=`${a}:${o}`,g=!1;try{let f=dve.connect(e,P({createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(u)},r));f[_i]=0,f[Yu]=!1;let h=()=>f[_i]{this.tlsSessionCache.set(u,m)}),f.once("error",m=>{for(let{reject:I}of i)I(m);this.tlsSessionCache.delete(u)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(g){p&&this._freeSessionsCount--,this._sessionsCount--;let m=this.sessions[o];m.splice(m.indexOf(f),1),m.length===0&&delete this.sessions[o]}else{let m=new Error("Session closed without receiving a SETTINGS frame");m.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:I}of i)I(m);l()}this._tryToCreateNewSession(o,a)});let d=()=>{if(!(!(o in this.queue)||!h())){for(let m of f[ns])if(m in this.queue[o]){let{listeners:I}=this.queue[o][m];for(;I.length!==0&&h();)I.shift().resolve(f);let B=this.queue[o];if(B[m].listeners.length===0&&(delete B[m],Object.keys(B).length===0)){delete this.queue[o];break}if(!h())break}}};f.on("origin",()=>{f[ns]=f.originSet,!!h()&&(d(),ck(this.sessions[o],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let m=new Error("Agent has been destroyed");for(let I of i)I.reject(m);f.destroy();return}f[ns]=f.originSet;{let m=this.sessions;if(o in m){let I=m[o];I.splice(Eve(I,f,Ive),0,f)}else m[o]=[f]}this._freeSessionsCount+=1,g=!0,this.emit("session",f),d(),l(),f[_i]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),i.length!==0&&(this.getSession(a,r,i),i.length=0),f.on("remoteSettings",()=>{d(),ck(this.sessions[o],f)})}),f[lW]=f.request,f.request=(m,I)=>{if(f[Yu])throw new Error("The session is gracefully closing. No new streams are allowed.");let B=f[lW](m,I);return f.ref(),++f[_i],f[_i]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,B.once("close",()=>{if(p=h(),--f[_i],!f.destroyed&&!f.closed&&(yve(this.sessions[o],f),h()&&!f.closed)){p||(this._freeSessionsCount++,p=!0);let b=f[_i]===0;b&&f.unref(),b&&(this._freeSessionsCount>this.maxFreeSessions||f[Yu])?f.close():(ck(this.sessions[o],f),d())}}),B}}catch(f){for(let h of i)h.reject(f);l()}};c.listeners=i,c.completed=!1,c.destroyed=!1,this.queue[o][a]=c,this._tryToCreateNewSession(o,a)})}request(e,r,i,n){return new Promise((s,o)=>{this.getSession(e,r,[{reject:o,resolve:a=>{try{s(a.request(i,n))}catch(l){o(l)}}}])})}createConnection(e,r){return ma.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let i=e.port||443,n=e.hostname||e.host;return typeof r.servername=="undefined"&&(r.servername=n),pve.connect(i,n,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[_i]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let i of r)i.destroy(e);for(let r of Object.values(this.queue))for(let i of Object.values(r))i.destroyed=!0;this.queue={}}get freeSessions(){return uW({agent:this,isFree:!0})}get busySessions(){return uW({agent:this,isFree:!1})}};ma.kCurrentStreamsCount=_i;ma.kGracefullyClosing=Yu;AW.exports={Agent:ma,globalAgent:new ma}});var gk=E((Nnt,gW)=>{"use strict";var{Readable:wve}=require("stream"),fW=class extends wve{constructor(e,r){super({highWaterMark:r,autoDestroy:!1});this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};gW.exports=fW});var fk=E((Lnt,hW)=>{"use strict";hW.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var dW=E((Tnt,pW)=>{"use strict";pW.exports=(t,e,r)=>{for(let i of r)t.on(i,(...n)=>e.emit(i,...n))}});var mW=E((Mnt,CW)=>{"use strict";CW.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var IW=E((Knt,EW)=>{"use strict";var qu=(t,e,r)=>{EW.exports[e]=class extends t{constructor(...n){super(typeof r=="string"?r:r(n));this.name=`${super.name} [${e}]`,this.code=e}}};qu(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],i=Array.isArray(r);return i&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${i?"one of":"of"} type ${r}. Received ${typeof t[2]}`});qu(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);qu(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);qu(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);qu(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);qu(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var Ck=E((Unt,yW)=>{"use strict";var Bve=require("http2"),{Writable:Qve}=require("stream"),{Agent:wW,globalAgent:bve}=uk(),vve=gk(),Sve=fk(),xve=dW(),kve=mW(),{ERR_INVALID_ARG_TYPE:hk,ERR_INVALID_PROTOCOL:Pve,ERR_HTTP_HEADERS_SENT:BW,ERR_INVALID_HTTP_TOKEN:Dve,ERR_HTTP_INVALID_HEADER_VALUE:Rve,ERR_INVALID_CHAR:Fve}=IW(),{HTTP2_HEADER_STATUS:QW,HTTP2_HEADER_METHOD:bW,HTTP2_HEADER_PATH:vW,HTTP2_METHOD_CONNECT:Nve}=Bve.constants,Pi=Symbol("headers"),pk=Symbol("origin"),dk=Symbol("session"),SW=Symbol("options"),My=Symbol("flushedHeaders"),yp=Symbol("jobs"),Lve=/^[\^`\-\w!#$%&*+.|~]+$/,Tve=/[^\t\u0020-\u007E\u0080-\u00FF]/,xW=class extends Qve{constructor(e,r,i){super({autoDestroy:!1});let n=typeof e=="string"||e instanceof URL;if(n&&(e=Sve(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(i=r,r=n?e:P({},e)):r=P(P({},e),r),r.h2session)this[dk]=r.h2session;else if(r.agent===!1)this.agent=new wW({maxFreeSessions:0});else if(typeof r.agent=="undefined"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new wW({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=bve;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new hk("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Pve(r.protocol,"https:");let s=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,o=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:a}=r;if(r.timeout=void 0,this[Pi]=Object.create(null),this[yp]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[l,c]of Object.entries(r.headers))this.setHeader(l,c);r.auth&&!("authorization"in this[Pi])&&(this[Pi].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[SW]=r,s===443?(this[pk]=`https://${o}`,":authority"in this[Pi]||(this[Pi][":authority"]=o)):(this[pk]=`https://${o}:${s}`,":authority"in this[Pi]||(this[Pi][":authority"]=`${o}:${s}`)),a&&this.setTimeout(a),i&&this.once("response",i),this[My]=!1}get method(){return this[Pi][bW]}set method(e){e&&(this[Pi][bW]=e.toUpperCase())}get path(){return this[Pi][vW]}set path(e){e&&(this[Pi][vW]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,i){if(this._mustNotHaveABody){i(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let n=()=>this._request.write(e,r,i);this._request?n():this[yp].push(n)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[yp].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[My]||this.destroyed)return;this[My]=!0;let e=this.method===Nve,r=i=>{if(this._request=i,this.destroyed){i.destroy();return}e||xve(i,this,["timeout","continue","close","error"]);let n=o=>(...a)=>{!this.writable&&!this.destroyed?o(...a):this.once("finish",()=>{o(...a)})};i.once("response",n((o,a,l)=>{let c=new vve(this.socket,i.readableHighWaterMark);this.res=c,c.req=this,c.statusCode=o[QW],c.headers=o,c.rawHeaders=l,c.once("end",()=>{this.aborted?(c.aborted=!0,c.emit("aborted")):(c.complete=!0,c.socket=null,c.connection=null)}),e?(c.upgrade=!0,this.emit("connect",c,i,Buffer.alloc(0))?this.emit("close"):i.destroy()):(i.on("data",u=>{!c._dumped&&!c.push(u)&&i.pause()}),i.once("end",()=>{c.push(null)}),this.emit("response",c)||c._dump())})),i.once("headers",n(o=>this.emit("information",{statusCode:o[QW]}))),i.once("trailers",n((o,a,l)=>{let{res:c}=this;c.trailers=o,c.rawTrailers=l}));let{socket:s}=i.session;this.socket=s,this.connection=s;for(let o of this[yp])o();this.emit("socket",this.socket)};if(this[dk])try{r(this[dk].request(this[Pi]))}catch(i){this.emit("error",i)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[pk],this[SW],this[Pi]))}catch(i){this.emit("error",i)}}}getHeader(e){if(typeof e!="string")throw new hk("name","string",e);return this[Pi][e.toLowerCase()]}get headersSent(){return this[My]}removeHeader(e){if(typeof e!="string")throw new hk("name","string",e);if(this.headersSent)throw new BW("remove");delete this[Pi][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new BW("set");if(typeof e!="string"||!Lve.test(e)&&!kve(e))throw new Dve("Header name",e);if(typeof r=="undefined")throw new Rve(r,e);if(Tve.test(r))throw new Fve("header content",e);this[Pi][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let i=()=>this._request.setTimeout(e,r);return this._request?i():this[yp].push(i),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};yW.exports=xW});var PW=E((Hnt,kW)=>{"use strict";var Mve=require("tls");kW.exports=(t={})=>new Promise((e,r)=>{let i=Mve.connect(t,()=>{t.resolveSocket?(i.off("error",r),e({alpnProtocol:i.alpnProtocol,socket:i})):(i.destroy(),e({alpnProtocol:i.alpnProtocol}))});i.on("error",r)})});var RW=E((Gnt,DW)=>{"use strict";var Ove=require("net");DW.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),Ove.isIP(e)?"":e}});var LW=E((jnt,mk)=>{"use strict";var FW=require("http"),Ek=require("https"),Kve=PW(),Uve=lk(),Hve=Ck(),Gve=RW(),jve=fk(),Oy=new Uve({maxSize:100}),wp=new Map,NW=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let i=()=>{t.emit("free",e,r)};e.on("free",i);let n=()=>{t.removeSocket(e,r)};e.on("close",n);let s=()=>{t.removeSocket(e,r),e.off("close",n),e.off("free",i),e.off("agentRemove",s)};e.on("agentRemove",s),t.emit("free",e,r)},Yve=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!Oy.has(e)){if(wp.has(e))return(await wp.get(e)).alpnProtocol;let{path:r,agent:i}=t;t.path=t.socketPath;let n=Kve(t);wp.set(e,n);try{let{socket:s,alpnProtocol:o}=await n;if(Oy.set(e,o),t.path=r,o==="h2")s.destroy();else{let{globalAgent:a}=Ek,l=Ek.Agent.prototype.createConnection;i?i.createConnection===l?NW(i,s,t):s.destroy():a.createConnection===l?NW(a,s,t):s.destroy()}return wp.delete(e),o}catch(s){throw wp.delete(e),s}}return Oy.get(e)};mk.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=jve(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e=_(P(P({ALPNProtocols:["h2","http/1.1"]},t),e),{resolveSocket:!0}),!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let i=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||Gve(e),e.port=e.port||(i?443:80),e._defaultAgent=i?Ek.globalAgent:FW.globalAgent;let n=e.agent;if(n){if(n.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=n[i?"https":"http"]}return i&&await Yve(e)==="h2"?(n&&(e.agent=n.http2),new Hve(e,r)):FW.request(e,r)};mk.exports.protocolCache=Oy});var MW=E((Ynt,TW)=>{"use strict";var qve=require("http2"),Jve=uk(),Ik=Ck(),Wve=gk(),zve=LW(),Vve=(t,e,r)=>new Ik(t,e,r),_ve=(t,e,r)=>{let i=new Ik(t,e,r);return i.end(),i};TW.exports=_(P(_(P({},qve),{ClientRequest:Ik,IncomingMessage:Wve}),Jve),{request:Vve,get:_ve,auto:zve})});var wk=E(yk=>{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});var OW=Ca();yk.default=t=>OW.default.nodeStream(t)&&OW.default.function_(t.getBoundary)});var GW=E(Bk=>{"use strict";Object.defineProperty(Bk,"__esModule",{value:!0});var KW=require("fs"),UW=require("util"),HW=Ca(),Xve=wk(),Zve=UW.promisify(KW.stat);Bk.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(HW.default.string(t))return Buffer.byteLength(t);if(HW.default.buffer(t))return t.length;if(Xve.default(t))return UW.promisify(t.getLength.bind(t))();if(t instanceof KW.ReadStream){let{size:r}=await Zve(t.path);return r===0?void 0:r}}});var bk=E(Qk=>{"use strict";Object.defineProperty(Qk,"__esModule",{value:!0});function $ve(t,e,r){let i={};for(let n of r)i[n]=(...s)=>{e.emit(n,...s)},t.on(n,i[n]);return()=>{for(let n of r)t.off(n,i[n])}}Qk.default=$ve});var jW=E(vk=>{"use strict";Object.defineProperty(vk,"__esModule",{value:!0});vk.default=()=>{let t=[];return{once(e,r,i){e.once(r,i),t.push({origin:e,event:r,fn:i})},unhandleAll(){for(let e of t){let{origin:r,event:i,fn:n}=e;r.removeListener(i,n)}t.length=0}}}});var qW=E(Bp=>{"use strict";Object.defineProperty(Bp,"__esModule",{value:!0});Bp.TimeoutError=void 0;var eSe=require("net"),tSe=jW(),YW=Symbol("reentry"),rSe=()=>{},Sk=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`);this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};Bp.TimeoutError=Sk;Bp.default=(t,e,r)=>{if(YW in t)return rSe;t[YW]=!0;let i=[],{once:n,unhandleAll:s}=tSe.default(),o=(g,f,h)=>{var p;let d=setTimeout(f,g,g,h);(p=d.unref)===null||p===void 0||p.call(d);let m=()=>{clearTimeout(d)};return i.push(m),m},{host:a,hostname:l}=r,c=(g,f)=>{t.destroy(new Sk(g,f))},u=()=>{for(let g of i)g();s()};if(t.once("error",g=>{if(u(),t.listenerCount("error")===0)throw g}),t.once("close",u),n(t,"response",g=>{n(g,"end",u)}),typeof e.request!="undefined"&&o(e.request,c,"request"),typeof e.socket!="undefined"){let g=()=>{c(e.socket,"socket")};t.setTimeout(e.socket,g),i.push(()=>{t.removeListener("timeout",g)})}return n(t,"socket",g=>{var f;let{socketPath:h}=t;if(g.connecting){let p=Boolean(h!=null?h:eSe.isIP((f=l!=null?l:a)!==null&&f!==void 0?f:"")!==0);if(typeof e.lookup!="undefined"&&!p&&typeof g.address().address=="undefined"){let d=o(e.lookup,c,"lookup");n(g,"lookup",d)}if(typeof e.connect!="undefined"){let d=()=>o(e.connect,c,"connect");p?n(g,"connect",d()):n(g,"lookup",m=>{m===null&&n(g,"connect",d())})}typeof e.secureConnect!="undefined"&&r.protocol==="https:"&&n(g,"connect",()=>{let d=o(e.secureConnect,c,"secureConnect");n(g,"secureConnect",d)})}if(typeof e.send!="undefined"){let p=()=>o(e.send,c,"send");g.connecting?n(g,"connect",()=>{n(t,"upload-complete",p())}):n(t,"upload-complete",p())}}),typeof e.response!="undefined"&&n(t,"upload-complete",()=>{let g=o(e.response,c,"response");n(t,"response",g)}),u}});var WW=E(xk=>{"use strict";Object.defineProperty(xk,"__esModule",{value:!0});var JW=Ca();xk.default=t=>{t=t;let e={protocol:t.protocol,hostname:JW.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return JW.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var zW=E(kk=>{"use strict";Object.defineProperty(kk,"__esModule",{value:!0});var iSe=require("url"),nSe=["protocol","host","hostname","port","pathname","search"];kk.default=(t,e)=>{var r,i;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(i=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&i!==void 0?i:""}`}let n=new iSe.URL(t);if(e.path){let s=e.path.indexOf("?");s===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,s),e.search=e.path.slice(s+1)),delete e.path}for(let s of nSe)e[s]&&(n[s]=e[s].toString());return n}});var _W=E(Pk=>{"use strict";Object.defineProperty(Pk,"__esModule",{value:!0});var VW=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};Pk.default=VW});var Rk=E(Dk=>{"use strict";Object.defineProperty(Dk,"__esModule",{value:!0});var sSe=async t=>{let e=[],r=0;for await(let i of t)e.push(i),r+=Buffer.byteLength(i);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};Dk.default=sSe});var ZW=E(ql=>{"use strict";Object.defineProperty(ql,"__esModule",{value:!0});ql.dnsLookupIpVersionToFamily=ql.isDnsLookupIpVersion=void 0;var XW={auto:0,ipv4:4,ipv6:6};ql.isDnsLookupIpVersion=t=>t in XW;ql.dnsLookupIpVersionToFamily=t=>{if(ql.isDnsLookupIpVersion(t))return XW[t];throw new Error("Invalid DNS lookup IP version")}});var Fk=E(Ky=>{"use strict";Object.defineProperty(Ky,"__esModule",{value:!0});Ky.isResponseOk=void 0;Ky.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var e8=E(Nk=>{"use strict";Object.defineProperty(Nk,"__esModule",{value:!0});var $W=new Set;Nk.default=t=>{$W.has(t)||($W.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var t8=E(Lk=>{"use strict";Object.defineProperty(Lk,"__esModule",{value:!0});var ar=Ca(),oSe=(t,e)=>{if(ar.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");ar.assert.any([ar.default.string,ar.default.undefined],t.encoding),ar.assert.any([ar.default.boolean,ar.default.undefined],t.resolveBodyOnly),ar.assert.any([ar.default.boolean,ar.default.undefined],t.methodRewriting),ar.assert.any([ar.default.boolean,ar.default.undefined],t.isStream),ar.assert.any([ar.default.string,ar.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry=P({},e.retry):t.retry={calculateDelay:i=>i.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},ar.default.object(r)?(t.retry=P(P({},t.retry),r),t.retry.methods=[...new Set(t.retry.methods.map(i=>i.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):ar.default.number(r)&&(t.retry.limit=r),ar.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(ar.default.number))),ar.default.object(t.pagination)){e&&(t.pagination=P(P({},e.pagination),t.pagination));let{pagination:i}=t;if(!ar.default.function_(i.transform))throw new Error("`options.pagination.transform` must be implemented");if(!ar.default.function_(i.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!ar.default.function_(i.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!ar.default.function_(i.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};Lk.default=oSe});var r8=E(Qp=>{"use strict";Object.defineProperty(Qp,"__esModule",{value:!0});Qp.retryAfterStatusCodes=void 0;Qp.retryAfterStatusCodes=new Set([413,429,503]);var aSe=({attemptCount:t,retryOptions:e,error:r,retryAfter:i})=>{if(t>e.limit)return 0;let n=e.methods.includes(r.options.method),s=e.errorCodes.includes(r.code),o=r.response&&e.statusCodes.includes(r.response.statusCode);if(!n||!s&&!o)return 0;if(r.response){if(i)return e.maxRetryAfter===void 0||i>e.maxRetryAfter?0:i;if(r.response.statusCode===413)return 0}let a=Math.random()*100;return 2**(t-1)*1e3+a};Qp.default=aSe});var vp=E(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.UnsupportedProtocolError=Rt.ReadError=Rt.TimeoutError=Rt.UploadError=Rt.CacheError=Rt.HTTPError=Rt.MaxRedirectsError=Rt.RequestError=Rt.setNonEnumerableProperties=Rt.knownHookEvents=Rt.withoutBody=Rt.kIsNormalizedAlready=void 0;var i8=require("util"),n8=require("stream"),ASe=require("fs"),dA=require("url"),s8=require("http"),Tk=require("http"),lSe=require("https"),cSe=h3(),uSe=y3(),o8=tW(),gSe=sW(),fSe=MW(),hSe=Ly(),ce=Ca(),pSe=GW(),a8=wk(),dSe=bk(),A8=qW(),CSe=WW(),l8=zW(),mSe=_W(),ESe=Rk(),c8=ZW(),ISe=Fk(),CA=e8(),ySe=t8(),wSe=r8(),Mk,Ei=Symbol("request"),Uy=Symbol("response"),Ju=Symbol("responseSize"),Wu=Symbol("downloadedSize"),zu=Symbol("bodySize"),Vu=Symbol("uploadedSize"),Hy=Symbol("serverResponsesPiped"),u8=Symbol("unproxyEvents"),g8=Symbol("isFromCache"),Ok=Symbol("cancelTimeouts"),f8=Symbol("startedReading"),_u=Symbol("stopReading"),Gy=Symbol("triggerRead"),mA=Symbol("body"),bp=Symbol("jobs"),h8=Symbol("originalResponse"),p8=Symbol("retryTimeout");Rt.kIsNormalizedAlready=Symbol("isNormalizedAlready");var BSe=ce.default.string(process.versions.brotli);Rt.withoutBody=new Set(["GET","HEAD"]);Rt.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function QSe(t){for(let e in t){let r=t[e];if(!ce.default.string(r)&&!ce.default.number(r)&&!ce.default.boolean(r)&&!ce.default.null_(r)&&!ce.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function bSe(t){return ce.default.object(t)&&!("statusCode"in t)}var Kk=new mSe.default,vSe=async t=>new Promise((e,r)=>{let i=n=>{r(n)};t.pending||e(),t.once("error",i),t.once("ready",()=>{t.off("error",i),e()})}),SSe=new Set([300,301,302,303,304,307,308]),xSe=["context","body","json","form"];Rt.setNonEnumerableProperties=(t,e)=>{let r={};for(let i of t)if(!!i)for(let n of xSe)n in i&&(r[n]={writable:!0,configurable:!0,enumerable:!1,value:i[n]});Object.defineProperties(e,r)};var _r=class extends Error{constructor(e,r,i){var n;super(e);if(Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,i instanceof Uk?(Object.defineProperty(this,"request",{enumerable:!1,value:i}),Object.defineProperty(this,"response",{enumerable:!1,value:i[Uy]}),Object.defineProperty(this,"options",{enumerable:!1,value:i.options})):Object.defineProperty(this,"options",{enumerable:!1,value:i}),this.timings=(n=this.request)===null||n===void 0?void 0:n.timings,ce.default.string(r.stack)&&ce.default.string(this.stack)){let s=this.stack.indexOf(this.message)+this.message.length,o=this.stack.slice(s).split(` -`).reverse(),a=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` -`).reverse();for(;a.length!==0&&a[0]===o[0];)o.shift();this.stack=`${this.stack.slice(0,s)}${o.reverse().join(` -`)}${a.reverse().join(` -`)}`}}};Rt.RequestError=_r;var Hk=class extends _r{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e);this.name="MaxRedirectsError"}};Rt.MaxRedirectsError=Hk;var Gk=class extends _r{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request);this.name="HTTPError"}};Rt.HTTPError=Gk;var jk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="CacheError"}};Rt.CacheError=jk;var Yk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="UploadError"}};Rt.UploadError=Yk;var qk=class extends _r{constructor(e,r,i){super(e.message,e,i);this.name="TimeoutError",this.event=e.event,this.timings=r}};Rt.TimeoutError=qk;var jy=class extends _r{constructor(e,r){super(e.message,e,r);this.name="ReadError"}};Rt.ReadError=jy;var Jk=class extends _r{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e);this.name="UnsupportedProtocolError"}};Rt.UnsupportedProtocolError=Jk;var kSe=["socket","connect","continue","information","upgrade","timeout"],Uk=class extends n8.Duplex{constructor(e,r={},i){super({autoDestroy:!1,highWaterMark:0});this[Wu]=0,this[Vu]=0,this.requestInitialized=!1,this[Hy]=new Set,this.redirects=[],this[_u]=!1,this[Gy]=!1,this[bp]=[],this.retryCount=0,this._progressCallbacks=[];let n=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",n),c.on("data",s),c.prependListener("end",n),c.on("end",s)}),this.on("unpipe",c=>{c.off("data",n),c.off("data",s),c.off("end",n),c.off("end",s)}),this.on("pipe",c=>{c instanceof Tk.IncomingMessage&&(this.options.headers=P(P({},c.headers),this.options.headers))});let{json:o,body:a,form:l}=r;if((o||a||l)&&this._lockWrite(),Rt.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,i)}catch(c){ce.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof ASe.ReadStream&&await vSe(this.options.body);let{url:u}=this.options;if(!u)throw new TypeError("Missing `url` property");if(this.requestUrl=u.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[Ei])===null||c===void 0||c.destroy();return}for(let g of this[bp])g();this[bp].length=0,this.requestInitialized=!0}catch(u){if(u instanceof _r){this._beforeError(u);return}this.destroyed||this.destroy(u)}})()}static normalizeArguments(e,r,i){var n,s,o,a,l;let c=r;if(ce.default.object(e)&&!ce.default.urlInstance(e))r=P(P(P({},i),e),r);else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r=P(P({},i),r),e!==void 0&&(r.url=e),ce.default.urlInstance(r.url)&&(r.url=new dA.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),ce.assert.any([ce.default.string,ce.default.undefined],r.method),ce.assert.any([ce.default.object,ce.default.undefined],r.headers),ce.assert.any([ce.default.string,ce.default.urlInstance,ce.default.undefined],r.prefixUrl),ce.assert.any([ce.default.object,ce.default.undefined],r.cookieJar),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.searchParams),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.cache),ce.assert.any([ce.default.object,ce.default.number,ce.default.undefined],r.timeout),ce.assert.any([ce.default.object,ce.default.undefined],r.context),ce.assert.any([ce.default.object,ce.default.undefined],r.hooks),ce.assert.any([ce.default.boolean,ce.default.undefined],r.decompress),ce.assert.any([ce.default.boolean,ce.default.undefined],r.ignoreInvalidCookies),ce.assert.any([ce.default.boolean,ce.default.undefined],r.followRedirect),ce.assert.any([ce.default.number,ce.default.undefined],r.maxRedirects),ce.assert.any([ce.default.boolean,ce.default.undefined],r.throwHttpErrors),ce.assert.any([ce.default.boolean,ce.default.undefined],r.http2),ce.assert.any([ce.default.boolean,ce.default.undefined],r.allowGetBody),ce.assert.any([ce.default.string,ce.default.undefined],r.localAddress),ce.assert.any([c8.isDnsLookupIpVersion,ce.default.undefined],r.dnsLookupIpVersion),ce.assert.any([ce.default.object,ce.default.undefined],r.https),ce.assert.any([ce.default.boolean,ce.default.undefined],r.rejectUnauthorized),r.https&&(ce.assert.any([ce.default.boolean,ce.default.undefined],r.https.rejectUnauthorized),ce.assert.any([ce.default.function_,ce.default.undefined],r.https.checkServerIdentity),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificateAuthority),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.key),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificate),ce.assert.any([ce.default.string,ce.default.undefined],r.https.passphrase),ce.assert.any([ce.default.string,ce.default.buffer,ce.default.array,ce.default.undefined],r.https.pfx)),ce.assert.any([ce.default.object,ce.default.undefined],r.cacheOptions),ce.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(i==null?void 0:i.headers)?r.headers=P({},r.headers):r.headers=hSe(P(P({},i==null?void 0:i.headers),r.headers)),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(i==null?void 0:i.searchParams)){let h;if(ce.default.string(r.searchParams)||r.searchParams instanceof dA.URLSearchParams)h=new dA.URLSearchParams(r.searchParams);else{QSe(r.searchParams),h=new dA.URLSearchParams;for(let p in r.searchParams){let d=r.searchParams[p];d===null?h.append(p,""):d!==void 0&&h.append(p,d)}}(n=i==null?void 0:i.searchParams)===null||n===void 0||n.forEach((p,d)=>{h.has(d)||h.append(d,p)}),r.searchParams=h}if(r.username=(s=r.username)!==null&&s!==void 0?s:"",r.password=(o=r.password)!==null&&o!==void 0?o:"",ce.default.undefined(r.prefixUrl)?r.prefixUrl=(a=i==null?void 0:i.prefixUrl)!==null&&a!==void 0?a:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),ce.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=l8.default(r.prefixUrl+r.url,r)}else(ce.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=l8.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:h}=r;Object.defineProperty(r,"prefixUrl",{set:d=>{let m=r.url;if(!m.href.startsWith(d))throw new Error(`Cannot change \`prefixUrl\` from ${h} to ${d}: ${m.href}`);r.url=new dA.URL(d+m.href.slice(h.length)),h=d},get:()=>h});let{protocol:p}=r.url;if(p==="unix:"&&(p="http:",r.url=new dA.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),p!=="http:"&&p!=="https:")throw new Jk(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:u}=r;if(u){let{setCookie:h,getCookieString:p}=u;ce.assert.function_(h),ce.assert.function_(p),h.length===4&&p.length===0&&(h=i8.promisify(h.bind(r.cookieJar)),p=i8.promisify(p.bind(r.cookieJar)),r.cookieJar={setCookie:h,getCookieString:p})}let{cache:g}=r;if(g&&(Kk.has(g)||Kk.set(g,new o8((h,p)=>{let d=h[Ei](h,p);return ce.default.promise(d)&&(d.once=(m,I)=>{if(m==="error")d.catch(I);else if(m==="abort")(async()=>{try{(await d).once("abort",I)}catch(B){}})();else throw new Error(`Unknown HTTP2 promise event: ${m}`);return d}),d},g))),r.cacheOptions=P({},r.cacheOptions),r.dnsCache===!0)Mk||(Mk=new uSe.default),r.dnsCache=Mk;else if(!ce.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${ce.default(r.dnsCache)}`);ce.default.number(r.timeout)?r.timeout={request:r.timeout}:i&&r.timeout!==i.timeout?r.timeout=P(P({},i.timeout),r.timeout):r.timeout=P({},r.timeout),r.context||(r.context={});let f=r.hooks===(i==null?void 0:i.hooks);r.hooks=P({},r.hooks);for(let h of Rt.knownHookEvents)if(h in r.hooks)if(ce.default.array(r.hooks[h]))r.hooks[h]=[...r.hooks[h]];else throw new TypeError(`Parameter \`${h}\` must be an Array, got ${ce.default(r.hooks[h])}`);else r.hooks[h]=[];if(i&&!f)for(let h of Rt.knownHookEvents)i.hooks[h].length>0&&(r.hooks[h]=[...i.hooks[h],...r.hooks[h]]);if("family"in r&&CA.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),(i==null?void 0:i.https)&&(r.https=P(P({},i.https),r.https)),"rejectUnauthorized"in r&&CA.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&CA.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&CA.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&CA.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&CA.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&CA.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&CA.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let h in r.agent)if(h!=="http"&&h!=="https"&&h!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${h}\``)}return r.maxRedirects=(l=r.maxRedirects)!==null&&l!==void 0?l:0,Rt.setNonEnumerableProperties([i,c],r),ySe.default(r,i)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,i=!ce.default.undefined(e.form),n=!ce.default.undefined(e.json),s=!ce.default.undefined(e.body),o=i||n||s,a=Rt.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=a,o){if(a)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([s,i,n].filter(l=>l).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(e.body instanceof n8.Readable)&&!ce.default.string(e.body)&&!ce.default.buffer(e.body)&&!a8.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(i&&!ce.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let l=!ce.default.string(r["content-type"]);s?(a8.default(e.body)&&l&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[mA]=e.body):i?(l&&(r["content-type"]="application/x-www-form-urlencoded"),this[mA]=new dA.URLSearchParams(e.form).toString()):(l&&(r["content-type"]="application/json"),this[mA]=e.stringifyJson(e.json));let c=await pSe.default(this[mA],e.headers);ce.default.undefined(r["content-length"])&&ce.default.undefined(r["transfer-encoding"])&&!a&&!ce.default.undefined(c)&&(r["content-length"]=String(c))}}else a?this._lockWrite():this._unlockWrite();this[zu]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:i}=r;this[h8]=e,r.decompress&&(e=gSe(e));let n=e.statusCode,s=e;s.statusMessage=s.statusMessage?s.statusMessage:s8.STATUS_CODES[n],s.url=r.url.toString(),s.requestUrl=this.requestUrl,s.redirectUrls=this.redirects,s.request=this,s.isFromCache=e.fromCache||!1,s.ip=this.ip,s.retryCount=this.retryCount,this[g8]=s.isFromCache,this[Ju]=Number(e.headers["content-length"])||void 0,this[Uy]=e,e.once("end",()=>{this[Ju]=this[Wu],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",a=>{e.destroy(),this._beforeError(new jy(a,this))}),e.once("aborted",()=>{this._beforeError(new jy({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let o=e.headers["set-cookie"];if(ce.default.object(r.cookieJar)&&o){let a=o.map(async l=>r.cookieJar.setCookie(l,i.toString()));r.ignoreInvalidCookies&&(a=a.map(async l=>l.catch(()=>{})));try{await Promise.all(a)}catch(l){this._beforeError(l);return}}if(r.followRedirect&&e.headers.location&&SSe.has(n)){if(e.resume(),this[Ei]&&(this[Ok](),delete this[Ei],this[u8]()),(n===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[mA]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new Hk(this));return}try{let l=Buffer.from(e.headers.location,"binary").toString(),c=new dA.URL(l,i),u=c.toString();decodeURI(u),c.hostname!==i.hostname||c.port!==i.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(c.username=r.username,c.password=r.password),this.redirects.push(u),r.url=c;for(let g of r.hooks.beforeRedirect)await g(r,s);this.emit("redirect",s,r),await this._makeRequest()}catch(l){this._beforeError(l);return}return}if(r.isStream&&r.throwHttpErrors&&!ISe.isResponseOk(s)){this._beforeError(new Gk(s));return}e.on("readable",()=>{this[Gy]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let a of this[Hy])if(!a.headersSent){for(let l in e.headers){let c=r.decompress?l!=="content-encoding":!0,u=e.headers[l];c&&a.setHeader(l,u)}a.statusCode=n}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:i,url:n}=r;cSe.default(e),this[Ok]=A8.default(e,i,n);let s=r.cache?"cacheableResponse":"response";e.once(s,l=>{this._onResponse(l)}),e.once("error",l=>{var c;e.destroy(),(c=e.res)===null||c===void 0||c.removeAllListeners("end"),l=l instanceof A8.TimeoutError?new qk(l,this.timings,this):new _r(l.message,l,this),this._beforeError(l)}),this[u8]=dSe.default(e,this,kSe),this[Ei]=e,this.emit("uploadProgress",this.uploadProgress);let o=this[mA],a=this.redirects.length===0?this:e;ce.default.nodeStream(o)?(o.pipe(a),o.once("error",l=>{this._beforeError(new Yk(l,this))})):(this._unlockWrite(),ce.default.undefined(o)?(this._cannotHaveBody||this._noPipe)&&(a.end(),this._lockWrite()):(this._writeRequest(o,void 0,()=>{}),a.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((i,n)=>{Object.assign(r,CSe.default(e)),delete r.url;let s,o=Kk.get(r.cache)(r,async a=>{a._readableState.autoDestroy=!1,s&&(await s).emit("cacheableResponse",a),i(a)});r.url=e,o.once("error",n),o.once("request",async a=>{s=a,i(s)})})}async _makeRequest(){var e,r,i,n,s;let{options:o}=this,{headers:a}=o;for(let I in a)if(ce.default.undefined(a[I]))delete a[I];else if(ce.default.null_(a[I]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${I}\` header`);if(o.decompress&&ce.default.undefined(a["accept-encoding"])&&(a["accept-encoding"]=BSe?"gzip, deflate, br":"gzip, deflate"),o.cookieJar){let I=await o.cookieJar.getCookieString(o.url.toString());ce.default.nonEmptyString(I)&&(o.headers.cookie=I)}for(let I of o.hooks.beforeRequest){let B=await I(o);if(!ce.default.undefined(B)){o.request=()=>B;break}}o.body&&this[mA]!==o.body&&(this[mA]=o.body);let{agent:l,request:c,timeout:u,url:g}=o;if(o.dnsCache&&!("lookup"in o)&&(o.lookup=o.dnsCache.lookup),g.hostname==="unix"){let I=/(?.+?):(?.+)/.exec(`${g.pathname}${g.search}`);if(I==null?void 0:I.groups){let{socketPath:B,path:b}=I.groups;Object.assign(o,{socketPath:B,path:b,host:""})}}let f=g.protocol==="https:",h;o.http2?h=fSe.auto:h=f?lSe.request:s8.request;let p=(e=o.request)!==null&&e!==void 0?e:h,d=o.cache?this._createCacheableRequest:p;l&&!o.http2&&(o.agent=l[f?"https":"http"]),o[Ei]=p,delete o.request,delete o.timeout;let m=o;if(m.shared=(r=o.cacheOptions)===null||r===void 0?void 0:r.shared,m.cacheHeuristic=(i=o.cacheOptions)===null||i===void 0?void 0:i.cacheHeuristic,m.immutableMinTimeToLive=(n=o.cacheOptions)===null||n===void 0?void 0:n.immutableMinTimeToLive,m.ignoreCargoCult=(s=o.cacheOptions)===null||s===void 0?void 0:s.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{m.family=c8.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch(I){throw new Error("Invalid `dnsLookupIpVersion` option value")}o.https&&("rejectUnauthorized"in o.https&&(m.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(m.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(m.ca=o.https.certificateAuthority),o.https.certificate&&(m.cert=o.https.certificate),o.https.key&&(m.key=o.https.key),o.https.passphrase&&(m.passphrase=o.https.passphrase),o.https.pfx&&(m.pfx=o.https.pfx));try{let I=await d(g,m);ce.default.undefined(I)&&(I=h(g,m)),o.request=c,o.timeout=u,o.agent=l,o.https&&("rejectUnauthorized"in o.https&&delete m.rejectUnauthorized,o.https.checkServerIdentity&&delete m.checkServerIdentity,o.https.certificateAuthority&&delete m.ca,o.https.certificate&&delete m.cert,o.https.key&&delete m.key,o.https.passphrase&&delete m.passphrase,o.https.pfx&&delete m.pfx),bSe(I)?this._onRequest(I):this.writable?(this.once("finish",()=>{this._onResponse(I)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(I)}catch(I){throw I instanceof o8.CacheError?new jk(I,this):new _r(I.message,I,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new _r(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[_u])return;let{options:r}=this,i=this.retryCount+1;this[_u]=!0,e instanceof _r||(e=new _r(e.message,e,this));let n=e,{response:s}=n;(async()=>{if(s&&!s.body){s.setEncoding(this._readableState.encoding);try{s.rawBody=await ESe.default(s),s.body=s.rawBody.toString()}catch(o){}}if(this.listenerCount("retry")!==0){let o;try{let a;s&&"retry-after"in s.headers&&(a=Number(s.headers["retry-after"]),Number.isNaN(a)?(a=Date.parse(s.headers["retry-after"])-Date.now(),a<=0&&(a=1)):a*=1e3),o=await r.retry.calculateDelay({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:wSe.default({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:0})})}catch(a){this._error(new _r(a.message,a,this));return}if(o){let a=async()=>{try{for(let l of this.options.hooks.beforeRetry)await l(this.options,n,i)}catch(l){this._error(new _r(l.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",i,e))};this[p8]=setTimeout(a,o);return}}this._error(n)})()}_read(){this[Gy]=!0;let e=this[Uy];if(e&&!this[_u]){e.readableLength&&(this[Gy]=!1);let r;for(;(r=e.read())!==null;){this[Wu]+=r.length,this[f8]=!0;let i=this.downloadProgress;i.percent<1&&this.emit("downloadProgress",i),this.push(r)}}}_write(e,r,i){let n=()=>{this._writeRequest(e,r,i)};this.requestInitialized?n():this[bp].push(n)}_writeRequest(e,r,i){this[Ei].destroyed||(this._progressCallbacks.push(()=>{this[Vu]+=Buffer.byteLength(e,r);let n=this.uploadProgress;n.percent<1&&this.emit("uploadProgress",n)}),this[Ei].write(e,r,n=>{!n&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),i(n)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Ei in this)){e();return}if(this[Ei].destroyed){e();return}this[Ei].end(i=>{i||(this[zu]=this[Vu],this.emit("uploadProgress",this.uploadProgress),this[Ei].emit("upload-complete")),e(i)})};this.requestInitialized?r():this[bp].push(r)}_destroy(e,r){var i;this[_u]=!0,clearTimeout(this[p8]),Ei in this&&(this[Ok](),((i=this[Uy])===null||i===void 0?void 0:i.complete)||this[Ei].destroy()),e!==null&&!ce.default.undefined(e)&&!(e instanceof _r)&&(e=new _r(e.message,e,this)),r(e)}get _isAboutToError(){return this[_u]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,i;return((r=(e=this[Ei])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!((i=this[h8])===null||i===void 0?void 0:i.complete)}get socket(){var e,r;return(r=(e=this[Ei])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[Ju]?e=this[Wu]/this[Ju]:this[Ju]===this[Wu]?e=1:e=0,{percent:e,transferred:this[Wu],total:this[Ju]}}get uploadProgress(){let e;return this[zu]?e=this[Vu]/this[zu]:this[zu]===this[Vu]?e=1:e=0,{percent:e,transferred:this[Vu],total:this[zu]}}get timings(){var e;return(e=this[Ei])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[g8]}pipe(e,r){if(this[f8])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof Tk.ServerResponse&&this[Hy].add(e),super.pipe(e,r)}unpipe(e){return e instanceof Tk.ServerResponse&&this[Hy].delete(e),super.unpipe(e),this}};Rt.default=Uk});var Sp=E(Ms=>{"use strict";var PSe=Ms&&Ms.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),DSe=Ms&&Ms.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&PSe(e,t,r)};Object.defineProperty(Ms,"__esModule",{value:!0});Ms.CancelError=Ms.ParseError=void 0;var d8=vp(),C8=class extends d8.RequestError{constructor(e,r){let{options:i}=r.request;super(`${e.message} in "${i.url.toString()}"`,e,r.request);this.name="ParseError"}};Ms.ParseError=C8;var m8=class extends d8.RequestError{constructor(e){super("Promise was canceled",{},e);this.name="CancelError"}get isCanceled(){return!0}};Ms.CancelError=m8;DSe(vp(),Ms)});var I8=E(Wk=>{"use strict";Object.defineProperty(Wk,"__esModule",{value:!0});var E8=Sp(),RSe=(t,e,r,i)=>{let{rawBody:n}=t;try{if(e==="text")return n.toString(i);if(e==="json")return n.length===0?"":r(n.toString());if(e==="buffer")return n;throw new E8.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(s){throw new E8.ParseError(s,t)}};Wk.default=RSe});var zk=E(EA=>{"use strict";var FSe=EA&&EA.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),NSe=EA&&EA.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&FSe(e,t,r)};Object.defineProperty(EA,"__esModule",{value:!0});var LSe=require("events"),TSe=Ca(),MSe=g3(),Yy=Sp(),y8=I8(),w8=vp(),OSe=bk(),KSe=Rk(),B8=Fk(),USe=["request","response","redirect","uploadProgress","downloadProgress"];function Q8(t){let e,r,i=new LSe.EventEmitter,n=new MSe((o,a,l)=>{let c=u=>{let g=new w8.default(void 0,t);g.retryCount=u,g._noPipe=!0,l(()=>g.destroy()),l.shouldReject=!1,l(()=>a(new Yy.CancelError(g))),e=g,g.once("response",async p=>{var d;if(p.retryCount=u,p.request.aborted)return;let m;try{m=await KSe.default(g),p.rawBody=m}catch(R){return}if(g._isAboutToError)return;let I=((d=p.headers["content-encoding"])!==null&&d!==void 0?d:"").toLowerCase(),B=["gzip","deflate","br"].includes(I),{options:b}=g;if(B&&!b.decompress)p.body=m;else try{p.body=y8.default(p,b.responseType,b.parseJson,b.encoding)}catch(R){if(p.body=m.toString(),B8.isResponseOk(p)){g._beforeError(R);return}}try{for(let[R,H]of b.hooks.afterResponse.entries())p=await H(p,async L=>{let K=w8.default.normalizeArguments(void 0,_(P({},L),{retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1}),b);K.hooks.afterResponse=K.hooks.afterResponse.slice(0,R);for(let ne of K.hooks.beforeRetry)await ne(K);let J=Q8(K);return l(()=>{J.catch(()=>{}),J.cancel()}),J})}catch(R){g._beforeError(new Yy.RequestError(R.message,R,g));return}if(!B8.isResponseOk(p)){g._beforeError(new Yy.HTTPError(p));return}r=p,o(g.options.resolveBodyOnly?p.body:p)});let f=p=>{if(n.isCanceled)return;let{options:d}=g;if(p instanceof Yy.HTTPError&&!d.throwHttpErrors){let{response:m}=p;o(g.options.resolveBodyOnly?m.body:m);return}a(p)};g.once("error",f);let h=g.options.body;g.once("retry",(p,d)=>{var m,I;if(h===((m=d.request)===null||m===void 0?void 0:m.options.body)&&TSe.default.nodeStream((I=d.request)===null||I===void 0?void 0:I.options.body)){f(d);return}c(p)}),OSe.default(g,i,USe)};c(0)});n.on=(o,a)=>(i.on(o,a),n);let s=o=>{let a=(async()=>{await n;let{options:l}=r.request;return y8.default(r,o,l.parseJson,l.encoding)})();return Object.defineProperties(a,Object.getOwnPropertyDescriptors(n)),a};return n.json=()=>{let{headers:o}=e.options;return!e.writableFinished&&o.accept===void 0&&(o.accept="application/json"),s("json")},n.buffer=()=>s("buffer"),n.text=()=>s("text"),n}EA.default=Q8;NSe(Sp(),EA)});var b8=E(Vk=>{"use strict";Object.defineProperty(Vk,"__esModule",{value:!0});var HSe=Sp();function GSe(t,...e){let r=(async()=>{if(t instanceof HSe.RequestError)try{for(let n of e)if(n)for(let s of n)t=await s(t)}catch(n){t=n}throw t})(),i=()=>r;return r.json=i,r.text=i,r.buffer=i,r.on=i,r}Vk.default=GSe});var x8=E(_k=>{"use strict";Object.defineProperty(_k,"__esModule",{value:!0});var v8=Ca();function S8(t){for(let e of Object.values(t))(v8.default.plainObject(e)||v8.default.array(e))&&S8(e);return Object.freeze(t)}_k.default=S8});var P8=E(k8=>{"use strict";Object.defineProperty(k8,"__esModule",{value:!0})});var Xk=E(ss=>{"use strict";var jSe=ss&&ss.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),YSe=ss&&ss.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&jSe(e,t,r)};Object.defineProperty(ss,"__esModule",{value:!0});ss.defaultHandler=void 0;var D8=Ca(),os=zk(),qSe=b8(),qy=vp(),JSe=x8(),WSe={RequestError:os.RequestError,CacheError:os.CacheError,ReadError:os.ReadError,HTTPError:os.HTTPError,MaxRedirectsError:os.MaxRedirectsError,TimeoutError:os.TimeoutError,ParseError:os.ParseError,CancelError:os.CancelError,UnsupportedProtocolError:os.UnsupportedProtocolError,UploadError:os.UploadError},zSe=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:Jy}=qy.default,R8=(...t)=>{let e;for(let r of t)e=Jy(void 0,r,e);return e},VSe=t=>t.isStream?new qy.default(void 0,t):os.default(t),_Se=t=>"defaults"in t&&"options"in t.defaults,XSe=["get","post","put","patch","head","delete"];ss.defaultHandler=(t,e)=>e(t);var F8=(t,e)=>{if(t)for(let r of t)r(e)},N8=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(i=>(n,s)=>{let o,a=i(n,l=>(o=s(l),o));if(a!==o&&!n.isStream&&o){let l=a,{then:c,catch:u,finally:g}=l;Object.setPrototypeOf(l,Object.getPrototypeOf(o)),Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)),l.then=c,l.catch=u,l.finally=g}return a});let e=(i,n={},s)=>{var o,a;let l=0,c=u=>t.handlers[l++](u,l===t.handlers.length?VSe:c);if(D8.default.plainObject(i)){let u=P(P({},i),n);qy.setNonEnumerableProperties([i,n],u),n=u,i=void 0}try{let u;try{F8(t.options.hooks.init,n),F8((o=n.hooks)===null||o===void 0?void 0:o.init,n)}catch(f){u=f}let g=Jy(i,n,s!=null?s:t.options);if(g[qy.kIsNormalizedAlready]=!0,u)throw new os.RequestError(u.message,u,g);return c(g)}catch(u){if(n.isStream)throw u;return qSe.default(u,t.options.hooks.beforeError,(a=n.hooks)===null||a===void 0?void 0:a.beforeError)}};e.extend=(...i)=>{let n=[t.options],s=[...t._rawHandlers],o;for(let a of i)_Se(a)?(n.push(a.defaults.options),s.push(...a.defaults._rawHandlers),o=a.defaults.mutableDefaults):(n.push(a),"handlers"in a&&s.push(...a.handlers),o=a.mutableDefaults);return s=s.filter(a=>a!==ss.defaultHandler),s.length===0&&s.push(ss.defaultHandler),N8({options:R8(...n),handlers:s,mutableDefaults:Boolean(o)})};let r=async function*(i,n){let s=Jy(i,n,t.options);s.resolveBodyOnly=!1;let o=s.pagination;if(!D8.default.object(o))throw new TypeError("`options.pagination` must be implemented");let a=[],{countLimit:l}=o,c=0;for(;c{let s=[];for await(let o of r(i,n))s.push(o);return s},e.paginate.each=r,e.stream=(i,n)=>e(i,_(P({},n),{isStream:!0}));for(let i of XSe)e[i]=(n,s)=>e(n,_(P({},s),{method:i})),e.stream[i]=(n,s)=>e(n,_(P({},s),{method:i,isStream:!0}));return Object.assign(e,WSe),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:JSe.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=R8,e};ss.default=N8;YSe(P8(),ss)});var zy=E((Ea,Wy)=>{"use strict";var ZSe=Ea&&Ea.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),L8=Ea&&Ea.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&ZSe(e,t,r)};Object.defineProperty(Ea,"__esModule",{value:!0});var $Se=require("url"),T8=Xk(),exe={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let i of e){let n=i.split(";");if(n[1].includes("next")){r=n[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new $Se.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:Infinity,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[T8.defaultHandler],mutableDefaults:!1},Zk=T8.default(exe);Ea.default=Zk;Wy.exports=Zk;Wy.exports.default=Zk;Wy.exports.__esModule=!0;L8(Xk(),Ea);L8(zk(),Ea)});var U8=E(Xu=>{"use strict";var fst=require("net"),txe=require("tls"),$k=require("http"),M8=require("https"),rxe=require("events"),hst=require("assert"),ixe=require("util");Xu.httpOverHttp=nxe;Xu.httpsOverHttp=sxe;Xu.httpOverHttps=oxe;Xu.httpsOverHttps=axe;function nxe(t){var e=new Ia(t);return e.request=$k.request,e}function sxe(t){var e=new Ia(t);return e.request=$k.request,e.createSocket=O8,e.defaultPort=443,e}function oxe(t){var e=new Ia(t);return e.request=M8.request,e}function axe(t){var e=new Ia(t);return e.request=M8.request,e.createSocket=O8,e.defaultPort=443,e}function Ia(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||$k.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(i,n,s,o){for(var a=K8(n,s,o),l=0,c=e.requests.length;l=this.maxSockets){s.requests.push(o);return}s.createSocket(o,function(a){a.on("free",l),a.on("close",c),a.on("agentRemove",c),e.onSocket(a);function l(){s.emit("free",a,o)}function c(u){s.removeSocket(a),a.removeListener("free",l),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};Ia.prototype.createSocket=function(e,r){var i=this,n={};i.sockets.push(n);var s=eP({},i.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),IA("making CONNECT request");var o=i.request(s);o.useChunkedEncodingByDefault=!1,o.once("response",a),o.once("upgrade",l),o.once("connect",c),o.once("error",u),o.end();function a(g){g.upgrade=!0}function l(g,f,h){process.nextTick(function(){c(g,f,h)})}function c(g,f,h){if(o.removeAllListeners(),f.removeAllListeners(),g.statusCode!==200){IA("tunneling socket could not be established, statusCode=%d",g.statusCode),f.destroy();var p=new Error("tunneling socket could not be established, statusCode="+g.statusCode);p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}if(h.length>0){IA("got illegal response body from proxy"),f.destroy();var p=new Error("got illegal response body from proxy");p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}return IA("tunneling connection has established"),i.sockets[i.sockets.indexOf(n)]=f,r(f)}function u(g){o.removeAllListeners(),IA(`tunneling socket could not be established, cause=%s -`,g.message,g.stack);var f=new Error("tunneling socket could not be established, cause="+g.message);f.code="ECONNRESET",e.request.emit("error",f),i.removeSocket(n)}};Ia.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var i=this.requests.shift();i&&this.createSocket(i,function(n){i.request.onSocket(n)})}};function O8(t,e){var r=this;Ia.prototype.createSocket.call(r,t,function(i){var n=t.request.getHeader("host"),s=eP({},r.options,{socket:i,servername:n?n.replace(/:.*$/,""):t.host}),o=txe.connect(0,s);r.sockets[r.sockets.indexOf(i)]=o,e(o)})}function K8(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function eP(t){for(var e=1,r=arguments.length;e{H8.exports=U8()});var b4=E((xot,sP)=>{var e4=Object.assign({},require("fs")),oe=typeof oe!="undefined"?oe:{},kp={},wA;for(wA in oe)oe.hasOwnProperty(wA)&&(kp[wA]=oe[wA]);var oP=[],t4="./this.program",r4=function(t,e){throw e},i4=!1,Wl=!0,Pp="";function dxe(t){return oe.locateFile?oe.locateFile(t,Pp):Pp+t}var Xy,aP,Zy,AP;Wl&&(i4?Pp=require("path").dirname(Pp)+"/":Pp=__dirname+"/",Xy=function(e,r){var i=s4(e);return i?r?i:i.toString():(Zy||(Zy=e4),AP||(AP=require("path")),e=AP.normalize(e),Zy.readFileSync(e,r?null:"utf8"))},aP=function(e){var r=Xy(e,!0);return r.buffer||(r=new Uint8Array(r)),n4(r.buffer),r},process.argv.length>1&&(t4=process.argv[1].replace(/\\/g,"/")),oP=process.argv.slice(2),typeof sP!="undefined"&&(sP.exports=oe),r4=function(t){process.exit(t)},oe.inspect=function(){return"[Emscripten Module object]"});var $y=oe.print||console.log.bind(console),Di=oe.printErr||console.warn.bind(console);for(wA in kp)kp.hasOwnProperty(wA)&&(oe[wA]=kp[wA]);kp=null;oe.arguments&&(oP=oe.arguments);oe.thisProgram&&(t4=oe.thisProgram);oe.quit&&(r4=oe.quit);var Cxe=16;function mxe(t,e){return e||(e=Cxe),Math.ceil(t/e)*e}var Exe=0,Ixe=function(t){Exe=t},lP;oe.wasmBinary&&(lP=oe.wasmBinary);var Pst=oe.noExitRuntime||!0;typeof WebAssembly!="object"&&Gr("no native wasm support detected");function yxe(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return Zi[t>>0];case"i8":return Zi[t>>0];case"i16":return cP[t>>1];case"i32":return _e[t>>2];case"i64":return _e[t>>2];case"float":return o4[t>>2];case"double":return a4[t>>3];default:Gr("invalid type for getValue: "+e)}return null}var ew,A4=!1,wxe;function n4(t,e){t||Gr("Assertion failed: "+e)}function l4(t){var e=oe["_"+t];return n4(e,"Cannot call unknown function "+t+", make sure it is exported"),e}function vxe(t,e,r,i,n){var s={string:function(h){var p=0;if(h!=null&&h!==0){var d=(h.length<<2)+1;p=g4(d),u4(h,p,d)}return p},array:function(h){var p=g4(h.length);return Bxe(h,p),p}};function o(h){return e==="string"?c4(h):e==="boolean"?Boolean(h):h}var a=l4(t),l=[],c=0;if(i)for(var u=0;u=i);)++n;if(n-e>16&&t.subarray&&f4)return f4.decode(t.subarray(e,n));for(var s="";e>10,56320|c&1023)}}return s}function c4(t,e){return t?Zu($u,t,e):""}function tw(t,e,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343){var l=t.charCodeAt(++o);a=65536+((a&1023)<<10)|l&1023}if(a<=127){if(r>=s)break;e[r++]=a}else if(a<=2047){if(r+1>=s)break;e[r++]=192|a>>6,e[r++]=128|a&63}else if(a<=65535){if(r+2>=s)break;e[r++]=224|a>>12,e[r++]=128|a>>6&63,e[r++]=128|a&63}else{if(r+3>=s)break;e[r++]=240|a>>18,e[r++]=128|a>>12&63,e[r++]=128|a>>6&63,e[r++]=128|a&63}}return e[r]=0,r-n}function u4(t,e,r){return tw(t,$u,e,r)}function rw(t){for(var e=0,r=0;r=55296&&i<=57343&&(i=65536+((i&1023)<<10)|t.charCodeAt(++r)&1023),i<=127?++e:i<=2047?e+=2:i<=65535?e+=3:e+=4}return e}function uP(t){var e=rw(t)+1,r=h4(e);return r&&tw(t,Zi,r,e),r}function Bxe(t,e){Zi.set(t,e)}function xxe(t,e){return t%e>0&&(t+=e-t%e),t}var gP,Zi,$u,cP,kxe,_e,Pxe,o4,a4;function p4(t){gP=t,oe.HEAP8=Zi=new Int8Array(t),oe.HEAP16=cP=new Int16Array(t),oe.HEAP32=_e=new Int32Array(t),oe.HEAPU8=$u=new Uint8Array(t),oe.HEAPU16=kxe=new Uint16Array(t),oe.HEAPU32=Pxe=new Uint32Array(t),oe.HEAPF32=o4=new Float32Array(t),oe.HEAPF64=a4=new Float64Array(t)}var Dst=oe.INITIAL_MEMORY||16777216,fP,d4=[],C4=[],m4=[],Dxe=!1;function Fxe(){if(oe.preRun)for(typeof oe.preRun=="function"&&(oe.preRun=[oe.preRun]);oe.preRun.length;)Rxe(oe.preRun.shift());hP(d4)}function Nxe(){Dxe=!0,!oe.noFSInit&&!y.init.initialized&&y.init(),BA.init(),hP(C4)}function Txe(){if(oe.postRun)for(typeof oe.postRun=="function"&&(oe.postRun=[oe.postRun]);oe.postRun.length;)Lxe(oe.postRun.shift());hP(m4)}function Rxe(t){d4.unshift(t)}function Mxe(t){C4.unshift(t)}function Lxe(t){m4.unshift(t)}var zl=0,pP=null,Dp=null;function Oxe(t){return t}function E4(t){zl++,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl)}function dP(t){if(zl--,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl),zl==0&&(pP!==null&&(clearInterval(pP),pP=null),Dp)){var e=Dp;Dp=null,e()}}oe.preloadedImages={};oe.preloadedAudios={};function Gr(t){oe.onAbort&&oe.onAbort(t),t+="",Di(t),A4=!0,wxe=1,t="abort("+t+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(t);throw e}var I4="data:application/octet-stream;base64,";function y4(t){return t.startsWith(I4)}var Rp="data:application/octet-stream;base64,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AkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALIANB/wFxRQRAIAIgAGsPCwNAIAItAAEhAyACQQFqIgEhAiADDQALCyABIABrC2EBAX8jAEEQayICIAA2AgggAiABNwMAAkAgAikDACACKAIIKQMIVgRAIAIoAghBADoAACACQX82AgwMAQsgAigCCEEBOgAAIAIoAgggAikDADcDECACQQA2AgwLIAIoAgwL7wEBAX8jAEEgayICJAAgAiAANgIYIAIgATcDECACIAIoAhhCCBAeNgIMAkAgAigCDEUEQCACQX82AhwMAQsgAigCDCACKQMQQv8BgzwAACACKAIMIAIpAxBCCIhC/wGDPAABIAIoAgwgAikDEEIQiEL/AYM8AAIgAigCDCACKQMQQhiIQv8BgzwAAyACKAIMIAIpAxBCIIhC/wGDPAAEIAIoAgwgAikDEEIoiEL/AYM8AAUgAigCDCACKQMQQjCIQv8BgzwABiACKAIMIAIpAxBCOIhC/wGDPAAHIAJBADYCHAsgAigCHBogAkEgaiQAC4cDAQF/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNwMYAkAgAygCJC0AKEEBcQRAIANCfzcDKAwBCwJAAkAgAygCJCgCIEUNACADKQMYQv///////////wBWDQAgAykDGFANASADKAIgDQELIAMoAiRBDGpBEkEAEBQgA0J/NwMoDAELIAMoAiQtADVBAXEEQCADQn83AygMAQsCfyMAQRBrIgAgAygCJDYCDCAAKAIMLQA0QQFxCwRAIANCADcDKAwBCyADKQMYUARAIANCADcDKAwBCyADQgA3AxADQCADKQMQIAMpAxhUBEAgAyADKAIkIAMoAiAgAykDEKdqIAMpAxggAykDEH1BARAhIgI3AwggAkIAUwRAIAMoAiRBAToANSADKQMQUARAIANCfzcDKAwECyADIAMpAxA3AygMAwsgAykDCFAEQCADKAIkQQE6ADQFIAMgAykDCCADKQMQfDcDEAwCCwsLIAMgAykDEDcDKAsgAykDKCECIANBMGokACACCzYBAX8jAEEQayIBIAA2AgwCfiABKAIMLQAAQQFxBEAgASgCDCkDCCABKAIMKQMQfQwBC0IACwuyAQIBfwF+IwBBEGsiASQAIAEgADYCBCABIAEoAgRC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AkEBNgIQIAJBADYCCANAAkAgAigCCCACKAIYLwEETw0AAkAgAigCDCACKAIIai0AAEEfSwRAIAIoAgwgAigCCGotAABBgAFJDQELIAIoAgwgAigCCGotAABBDUYNACACKAIMIAIoAghqLQAAQQpGDQAgAigCDCACKAIIai0AAEEJRgRADAELIAJBAzYCEAJAIAIoAgwgAigCCGotAABB4AFxQcABRgRAIAJBATYCAAwBCwJAIAIoAgwgAigCCGotAABB8AFxQeABRgRAIAJBAjYCAAwBCwJAIAIoAgwgAigCCGotAABB+AFxQfABRgRAIAJBAzYCAAwBCyACQQQ2AhAMBAsLCyACKAIYLwEEIAIoAgggAigCAGpNBEAgAkEENgIQDAILIAJBATYCBANAIAIoAgQgAigCAE0EQCACKAIMIAIoAgggAigCBGpqLQAAQcABcUGAAUcEQCACQQQ2AhAMBgUgAiACKAIEQQFqNgIEDAILAAsLIAIgAigCACACKAIIajYCCAsgAiACKAIIQQFqNgIIDAELCwsgAigCGCACKAIQNgIIIAIoAhQEQAJAIAIoAhRBAkcNACACKAIQQQNHDQAgAkECNgIQIAIoAhhBAjYCCAsCQCACKAIUIAIoAhBGDQAgAigCEEEBRg0AIAJBBTYCHAwCCwsgAiACKAIQNgIcCyACKAIcC2oBAX8jAEEQayIBIAA2AgwgASgCDEIANwMAIAEoAgxBADYCCCABKAIMQn83AxAgASgCDEEANgIsIAEoAgxBfzYCKCABKAIMQgA3AxggASgCDEIANwMgIAEoAgxBADsBMCABKAIMQQA7ATILUgECf0GQlwEoAgAiASAAQQNqQXxxIgJqIQACQCACQQAgACABTRsNACAAPwBBEHRLBEAgABATRQ0BC0GQlwEgADYCACABDwtBtJsBQTA2AgBBfwuNBQEDfyMAQRBrIgEkACABIAA2AgwgASgCDARAIAEoAgwoAgAEQCABKAIMKAIAEDEaIAEoAgwoAgAQGwsgASgCDCgCHBAVIAEoAgwoAiAQJSABKAIMKAIkECUgASgCDCgCUCECIwBBEGsiACQAIAAgAjYCDCAAKAIMBEAgACgCDCgCEARAIABBADYCCANAIAAoAgggACgCDCgCAEkEQCAAKAIMKAIQIAAoAghBAnRqKAIABEAgACgCDCgC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A3EQHwsgAygCpAEoAhQgA0GeAWogA0GcAWoQgQEgAygCTCADLwGeARAfIAMoAkwgAy8BnAEQHwJAAkAgAy0AhQFBAXFFDQAgAygCpAEpAyhCFFoNACADKAJMQQAQIAwBCyADKAJMIAMoAqQBKAIYECALAkACQCADKAKgAUGAAnFBgAJHDQAgAygCpAEpAyBC/////w9UBEAgAygCpAEpAyhC/////w9UDQELIAMoAkxBfxAgIAMoAkxBfxAgDAELAkAgAygCpAEpAyBC/////w9UBEAgAygCTCADKAKkASkDIKcQIAwBCyADKAJMQX8QIAsCQCADKAKkASkDKEL/////D1QEQCADKAJMIAMoAqQBKQMopxAgDAELIAMoAkxBfxAgCwsgAygCTCADKAKkASgCMBBTQf//A3EQHyADIAMoAqQBKAI0IAMoAqABEIYBQf//A3EgAygCkAFBgAYQhgFB//8DcWo2AogBIAMoAkwgAygCiAFB//8DcRAfIAMoAqABQYACcUUEQCADKAJMIAMoAqQBKAI4EFNB//8DcRAfIAMoAkwgAygCpAEoAjxB//8DcRAfIAMoAkwgAygCpAEvAUAQHyADKAJMIAMoAqQBKAJEECACQCADKAKkASkDSEL/////D1QEQCADKAJMIAMoAqQBKQNIpxAgDAELIAMoAkxBfxAgCwsCfyMAQRBrIgAgAygCTDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAJMEBYgAygCkAEQIyADQX82AqwBDAELIAMoAqgBIANB0ABqAn4jAEEQayIAIAMoAkw2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IACwsQNUEASARAIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCTBAWIAMoAqQBKAIwBEAgAygCqAEgAygCpAEoAjAQigFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABBEAgAygCqAEgAygCkAFBgAYQhQFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABECMgAygCpAEoAjQEQCADKAKoASADKAKkASgCNCADKAKgARCFAUEASARAIANBfzYCrAEMAgsLIAMoAqABQYACcUUEQCADKAKkASgCOARAIAMoAqgBIAMoAqQBKAI4EIoB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HCAAIAAoAhRBAWo2AhQMAQsLIAAoAggQR0EBcUUEQCAAKAIgQRRBABAUIAAoAggQFiAAQX82AiwMAQsgACgCCBAWIAAgACgCHDYCLAsgACgCLCECIABBMGokACADIAIiADYCBCAAQQBIBEAgA0IANwMoDAELIAMpAwggAygCBK18Qv///////////wBWBEAgAygCFEEEQRYQFCADQgA3AygMAQsgAyADKQMIIAMoAgStfDcDKAsgAykDKCEBIANBMGokACABC20BAX8jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI2AhAgBCADNgIMAkAgBCgCGEUEQCAEQQA2AhwMAQsgBCAEKAIUIAQoAhAgBCgCDCAEKAIYQQhqEJIBNgIcCyAEKAIcIQAgBEEgaiQAIAALVQEBfyMAQRBrIgEkACABIAA2AgwCQAJAIAEoAgwoAiRBAUYNACABKAIMKAIkQQJGDQAMAQsgASgCDEEAQgBBChAhGiABKAIMQQA2AiQLIAFBEGokAAumAQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkAgAigCCC0AKEEBcQRAIAJBfzYCDAwBCyACKAIIKAIABEAgAigCCCgCACACKAIEEGhBAEgEQCACKAIIQQxqIAIoAggoAgAQFyACQX82AgwMAgsLIAIoAgggAkEEakIEQRMQIUIAUwRAIAJBfzYCDAwBCyACQQA2AgwLIAIoAgwhACACQRBqJAAgAAuNCAIBfwF+IwBBkAFrIgMkACADIAA2AoQBIAMgATYCgAEgAyACNgJ8IAMQTwJAIAMoAoABKQMIQgBSBEAgAyADKAKAASgCACgCACkDSDcDYCADIAMoAoABKAIAKAIAKQNINwNoDAELIANCADcDYCADQgA3A2gLIANCADcDcAJAA0AgAykDcCADKAKAASkDCFQEQCADKAKAASgCACADKQNwp0EEdGooAgApA0ggAykDaFQEQCADIAMoAoABKAIAIAMpA3CnQQR0aigCACkDSDcDaAsgAykDaCADKAKAASkDIFYEQCADKAJ8QRNBABAUIANCfzcDiAEMAwsgAyADKAKAASgCACADKQNwp0EEdGooAgApA0ggAygCgAEoAgAgAykDcKdBBHRqKAIAKQMgfCADKAKAASgCACADKQNwp0EEdGooAgAoAjAQU0H//wNxrXxC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DEECdGooAgBBAnRqLwEASA0AAkAgAygCGCADKAIQQQJ0ai8BACADKAIYIAMoAhxB3BZqIAMoAgxBAnRqKAIAQQJ0ai8BAEcNACADKAIQIAMoAhxB2Chqai0AACADKAIcQdwWaiADKAIMQQJ0aigCACADKAIcQdgoamotAABKDQAMAQsgAygCHEHcFmogAygCFEECdGogAygCHEHcFmogAygCDEECdGooAgA2AgAgAyADKAIMNgIUIAMgAygCDEEBdDYCDAwBCwsgAygCHEHcFmogAygCFEECdGogAygCEDYCAAvXEwEDfyMAQTBrIgIkACACIAA2AiwgAiABNgIoIAIgAigCKCgCADYCJCACIAIoAigoAggoAgA2AiAgAiACKAIoKAIIKAIMNgIcIAJBfzYCECACKAIsQQA2AtAoIAIoAixBvQQ2AtQoIAJBADYCGANAIAIoAhggAigCHEgEQAJAIAIoAiQgAigCGEECdGovAQAEQCACIAIoAhgiATYCECACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohACAEIAA2AtAoIABBAnQgA2ogATYCACACKAIYIAIoAixB2ChqakEAOgAADAELIAIoAiQgAigCGEECdGpBADsBAgsgAiACKAIYQQFqNgIYDAELCwNAIAIoAiwoAtAoQQJIBEACQCACKAIQQQJIBEAgAiACKAIQQQFqIgA2AhAMAQtBACEACyACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohASAEIAE2AtAoIAFBAnQgA2ogADYCACACIAA2AgwgAigCJCACKAIMQQJ0akEBOwEAIAIoAgwgAigCLEHYKGpqQQA6AAAgAigCLCIAIAAoAqgtQQFrNgKoLSACKAIgBEAgAigCLCIAIAAoAqwtIAIoAiAgAigCDEECdGovAQJrNgKsLQsMAQsLIAIoAiggAigCEDYCBCACIAIoAiwoAtAoQQJtNgIYA0AgAigCGEEBTgRAIAIoAiwgAigCJCACKAIYEHogAiACKAIYQQFrNgIYDAELCyACIAIoAhw2AgwDQCACIAIoAiwoAuAWNgIYIAIoAixB3BZqIQEgAigCLCIDKALQKCEAIAMgAEEBazYC0CggAigCLCAAQQJ0IAFqKAIANgLgFiACKAIsIAIoAiRBARB6IAIgAigCLCgC4BY2AhQgAigCGCEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAhQhASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIkIAIoAgxBAnRqIAIoAiQgAigCGEECdGovAQAgAigCJCACKAIUQQJ0ai8BAGo7AQAgAigCDCACKAIsQdgoamoCfyACKAIYIAIoAixB2Chqai0AACACKAIUIAIoAixB2Chqai0AAE4EQCACKAIYIAIoAixB2Chqai0AAAwBCyACKAIUIAIoAixB2Chqai0AAAtBAWo6AAAgAigCJCACKAIUQQJ0aiACKAIMIgA7AQIgAigCJCACKAIYQQJ0aiAAOwECIAIgAigCDCIAQQFqNgIMIAIoAiwgADYC4BYgAigCLCACKAIkQQEQeiACKAIsKALQKEECTg0ACyACKAIsKALgFiEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAighASMAQUBqIgAgAigCLDYCPCAAIAE2AjggACAAKAI4KAIANgI0IAAgACgCOCgCBDYCMCAAIAAoAjgoAggoAgA2AiwgACAAKAI4KAIIKAIENgIoIAAgACgCOCgCCCgCCDYCJCAAIAAoAjgoAggoAhA2AiAgAEEANgIEIABBADYCEANAIAAoAhBBD0wEQCAAKAI8QbwWaiAAKAIQQQF0akEAOwEAIAAgACgCEEEBajYCEAwBCwsgACgCNCAAKAI8QdwWaiAAKAI8KALUKEECdGooAgBBAnRqQQA7AQIgACAAKAI8KALUKEEBajYCHANAIAAoAhxBvQRIBEAgACAAKAI8QdwWaiAAKAIcQQJ0aigCADYCGCAAIAAoAjQgACgCNCAAKAIYQQJ0ai8BAkECdGovAQJBAWo2AhAgACgCECAAKAIgSgRAIAAgACgCIDYCECAAIAAoAgRBAWo2AgQLIAAoAjQgACgCGEECdGogACgCEDsBAiAAKAIYIAAoAjBMBEAgACgCPCAAKAIQQQF0akG8FmoiASABLwEAQQFqOwEAIABBADYCDCAAKAIYIAAoAiROBEAgACAAKAIoIAAoAhggACgCJGtBAnRqKAIANgIMCyAAIAAoAjQgACgCGEECdGovAQA7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EANAIAMpAxAgAykDCFpFBEAgAygCKCgCACADKQMQp0EEdGoQkAEgAyADKQMQQgF8NwMQDAELCyADKAIoIAMpAwgiATcDECADKAIoIAE3AwggA0EBOgAvCyADLQAvQQFxIQAgA0EwaiQAIAALzAEBAX8jAEEgayICJAAgAiAANwMQIAIgATYCDCACQTAQGCIBNgIIAkAgAUUEQCACKAIMQQ5BABAUIAJBADYCHAwBCyACKAIIQQA2AgAgAigCCEIANwMQIAIoAghCADcDCCACKAIIQgA3AyAgAigCCEIANwMYIAIoAghBADYCKCACKAIIQQA6ACwgAigCCCACKQMQIAIoAgwQgwFBAXFFBEAgAigCCBAkIAJBADYCHAwBCyACIAIoAgg2AhwLIAIoAhwhASACQSBqJAAgAQvWAgEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCECADIANBDGpCBBApNgIIAkAgAygCCEUEQCADQX82AhwMAQsDQCADKAIUBEAgAygCFCgCBCADKAIQcUGABnEEQCADKAIIQgAQLBogAygCCCADKAIULwEIEB8gAygCCCADKAIULwEKEB8CfyMAQRBrIgAgAygCCDYCDCAAKAIMLQAAQQFxRQsEQCADKAIYQQhqQRRBABAUIAMoAggQFiADQX82AhwMBAsgAygCGCADQQxqQgQQNUEASARAIAMoAggQFiADQX82AhwMBAsgAygCFC8BCgRAIAMoAhggAygCFCgCDCADKAIULwEKrRA1QQBIBEAgAygCCBAWIANBfzYCHAwFCwsLIAMgAygCFCgCADYCFAwBCwsgAygCCBAWIANBADYCHAsgAygCHCEAIANBIGokACAAC2gBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADsBBgNAIAIoAgwEQCACKAIMKAIEIAIoAghxQYAGcQRAIAIgAigCDC8BCiACLwEGQQRqajsBBgsgAiACKAIMKAIANgIMDAELCyACLwEGC/ABAQF/IwBBEGsiASQAIAEgADYCDCABIAEoAgw2AgggAUEANgIEA0AgASgCDARAAkACQCABKAIMLwEIQfXGAUYNACABKAIMLwEIQfXgAUYNACABKAIMLwEIQYGyAkYNACABKAIMLwEIQQFHDQELIAEgASgCDCgCADYCACABKAIIIAEoAgxGBEAg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IAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCEASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQL0IWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJIQgQQHhogASgCSBAqBEAgASgCOEEBQQAQFCABQQA2AkwMAQsgASABKAJIEB1B//8Dca03AyggASABKAJIEB1B//8Dca03AyAgASkDICABKQMoUgRAIAEoAjhBE0EAEBQgAUEANgJMDAELIAEgASgCSBAqrTcDGCABIAEoAkgQKq03AxAgASkDECABKQMQIAEpAxh8VgRAIAEoAjhBBEEWEBQgAUEANgJMDAELIAEpAxAgASkDGHwgASkDQCABKQMIfFYEQCABKAI4QRVBABAUIAFBADYCTAwBCwJAIAEoAjxBBHFFDQAgASkDECABKQMYfCABKQNAIAEpAwh8UQ0AIAEoAjhBFUEAEBQgAUEANgJMDAELIAEgASkDICABKAI4EIQBIgU2AjQgBUUEQCABQQA2AkwMAQsgASgCNEEAOgAsIAEoAjQgASkDGDcDGCABKAI0IAEpAxA3AyAgASABKAI0NgJMCyABKAJMIQUgAUHQAGokACAAIAU2AlALIAAoAlBFBEAgAEEANgJsDAELIAAoAmQgACkDMEIUfBAsGiAAIAAoAmQQHTsBTiAAKAJQKQMgIAAoAlApAxh8IAApA1ggACkDMHxWBEAg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IAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEFwgAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQeBogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2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mwFCADcDAEGYmwFCADcDAEGQmwFCADcDAEGImwFCADcDAEGAmwFCADcDAEH4mgFCADcDAEHwmgFCADcDAEHwmgEL1QQBBX8jAEGwAWsiASQAIAEgADYCqAEgASgCqAEQNwJAAkAgASgCqAEoAgBBAE4EQCABKAKoASgCAEGAFCgCAEgNAQsgASABKAKoASgCADYCECABQSBqQY8SIAFBEGoQcCABQQA2AqQBIAEgAUEgajYCoAEMAQsgASABKAKoASgCAEECdEGAE2ooAgA2AqQBAkACQAJAAkAgASgCqAEoAgBBAnRBkBRqKAIAQQFrDgIAAQILIAEoAqgBKAIEIQJBkJkBKAIAIQRBACEAAkACQANAIAIgAEGgiAFqLQAARwRAQdcAIQMgAEEBaiIAQdcARw0BDAILCyAAIgMNAEGAiQEhAgwBC0GAiQEhAANAIAAtAAAhBSAAQQFqIgIhACAFDQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQKwJ/IAEoAqQBBEAgASgCpAEQK0ECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEHAgASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMIQgSGIAgpAwAiA0I8iIQhAiAIKQMQIAgpAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIAhBIGokACACIAZCgICAgICAgICAf4OEvws5AwALrRcDEn8CfgF8IwBBsARrIgkkACAJQQA2AiwCQCABvSIYQn9XBEBBASESQa4IIRMgAZoiAb0hGAwBCyAEQYAQcQRAQQEhEkGxCCETDAELQbQIQa8IIARBAXEiEhshEyASRSEXCwJAIBhCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiASQQNqIg0gBEH//3txECYgACATIBIQIiAAQeQLQbUSIAVBIHEiAxtBjw1BuRIgAxsgASABYhtBAxAiDAELIAlBEGohEAJAAn8CQCABIAlBLGoQqQEiASABoCIBRAAAAAAAAAAAYgRAIAkgCSgCLCIGQQFrNgIsIAVBIHIiFEHhAEcNAQwDCyAFQSByIhRB4QBGDQIgCSgCLCELQQYgAyADQQBIGwwBCyAJIAZBHWsiCzYCLCABRAAAAAAAALBBoiEBQQYgAyADQQBIGwshCiAJQTBqIAlB0AJqIAtBAEgbIg4hBwNAIAcCfyABRAAAAAAAAPBBYyABRAAAAAAAAAAAZnEEQCABqwwBC0EACyIDNgIAIAdBBGohByABIAO4oUQA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HCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCGCABKAIUSQtBAXENAAsgASgCKEGCAiABKAIUIAEoAhhrazYCYCABKAIoKAJgIAEoAigoAnRLBEAgASgCKCABKAIoKAJ0NgJgCwsLAkAgASgCKCgCYEEDTwRAIAEgASgCKCgCYEEDazoAEyABQQE7ARAgASgCKCICKAKkLSACKAKgLUEBdGogAS8BEDsBACABLQATIQMgASgCKCICKAKYLSEEIAIgAigCoC0iAkEBajYCoC0gAiAEaiADOgAAIAEgAS8BEEEBazsBECABKAIoIAEtABNB0N0Aai0AAEECdGpBmAlqIgIgAi8BAEEBajsBACABKAIoQYgTagJ/IAEvARBBgAJJBEAgAS8BEC0A0FkMAQsgAS8BEEEHdkGAAmotANBZC0ECdGoiAiACLwEAQQFqOwEAIAEgASgCKCgCoC0gASgCKCgCnC1BAWtGNgIgIAEoAigiAiACKAJ0IAEoAigoAmBrNgJ0IAEoAigiAiABKAIoKAJgIAIoAmxqNgJsIAEoAihBADYCYAwBCyABIAEoAigiAigCOCACKAJsai0AADoADyABKAIoIgIoAqQtIAIoAqAtQQF0akEAOwEAIAEtAA8hAyABKAIoIgIoApgtIQQgAiACKAKgLSICQQFqNgKgLSACIARqIAM6AAAgASgCKCABLQAPQQJ0aiICIAIvAZQBQQFqOwGUASABIAEoAigoAqAtIAEoAigoApwtQQFrRjYCICABKAIoIgIgAigCdEEBazYCdCABKAIoIgIgAigCbEEBajYCbAsgASgCIARAIAEoAigCfyABKAIoKAJcQQBOBEAgASgCKCgCOCABKAIoKAJcagwBC0EACyABKAIoKAJsIAEoAigoAlxrQQAQKCABKAIoIAEoAigoAmw2AlwgASgCKCgCABAcIAEoAigo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QCABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiQgASgCLCABKAIccUECdGooAQA2ARACQAJAA0AgASABLQARNgIMIAEgASgCLCABKAIMdjYCLCABIAEoAiggASgCDGs2AiggASABLQAQNgIMIAEoAgxFBEAgAS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgi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ZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AbmFuAC9kZXYvdXJhbmRvbQBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAaW5mAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAcmIAcitiAHJ3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CADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";y4(Rp)||(Rp=dxe(Rp));function Kxe(t){try{if(t==Rp&&lP)return new Uint8Array(lP);var e=s4(t);if(e)return e;if(aP)return aP(t);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(r){Gr(r)}}function Uxe(t,e){var r,i,n;try{n=Kxe(t),i=new WebAssembly.Module(n),r=new WebAssembly.Instance(i,e)}catch(o){var s=o.toString();throw Di("failed to compile wasm module: "+s),(s.includes("imported Memory")||s.includes("memory import"))&&Di("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),o}return[r,i]}function Gxe(){var t={a:Hxe};function e(n,s){var o=n.exports;oe.asm=o,ew=oe.asm.u,p4(ew.buffer),fP=oe.asm.za,Mxe(oe.asm.v),dP("wasm-instantiate")}if(E4("wasm-instantiate"),oe.instantiateWasm)try{var r=oe.instantiateWasm(t,e);return r}catch(n){return Di("Module.instantiateWasm callback failed with error: "+n),!1}var i=Uxe(Rp,t);return e(i[0]),oe.asm}var ai,ya;function hP(t){for(;t.length>0;){var e=t.shift();if(typeof e=="function"){e(oe);continue}var r=e.func;typeof r=="number"?e.arg===void 0?fP.get(r)():fP.get(r)(e.arg):r(e.arg===void 0?null:e.arg)}}function iw(t,e){var r=new Date(_e[t>>2]*1e3);_e[e>>2]=r.getUTCSeconds(),_e[e+4>>2]=r.getUTCMinutes(),_e[e+8>>2]=r.getUTCHours(),_e[e+12>>2]=r.getUTCDate(),_e[e+16>>2]=r.getUTCMonth(),_e[e+20>>2]=r.getUTCFullYear()-1900,_e[e+24>>2]=r.getUTCDay(),_e[e+36>>2]=0,_e[e+32>>2]=0;var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[e+28>>2]=n,iw.GMTString||(iw.GMTString=uP("GMT")),_e[e+40>>2]=iw.GMTString,e}function jxe(t,e){return iw(t,e)}var yt={splitPath:function(t){var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return e.exec(t).slice(1)},normalizeArray:function(t,e){for(var r=0,i=t.length-1;i>=0;i--){var n=t[i];n==="."?t.splice(i,1):n===".."?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r;r--)t.unshift("..");return t},normalize:function(t){var e=t.charAt(0)==="/",r=t.substr(-1)==="/";return t=yt.normalizeArray(t.split("/").filter(function(i){return!!i}),!e).join("/"),!t&&!e&&(t="."),t&&r&&(t+="/"),(e?"/":"")+t},dirname:function(t){var e=yt.splitPath(t),r=e[0],i=e[1];return!r&&!i?".":(i&&(i=i.substr(0,i.length-1)),r+i)},basename:function(t){if(t==="/")return"/";t=yt.normalize(t),t=t.replace(/\/$/,"");var e=t.lastIndexOf("/");return e===-1?t:t.substr(e+1)},extname:function(t){return yt.splitPath(t)[3]},join:function(){var t=Array.prototype.slice.call(arguments,0);return yt.normalize(t.join("/"))},join2:function(t,e){return yt.normalize(t+"/"+e)}};function Yxe(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var t=new Uint8Array(1);return function(){return crypto.getRandomValues(t),t[0]}}else if(Wl)try{var e=require("crypto");return function(){return e.randomBytes(1)[0]}}catch(r){}return function(){Gr("randomDevice")}}var wa={resolve:function(){for(var t="",e=!1,r=arguments.length-1;r>=-1&&!e;r--){var i=r>=0?arguments[r]:y.cwd();if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";t=i+"/"+t,e=i.charAt(0)==="/"}return t=yt.normalizeArray(t.split("/").filter(function(n){return!!n}),!e).join("/"),(e?"/":"")+t||"."},relative:function(t,e){t=wa.resolve(t).substr(1),e=wa.resolve(e).substr(1);function r(c){for(var u=0;u=0&&c[g]==="";g--);return u>g?[]:c.slice(u,g-u+1)}for(var i=r(t.split("/")),n=r(e.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a0?e=i.slice(0,n).toString("utf-8"):e=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(e=window.prompt("Input: "),e!==null&&(e+=` -`)):typeof readline=="function"&&(e=readline(),e!==null&&(e+=` -`));if(!e)return null;t.input=CP(e,!0)}return t.input.shift()},put_char:function(t,e){e===null||e===10?($y(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&($y(Zu(t.output,0)),t.output=[])}},default_tty1_ops:{put_char:function(t,e){e===null||e===10?(Di(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&(Di(Zu(t.output,0)),t.output=[])}}};function mP(t){for(var e=mxe(t,65536),r=h4(e);t=e)){var i=1024*1024;e=Math.max(e,r*(r>>0),r!=0&&(e=Math.max(e,256));var n=t.contents;t.contents=new Uint8Array(e),t.usedBytes>0&&t.contents.set(n.subarray(0,t.usedBytes),0)}},resizeFileStorage:function(t,e){if(t.usedBytes!=e)if(e==0)t.contents=null,t.usedBytes=0;else{var r=t.contents;t.contents=new Uint8Array(e),r&&t.contents.set(r.subarray(0,Math.min(e,t.usedBytes))),t.usedBytes=e}},node_ops:{getattr:function(t){var e={};return e.dev=y.isChrdev(t.mode)?t.id:1,e.ino=t.id,e.mode=t.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=t.rdev,y.isDir(t.mode)?e.size=4096:y.isFile(t.mode)?e.size=t.usedBytes:y.isLink(t.mode)?e.size=t.link.length:e.size=0,e.atime=new Date(t.timestamp),e.mtime=new Date(t.timestamp),e.ctime=new Date(t.timestamp),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr:function(t,e){e.mode!==void 0&&(t.mode=e.mode),e.timestamp!==void 0&&(t.timestamp=e.timestamp),e.size!==void 0&&pt.resizeFileStorage(t,e.size)},lookup:function(t,e){throw y.genericErrors[44]},mknod:function(t,e,r,i){return pt.createNode(t,e,r,i)},rename:function(t,e,r){if(y.isDir(t.mode)){var i;try{i=y.lookupNode(e,r)}catch(s){}if(i)for(var n in i.contents)throw new y.ErrnoError(55)}delete t.parent.contents[t.name],t.parent.timestamp=Date.now(),t.name=r,e.contents[r]=t,e.timestamp=t.parent.timestamp,t.parent=e},unlink:function(t,e){delete t.contents[e],t.timestamp=Date.now()},rmdir:function(t,e){var r=y.lookupNode(t,e);for(var i in r.contents)throw new y.ErrnoError(55);delete t.contents[e],t.timestamp=Date.now()},readdir:function(t){var e=[".",".."];for(var r in t.contents)!t.contents.hasOwnProperty(r)||e.push(r);return e},symlink:function(t,e,r){var i=pt.createNode(t,e,511|40960,0);return i.link=r,i},readlink:function(t){if(!y.isLink(t.mode))throw new y.ErrnoError(28);return t.link}},stream_ops:{read:function(t,e,r,i,n){var s=t.node.contents;if(n>=t.node.usedBytes)return 0;var o=Math.min(t.node.usedBytes-n,i);if(o>8&&s.subarray)e.set(s.subarray(n,n+o),r);else for(var a=0;a0||i+r>2)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}return e.mode},realPath:function(t){for(var e=[];t.parent!==t;)e.push(t.name),t=t.parent;return e.push(t.mount.opts.root),e.reverse(),yt.join.apply(null,e)},flagsForNode:function(t){t&=~2097152,t&=~2048,t&=~32768,t&=~524288;var e=0;for(var r in tt.flagsForNodeMap)t&r&&(e|=tt.flagsForNodeMap[r],t^=r);if(t)throw new y.ErrnoError(28);return e},node_ops:{getattr:function(t){var e=tt.realPath(t),r;try{r=ft.lstatSync(e)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}return tt.isWindows&&!r.blksize&&(r.blksize=4096),tt.isWindows&&!r.blocks&&(r.blocks=(r.size+r.blksize-1)/r.blksize|0),{dev:r.dev,ino:r.ino,mode:r.mode,nlink:r.nlink,uid:r.uid,gid:r.gid,rdev:r.rdev,size:r.size,atime:r.atime,mtime:r.mtime,ctime:r.ctime,blksize:r.blksize,blocks:r.blocks}},setattr:function(t,e){var r=tt.realPath(t);try{if(e.mode!==void 0&&(ft.chmodSync(r,e.mode),t.mode=e.mode),e.timestamp!==void 0){var i=new Date(e.timestamp);ft.utimesSync(r,i,i)}e.size!==void 0&&ft.truncateSync(r,e.size)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},lookup:function(t,e){var r=yt.join2(tt.realPath(t),e),i=tt.getMode(r);return tt.createNode(t,e,i)},mknod:function(t,e,r,i){var n=tt.createNode(t,e,r,i),s=tt.realPath(n);try{y.isDir(n.mode)?ft.mkdirSync(s,n.mode):ft.writeFileSync(s,"",{mode:n.mode})}catch(o){throw o.code?new y.ErrnoError(tt.convertNodeCode(o)):o}return n},rename:function(t,e,r){var i=tt.realPath(t),n=yt.join2(tt.realPath(e),r);try{ft.renameSync(i,n)}catch(s){throw s.code?new y.ErrnoError(tt.convertNodeCode(s)):s}t.name=r},unlink:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.unlinkSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},rmdir:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.rmdirSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},readdir:function(t){var e=tt.realPath(t);try{return ft.readdirSync(e)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},symlink:function(t,e,r){var i=yt.join2(tt.realPath(t),e);try{ft.symlinkSync(r,i)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},readlink:function(t){var e=tt.realPath(t);try{return e=ft.readlinkSync(e),e=EP.relative(EP.resolve(t.mount.opts.root),e),e}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}}},stream_ops:{open:function(t){var e=tt.realPath(t.node);try{y.isFile(t.node.mode)&&(t.nfd=ft.openSync(e,tt.flagsForNode(t.flags)))}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},close:function(t){try{y.isFile(t.node.mode)&&t.nfd&&ft.closeSync(t.nfd)}catch(e){throw e.code?new y.ErrnoError(tt.convertNodeCode(e)):e}},read:function(t,e,r,i,n){if(i===0)return 0;try{return ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},write:function(t,e,r,i,n){try{return ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},llseek:function(t,e,r){var i=e;if(r===1)i+=t.position;else if(r===2&&y.isFile(t.node.mode))try{var n=ft.fstatSync(t.nfd);i+=n.size}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}if(i<0)throw new y.ErrnoError(28);return i},mmap:function(t,e,r,i,n,s){if(e!==0)throw new y.ErrnoError(28);if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);var o=mP(r);return tt.stream_ops.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);if(n&2)return 0;var s=tt.stream_ops.write(t,e,0,i,r,!1);return 0}}},w4={lookupPath:function(t){return{path:t,node:{mode:tt.getMode(t)}}},createStandardStreams:function(){y.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var t=1;t<3;t++)y.streams[t]={fd:t,nfd:t,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(t,e){y.isDir(t)?ft.mkdirSync(t,e):ft.writeFileSync(t,"",{mode:e})},mkdir:function(){ft.mkdirSync.apply(void 0,arguments)},symlink:function(){ft.symlinkSync.apply(void 0,arguments)},rename:function(){ft.renameSync.apply(void 0,arguments)},rmdir:function(){ft.rmdirSync.apply(void 0,arguments)},readdir:function(){ft.readdirSync.apply(void 0,arguments)},unlink:function(){ft.unlinkSync.apply(void 0,arguments)},readlink:function(){return ft.readlinkSync.apply(void 0,arguments)},stat:function(){return ft.statSync.apply(void 0,arguments)},lstat:function(){return ft.lstatSync.apply(void 0,arguments)},chmod:function(){ft.chmodSync.apply(void 0,arguments)},fchmod:function(){ft.fchmodSync.apply(void 0,arguments)},chown:function(){ft.chownSync.apply(void 0,arguments)},fchown:function(){ft.fchownSync.apply(void 0,arguments)},truncate:function(){ft.truncateSync.apply(void 0,arguments)},ftruncate:function(t,e){if(e<0)throw new y.ErrnoError(28);ft.ftruncateSync.apply(void 0,arguments)},utime:function(){ft.utimesSync.apply(void 0,arguments)},open:function(t,e,r,i){typeof e=="string"&&(e=Vl.modeStringToFlags(e));var n=ft.openSync(t,tt.flagsForNode(e),r),s=i!=null?i:y.nextfd(n),o={fd:s,nfd:n,position:0,path:t,flags:e,seekable:!0};return y.streams[s]=o,o},close:function(t){t.stream_ops||ft.closeSync(t.nfd),y.closeStream(t.fd)},llseek:function(t,e,r){if(t.stream_ops)return Vl.llseek(t,e,r);var i=e;if(r===1)i+=t.position;else if(r===2)i+=ft.fstatSync(t.nfd).size;else if(r!==0)throw new y.ErrnoError(eg.EINVAL);if(i<0)throw new y.ErrnoError(eg.EINVAL);return t.position=i,i},read:function(t,e,r,i,n){if(t.stream_ops)return Vl.read(t,e,r,i,n);var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},write:function(t,e,r,i,n){if(t.stream_ops)return Vl.write(t,e,r,i,n);t.flags&+"1024"&&y.llseek(t,0,+"2");var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},allocate:function(){throw new y.ErrnoError(eg.EOPNOTSUPP)},mmap:function(t,e,r,i,n,s){if(t.stream_ops)return Vl.mmap(t,e,r,i,n,s);if(e!==0)throw new y.ErrnoError(28);var o=mP(r);return y.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){return t.stream_ops?Vl.msync(t,e,r,i,n):(n&2||y.write(t,e,0,i,r),0)},munmap:function(){return 0},ioctl:function(){throw new y.ErrnoError(eg.ENOTTY)}},y={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(t,e){if(t=wa.resolve(y.cwd(),t),e=e||{},!t)return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};for(var i in r)e[i]===void 0&&(e[i]=r[i]);if(e.recurse_count>8)throw new y.ErrnoError(32);for(var n=yt.normalizeArray(t.split("/").filter(function(f){return!!f}),!1),s=y.root,o="/",a=0;a40)throw new y.ErrnoError(32)}}return{path:o,node:s}},getPath:function(t){for(var e;;){if(y.isRoot(t)){var r=t.mount.mountpoint;return e?r[r.length-1]!=="/"?r+"/"+e:r+e:r}e=e?t.name+"/"+e:t.name,t=t.parent}},hashName:function(t,e){for(var r=0,i=0;i>>0)%y.nameTable.length},hashAddNode:function(t){var e=y.hashName(t.parent.id,t.name);t.name_next=y.nameTable[e],y.nameTable[e]=t},hashRemoveNode:function(t){var e=y.hashName(t.parent.id,t.name);if(y.nameTable[e]===t)y.nameTable[e]=t.name_next;else for(var r=y.nameTable[e];r;){if(r.name_next===t){r.name_next=t.name_next;break}r=r.name_next}},lookupNode:function(t,e){var r=y.mayLookup(t);if(r)throw new y.ErrnoError(r,t);for(var i=y.hashName(t.id,e),n=y.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===t.id&&s===e)return n}return y.lookup(t,e)},createNode:function(t,e,r,i){var n=new y.FSNode(t,e,r,i);return y.hashAddNode(n),n},destroyNode:function(t){y.hashRemoveNode(t)},isRoot:function(t){return t===t.parent},isMountpoint:function(t){return!!t.mounted},isFile:function(t){return(t&61440)==32768},isDir:function(t){return(t&61440)==16384},isLink:function(t){return(t&61440)==40960},isChrdev:function(t){return(t&61440)==8192},isBlkdev:function(t){return(t&61440)==24576},isFIFO:function(t){return(t&61440)==4096},isSocket:function(t){return(t&49152)==49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(t){var e=y.flagModes[t];if(typeof e=="undefined")throw new Error("Unknown file open mode: "+t);return e},flagsToPermissionString:function(t){var e=["r","w","rw"][t&3];return t&512&&(e+="w"),e},nodePermissions:function(t,e){return y.ignorePermissions?0:e.includes("r")&&!(t.mode&292)||e.includes("w")&&!(t.mode&146)||e.includes("x")&&!(t.mode&73)?2:0},mayLookup:function(t){var e=y.nodePermissions(t,"x");return e||(t.node_ops.lookup?0:2)},mayCreate:function(t,e){try{var r=y.lookupNode(t,e);return 20}catch(i){}return y.nodePermissions(t,"wx")},mayDelete:function(t,e,r){var i;try{i=y.lookupNode(t,e)}catch(s){return s.errno}var n=y.nodePermissions(t,"wx");if(n)return n;if(r){if(!y.isDir(i.mode))return 54;if(y.isRoot(i)||y.getPath(i)===y.cwd())return 10}else if(y.isDir(i.mode))return 31;return 0},mayOpen:function(t,e){return t?y.isLink(t.mode)?32:y.isDir(t.mode)&&(y.flagsToPermissionString(e)!=="r"||e&512)?31:y.nodePermissions(t,y.flagsToPermissionString(e)):44},MAX_OPEN_FDS:4096,nextfd:function(t,e){t=t||0,e=e||y.MAX_OPEN_FDS;for(var r=t;r<=e;r++)if(!y.streams[r])return r;throw new y.ErrnoError(33)},getStream:function(t){return y.streams[t]},createStream:function(t,e,r){y.FSStream||(y.FSStream=function(){},y.FSStream.prototype={object:{get:function(){return this.node},set:function(o){this.node=o}},isRead:{get:function(){return(this.flags&2097155)!=1}},isWrite:{get:function(){return(this.flags&2097155)!=0}},isAppend:{get:function(){return this.flags&1024}}});var i=new y.FSStream;for(var n in t)i[n]=t[n];t=i;var s=y.nextfd(e,r);return t.fd=s,y.streams[s]=t,t},closeStream:function(t){y.streams[t]=null},chrdev_stream_ops:{open:function(t){var e=y.getDevice(t.node.rdev);t.stream_ops=e.stream_ops,t.stream_ops.open&&t.stream_ops.open(t)},llseek:function(){throw new y.ErrnoError(70)}},major:function(t){return t>>8},minor:function(t){return t&255},makedev:function(t,e){return t<<8|e},registerDevice:function(t,e){y.devices[t]={stream_ops:e}},getDevice:function(t){return y.devices[t]},getMounts:function(t){for(var e=[],r=[t];r.length;){var i=r.pop();e.push(i),r.push.apply(r,i.mounts)}return e},syncfs:function(t,e){typeof t=="function"&&(e=t,t=!1),y.syncFSRequests++,y.syncFSRequests>1&&Di("warning: "+y.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=y.getMounts(y.root.mount),i=0;function n(o){return y.syncFSRequests--,e(o)}function s(o){if(o)return s.errored?void 0:(s.errored=!0,n(o));++i>=r.length&&n(null)}r.forEach(function(o){if(!o.type.syncfs)return s(null);o.type.syncfs(o,t,s)})},mount:function(t,e,r){var i=r==="/",n=!r,s;if(i&&y.root)throw new y.ErrnoError(10);if(!i&&!n){var o=y.lookupPath(r,{follow_mount:!1});if(r=o.path,s=o.node,y.isMountpoint(s))throw new y.ErrnoError(10);if(!y.isDir(s.mode))throw new y.ErrnoError(54)}var a={type:t,opts:e,mountpoint:r,mounts:[]},l=t.mount(a);return l.mount=a,a.root=l,i?y.root=l:s&&(s.mounted=a,s.mount&&s.mount.mounts.push(a)),l},unmount:function(t){var e=y.lookupPath(t,{follow_mount:!1});if(!y.isMountpoint(e.node))throw new y.ErrnoError(28);var r=e.node,i=r.mounted,n=y.getMounts(i);Object.keys(y.nameTable).forEach(function(o){for(var a=y.nameTable[o];a;){var l=a.name_next;n.includes(a.mount)&&y.destroyNode(a),a=l}}),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:function(t,e){return t.node_ops.lookup(t,e)},mknod:function(t,e,r){var i=y.lookupPath(t,{parent:!0}),n=i.node,s=yt.basename(t);if(!s||s==="."||s==="..")throw new y.ErrnoError(28);var o=y.mayCreate(n,s);if(o)throw new y.ErrnoError(o);if(!n.node_ops.mknod)throw new y.ErrnoError(63);return n.node_ops.mknod(n,s,e,r)},create:function(t,e){return e=e!==void 0?e:438,e&=4095,e|=32768,y.mknod(t,e,0)},mkdir:function(t,e){return e=e!==void 0?e:511,e&=511|512,e|=16384,y.mknod(t,e,0)},mkdirTree:function(t,e){for(var r=t.split("/"),i="",n=0;nthis.length-1||f<0)){var h=f%this.chunkSize,p=f/this.chunkSize|0;return this.getter(p)[h]}},s.prototype.setDataGetter=function(f){this.getter=f},s.prototype.cacheLength=function(){var f=new XMLHttpRequest;if(f.open("HEAD",r,!1),f.send(null),!(f.status>=200&&f.status<300||f.status===304))throw new Error("Couldn't load "+r+". Status: "+f.status);var h=Number(f.getResponseHeader("Content-length")),p,d=(p=f.getResponseHeader("Accept-Ranges"))&&p==="bytes",m=(p=f.getResponseHeader("Content-Encoding"))&&p==="gzip",I=1024*1024;d||(I=h);var B=function(R,H){if(R>H)throw new Error("invalid range ("+R+", "+H+") or no bytes requested!");if(H>h-1)throw new Error("only "+h+" bytes available! programmer error!");var L=new XMLHttpRequest;if(L.open("GET",r,!1),h!==I&&L.setRequestHeader("Range","bytes="+R+"-"+H),typeof Uint8Array!="undefined"&&(L.responseType="arraybuffer"),L.overrideMimeType&&L.overrideMimeType("text/plain; charset=x-user-defined"),L.send(null),!(L.status>=200&&L.status<300||L.status===304))throw new Error("Couldn't load "+r+". Status: "+L.status);return L.response!==void 0?new Uint8Array(L.response||[]):CP(L.responseText||"",!0)},b=this;b.setDataGetter(function(R){var H=R*I,L=(R+1)*I-1;if(L=Math.min(L,h-1),typeof b.chunks[R]=="undefined"&&(b.chunks[R]=B(H,L)),typeof b.chunks[R]=="undefined")throw new Error("doXHR failed!");return b.chunks[R]}),(m||!h)&&(I=h=1,h=this.getter(0).length,I=h,$y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=h,this._chunkSize=I,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!i4)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else var a={isDevice:!1,url:r};var l=y.createFile(t,e,a,i,n);a.contents?l.contents=a.contents:a.url&&(l.contents=null,l.url=a.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var c={},u=Object.keys(l.stream_ops);return u.forEach(function(g){var f=l.stream_ops[g];c[g]=function(){return y.forceLoadFile(l),f.apply(null,arguments)}}),c.read=function(f,h,p,d,m){y.forceLoadFile(l);var I=f.node.contents;if(m>=I.length)return 0;var B=Math.min(I.length-m,d);if(I.slice)for(var b=0;b>2]=i.dev,_e[r+4>>2]=0,_e[r+8>>2]=i.ino,_e[r+12>>2]=i.mode,_e[r+16>>2]=i.nlink,_e[r+20>>2]=i.uid,_e[r+24>>2]=i.gid,_e[r+28>>2]=i.rdev,_e[r+32>>2]=0,ya=[i.size>>>0,(ai=i.size,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+40>>2]=ya[0],_e[r+44>>2]=ya[1],_e[r+48>>2]=4096,_e[r+52>>2]=i.blocks,_e[r+56>>2]=i.atime.getTime()/1e3|0,_e[r+60>>2]=0,_e[r+64>>2]=i.mtime.getTime()/1e3|0,_e[r+68>>2]=0,_e[r+72>>2]=i.ctime.getTime()/1e3|0,_e[r+76>>2]=0,ya=[i.ino>>>0,(ai=i.ino,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+80>>2]=ya[0],_e[r+84>>2]=ya[1],0},doMsync:function(t,e,r,i,n){var s=$u.slice(t,t+r);y.msync(e,s,n,r,i)},doMkdir:function(t,e){return t=yt.normalize(t),t[t.length-1]==="/"&&(t=t.substr(0,t.length-1)),y.mkdir(t,e,0),0},doMknod:function(t,e,r){switch(e&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return y.mknod(t,e,r),0},doReadlink:function(t,e,r){if(r<=0)return-28;var i=y.readlink(t),n=Math.min(r,rw(i)),s=Zi[e+n];return u4(i,e,r+1),Zi[e+n]=s,n},doAccess:function(t,e){if(e&~7)return-28;var r,i=y.lookupPath(t,{follow:!0});if(r=i.node,!r)return-44;var n="";return e&4&&(n+="r"),e&2&&(n+="w"),e&1&&(n+="x"),n&&y.nodePermissions(r,n)?-2:0},doDup:function(t,e,r){var i=y.getStream(r);return i&&y.close(i),y.open(t,e,0,r,r).fd},doReadv:function(t,e,r,i){for(var n=0,s=0;s>2],a=_e[e+(s*8+4)>>2],l=y.read(t,Zi,o,a,i);if(l<0)return-1;if(n+=l,l>2],a=_e[e+(s*8+4)>>2],l=y.write(t,Zi,o,a,i);if(l<0)return-1;n+=l}return n},varargs:void 0,get:function(){Ot.varargs+=4;var t=_e[Ot.varargs-4>>2];return t},getStr:function(t){var e=c4(t);return e},getStreamFromFD:function(t){var e=y.getStream(t);if(!e)throw new y.ErrnoError(8);return e},get64:function(t,e){return t}};function qxe(t,e){try{return t=Ot.getStr(t),y.chmod(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function Wxe(t){return _e[Jxe()>>2]=t,t}function zxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 0:{var n=Ot.get();if(n<0)return-28;var s;return s=y.open(i.path,i.flags,0,n),s.fd}case 1:case 2:return 0;case 3:return i.flags;case 4:{var n=Ot.get();return i.flags|=n,0}case 12:{var n=Ot.get(),o=0;return cP[n+o>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Wxe(28),-1;default:return-28}}catch(a){return(typeof y=="undefined"||!(a instanceof y.ErrnoError))&&Gr(a),-a.errno}}function Vxe(t,e){try{var r=Ot.getStreamFromFD(t);return Ot.doStat(y.stat,r.path,e)}catch(i){return(typeof y=="undefined"||!(i instanceof y.ErrnoError))&&Gr(i),-i.errno}}function _xe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 21509:case 21505:return i.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return i.tty?0:-59;case 21519:{if(!i.tty)return-59;var n=Ot.get();return _e[n>>2]=0,0}case 21520:return i.tty?-28:-59;case 21531:{var n=Ot.get();return y.ioctl(i,e,n)}case 21523:return i.tty?0:-59;case 21524:return i.tty?0:-59;default:Gr("bad ioctl syscall "+e)}}catch(s){return(typeof y=="undefined"||!(s instanceof y.ErrnoError))&&Gr(s),-s.errno}}function Xxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStr(t),n=r?Ot.get():0,s=y.open(i,e,n);return s.fd}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),-o.errno}}function Zxe(t,e){try{return t=Ot.getStr(t),e=Ot.getStr(e),y.rename(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function $xe(t){try{return t=Ot.getStr(t),y.rmdir(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function eke(t,e){try{return t=Ot.getStr(t),Ot.doStat(y.stat,t,e)}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function tke(t){try{return t=Ot.getStr(t),y.unlink(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function rke(t,e,r){$u.copyWithin(t,e,e+r)}function ike(t){try{return ew.grow(t-gP.byteLength+65535>>>16),p4(ew.buffer),1}catch(e){}}function nke(t){var e=$u.length;t=t>>>0;var r=2147483648;if(t>r)return!1;for(var i=1;i<=4;i*=2){var n=e*(1+.2/i);n=Math.min(n,t+100663296);var s=Math.min(r,xxe(Math.max(t,n),65536)),o=ike(s);if(o)return!0}return!1}function ske(t){try{var e=Ot.getStreamFromFD(t);return y.close(e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),r.errno}}function oke(t,e){try{var r=Ot.getStreamFromFD(t),i=r.tty?2:y.isDir(r.mode)?3:y.isLink(r.mode)?7:4;return Zi[e>>0]=i,0}catch(n){return(typeof y=="undefined"||!(n instanceof y.ErrnoError))&&Gr(n),n.errno}}function ake(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doReadv(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function Ake(t,e,r,i,n){try{var s=Ot.getStreamFromFD(t),o=4294967296,a=r*o+(e>>>0),l=9007199254740992;return a<=-l||a>=l?-61:(y.llseek(s,a,i),ya=[s.position>>>0,(ai=s.position,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[n>>2]=ya[0],_e[n+4>>2]=ya[1],s.getdents&&a===0&&i===0&&(s.getdents=null),0)}catch(c){return(typeof y=="undefined"||!(c instanceof y.ErrnoError))&&Gr(c),c.errno}}function lke(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doWritev(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function cke(t){Ixe(t)}function uke(t){var e=Date.now()/1e3|0;return t&&(_e[t>>2]=e),e}function IP(){if(IP.called)return;IP.called=!0;var t=new Date().getFullYear(),e=new Date(t,0,1),r=new Date(t,6,1),i=e.getTimezoneOffset(),n=r.getTimezoneOffset(),s=Math.max(i,n);_e[fke()>>2]=s*60,_e[gke()>>2]=Number(i!=n);function o(g){var f=g.toTimeString().match(/\(([A-Za-z ]+)\)$/);return f?f[1]:"GMT"}var a=o(e),l=o(r),c=uP(a),u=uP(l);n>2]=c,_e[nw()+4>>2]=u):(_e[nw()>>2]=u,_e[nw()+4>>2]=c)}function hke(t){IP();var e=Date.UTC(_e[t+20>>2]+1900,_e[t+16>>2],_e[t+12>>2],_e[t+8>>2],_e[t+4>>2],_e[t>>2],0),r=new Date(e);_e[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[t+28>>2]=n,r.getTime()/1e3|0}var B4=function(t,e,r,i){t||(t=this),this.parent=t,this.mount=t.mount,this.mounted=null,this.id=y.nextInode++,this.name=e,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},sw=292|73,ow=146;Object.defineProperties(B4.prototype,{read:{get:function(){return(this.mode&sw)===sw},set:function(t){t?this.mode|=sw:this.mode&=~sw}},write:{get:function(){return(this.mode&ow)===ow},set:function(t){t?this.mode|=ow:this.mode&=~ow}},isFolder:{get:function(){return y.isDir(this.mode)}},isDevice:{get:function(){return y.isChrdev(this.mode)}}});y.FSNode=B4;y.staticInit();Wl&&(ft=e4,EP=require("path"),tt.staticInit());var ft,EP;if(Wl){Q4=function(t){return function(){try{return t.apply(this,arguments)}catch(e){throw e.code?new y.ErrnoError(eg[e.code]):e}}},Vl=Object.assign({},y);for(yP in w4)y[yP]=Q4(w4[yP])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");var Q4,Vl,yP;function CP(t,e,r){var i=r>0?r:rw(t)+1,n=new Array(i),s=tw(t,n,0,n.length);return e&&(n.length=s),n}var pke=typeof atob=="function"?atob:function(t){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="",i,n,s,o,a,l,c,u=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");do o=e.indexOf(t.charAt(u++)),a=e.indexOf(t.charAt(u++)),l=e.indexOf(t.charAt(u++)),c=e.indexOf(t.charAt(u++)),i=o<<2|a>>4,n=(a&15)<<4|l>>2,s=(l&3)<<6|c,r=r+String.fromCharCode(i),l!==64&&(r=r+String.fromCharCode(n)),c!==64&&(r=r+String.fromCharCode(s));while(u0||(Fxe(),zl>0))return;function e(){aw||(aw=!0,oe.calledRun=!0,!A4&&(Nxe(),oe.onRuntimeInitialized&&oe.onRuntimeInitialized(),Txe()))}oe.setStatus?(oe.setStatus("Running..."),setTimeout(function(){setTimeout(function(){oe.setStatus("")},1),e()},1)):e()}oe.run=wP;if(oe.preInit)for(typeof oe.preInit=="function"&&(oe.preInit=[oe.preInit]);oe.preInit.length>0;)oe.preInit.pop()();wP()});var x4=E((Dot,S4)=>{"use strict";function Cke(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function _l(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,_l)}Cke(_l,Error);_l.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ee=At(">>",!1),Ue=">&",Oe=At(">&",!1),vt=">",dt=At(">",!1),ri="<<<",ii=At("<<<",!1),an="<&",yr=At("<&",!1),Ki="<",Qi=At("<",!1),Go=function(C){return{type:"argument",segments:[].concat(...C)}},wr=function(C){return C},Ui="'",ws=At("'",!1),Tf=function(C){return[{type:"text",text:C}]},Mf='"',Rm=At('"',!1),Fm=function(C){return C},Nm=function(C){return{type:"arithmetic",arithmetic:C,quoted:!0}},DQ=function(C){return{type:"shell",shell:C,quoted:!0}},RQ=function(C){return _(P({type:"variable"},C),{quoted:!0})},Of=function(C){return{type:"text",text:C}},FQ=function(C){return{type:"arithmetic",arithmetic:C,quoted:!1}},NQ=function(C){return{type:"shell",shell:C,quoted:!1}},Lm=function(C){return _(P({type:"variable"},C),{quoted:!1})},LQ=function(C){return{type:"glob",pattern:C}},Va="\\",jo=At("\\",!1),Tm=/^[\\']/,Mm=Qs(["\\","'"],!1,!1),te=function(C){return C},Om=/^[^']/,Km=Qs(["'"],!0,!1),il=function(C){return C.join("")},Um=/^[\\$"]/,Hm=Qs(["\\","$",'"'],!1,!1),Kf=/^[^$"]/,Gm=Qs(["$",'"'],!0,!1),jm="\\0",TQ=At("\\0",!1),MQ=function(){return"\0"},Ym="\\a",qm=At("\\a",!1),Jm=function(){return"a"},Wm="\\b",zm=At("\\b",!1),Vm=function(){return"\b"},Uf="\\e",OQ=At("\\e",!1),KQ=function(){return""},_m="\\f",UQ=At("\\f",!1),HQ=function(){return"\f"},O="\\n",ht=At("\\n",!1),Vc=function(){return` -`},xn="\\r",Hf=At("\\r",!1),Ye=function(){return"\r"},nl="\\t",Xm=At("\\t",!1),MM=function(){return" "},GQ="\\v",OM=At("\\v",!1),fr=function(){return"\v"},Bs="\\x",jQ=At("\\x",!1),Zm=function(C){return String.fromCharCode(parseInt(C,16))},Yo="\\u",$m=At("\\u",!1),_a="\\U",et=At("\\U",!1),YQ=function(C){return String.fromCodePoint(parseInt(C,16))},eE=/^[0-9a-fA-f]/,tE=Qs([["0","9"],["a","f"],["A","f"]],!1,!1),Xa=Cfe(),sl="-",ol=At("-",!1),al="+",qo=At("+",!1),Al=".",qQ=At(".",!1),rE=function(C,Q,k){return{type:"number",value:(C==="-"?-1:1)*parseFloat(Q.join("")+"."+k.join(""))}},iE=function(C,Q){return{type:"number",value:(C==="-"?-1:1)*parseInt(Q.join(""))}},JQ=function(C){return P({type:"variable"},C)},ll=function(C){return{type:"variable",name:C}},WQ=function(C){return C},nE="*",Gf=At("*",!1),_c="/",jf=At("/",!1),sE=function(C,Q,k){return{type:Q==="*"?"multiplication":"division",right:k}},cl=function(C,Q){return Q.reduce((k,N)=>P({left:k},N),C)},oE=function(C,Q,k){return{type:Q==="+"?"addition":"subtraction",right:k}},Yf="$((",Xc=At("$((",!1),xr="))",KM=At("))",!1),Jo=function(C){return C},Zs="$(",aE=At("$(",!1),Zc=function(C){return C},x="${",U=At("${",!1),le=":-",xe=At(":-",!1),Qe=function(C,Q){return{name:C,defaultValue:Q}},Ge=":-}",ct=At(":-}",!1),sr=function(C){return{name:C,defaultValue:[]}},Wo=function(C){return{name:C}},Afe="$",lfe=At("$",!1),cfe=function(C){return e.isGlobPattern(C)},ufe=function(C){return C},UM=/^[a-zA-Z0-9_]/,HM=Qs([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),GM=function(){return dfe()},jM=/^[$@*?#a-zA-Z0-9_\-]/,YM=Qs(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),gfe=/^[(){}<>$|&; \t"']/,ffe=Qs(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),hfe=/^[<>&; \t"']/,pfe=Qs(["<",">","&",";"," "," ",'"',"'"],!1,!1),qM=/^[ \t]/,JM=Qs([" "," "],!1,!1),w=0,Re=0,AE=[{line:1,column:1}],$s=0,zQ=[],we=0,lE;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function dfe(){return t.substring(Re,w)}function P_e(){return qf(Re,w)}function D_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),zM([Efe(C)],t.substring(Re,w),Q)}function R_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),Ife(C,Q)}function At(C,Q){return{type:"literal",text:C,ignoreCase:Q}}function Qs(C,Q,k){return{type:"class",parts:C,inverted:Q,ignoreCase:k}}function Cfe(){return{type:"any"}}function mfe(){return{type:"end"}}function Efe(C){return{type:"other",description:C}}function WM(C){var Q=AE[C],k;if(Q)return Q;for(k=C-1;!AE[k];)k--;for(Q=AE[k],Q={line:Q.line,column:Q.column};k$s&&($s=w,zQ=[]),zQ.push(C))}function Ife(C,Q){return new _l(C,null,null,Q)}function zM(C,Q,k){return new _l(_l.buildMessage(C,Q),C,Q,k)}function VM(){var C,Q;return C=w,Q=Jf(),Q===r&&(Q=null),Q!==r&&(Re=C,Q=s(Q)),C=Q,C}function Jf(){var C,Q,k,N,Z;if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N!==r?(Z=yfe(),Z===r&&(Z=null),Z!==r?(Re=C,Q=o(Q,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;if(C===r)if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N===r&&(N=null),N!==r?(Re=C,Q=a(Q,N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function yfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Jf(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=l(k),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function _M(){var C;return t.charCodeAt(w)===59?(C=c,w++):(C=r,we===0&&ve(u)),C===r&&(t.charCodeAt(w)===38?(C=g,w++):(C=r,we===0&&ve(f))),C}function VQ(){var C,Q,k;return C=w,Q=XM(),Q!==r?(k=wfe(),k===r&&(k=null),k!==r?(Re=C,Q=h(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function wfe(){var C,Q,k,N,Z,Ee,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=VQ(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=p(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function Bfe(){var C;return t.substr(w,2)===d?(C=d,w+=2):(C=r,we===0&&ve(m)),C===r&&(t.substr(w,2)===I?(C=I,w+=2):(C=r,we===0&&ve(B))),C}function XM(){var C,Q,k;return C=w,Q=vfe(),Q!==r?(k=Qfe(),k===r&&(k=null),k!==r?(Re=C,Q=b(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function Qfe(){var C,Q,k,N,Z,Ee,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=XM(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=R(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function bfe(){var C;return t.substr(w,2)===H?(C=H,w+=2):(C=r,we===0&&ve(L)),C===r&&(t.charCodeAt(w)===124?(C=K,w++):(C=r,we===0&&ve(J))),C}function cE(){var C,Q,k,N,Z,Ee;if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r)if(N=$M(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(Re=C,Q=A(Q,N),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;else w=C,C=r;if(C===r)if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=V(Q),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function vfe(){var C,Q,k,N,Z,Ee,ot,ut,Tr,ni,Yn;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===40?(k=W,w++):(k=r,we===0&&ve(X)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();if(Ee!==r)if(t.charCodeAt(w)===41?(ot=F,w++):(ot=r,we===0&&ve(D)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=he(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===123?(k=pe,w++):(k=r,we===0&&ve(Ne)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();if(Ee!==r)if(t.charCodeAt(w)===125?(ot=Pe,w++):(ot=r,we===0&&ve(qe)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=re(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){for(k=[],N=cE();N!==r;)k.push(N),N=cE();if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r){if(Z=[],Ee=ZM(),Ee!==r)for(;Ee!==r;)Z.push(Ee),Ee=ZM();else Z=r;if(Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=se(k,Z),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r}else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=cE(),N!==r)for(;N!==r;)k.push(N),N=cE();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=be(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}}}return C}function Sfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=uE(),N!==r)for(;N!==r;)k.push(N),N=uE();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=ae(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r;return C}function ZM(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r?(k=Wf(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();Q!==r?(k=uE(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r)}return C}function Wf(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(De.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve($)),k===r&&(k=null),k!==r?(N=xfe(),N!==r?(Z=uE(),Z!==r?(Re=C,Q=G(k,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function xfe(){var C;return t.substr(w,2)===Ce?(C=Ce,w+=2):(C=r,we===0&&ve(ee)),C===r&&(t.substr(w,2)===Ue?(C=Ue,w+=2):(C=r,we===0&&ve(Oe)),C===r&&(t.charCodeAt(w)===62?(C=vt,w++):(C=r,we===0&&ve(dt)),C===r&&(t.substr(w,3)===ri?(C=ri,w+=3):(C=r,we===0&&ve(ii)),C===r&&(t.substr(w,2)===an?(C=an,w+=2):(C=r,we===0&&ve(yr)),C===r&&(t.charCodeAt(w)===60?(C=Ki,w++):(C=r,we===0&&ve(Qi))))))),C}function uE(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(k=$M(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C}function $M(){var C,Q,k;if(C=w,Q=[],k=eO(),k!==r)for(;k!==r;)Q.push(k),k=eO();else Q=r;return Q!==r&&(Re=C,Q=Go(Q)),C=Q,C}function eO(){var C,Q;return C=w,Q=kfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Pfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Dfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q)),C}function kfe(){var C,Q,k,N;return C=w,t.charCodeAt(w)===39?(Q=Ui,w++):(Q=r,we===0&&ve(ws)),Q!==r?(k=Rfe(),k!==r?(t.charCodeAt(w)===39?(N=Ui,w++):(N=r,we===0&&ve(ws)),N!==r?(Re=C,Q=Tf(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function Pfe(){var C,Q,k,N;if(C=w,t.charCodeAt(w)===34?(Q=Mf,w++):(Q=r,we===0&&ve(Rm)),Q!==r){for(k=[],N=tO();N!==r;)k.push(N),N=tO();k!==r?(t.charCodeAt(w)===34?(N=Mf,w++):(N=r,we===0&&ve(Rm)),N!==r?(Re=C,Q=Fm(k),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function Dfe(){var C,Q,k;if(C=w,Q=[],k=rO(),k!==r)for(;k!==r;)Q.push(k),k=rO();else Q=r;return Q!==r&&(Re=C,Q=Fm(Q)),C=Q,C}function tO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=Nm(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=DQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=RQ(Q)),C=Q,C===r&&(C=w,Q=Ffe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q))),C}function rO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=FQ(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=NQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=Lm(Q)),C=Q,C===r&&(C=w,Q=Lfe(),Q!==r&&(Re=C,Q=LQ(Q)),C=Q,C===r&&(C=w,Q=Nfe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q)))),C}function Rfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));k!==r;)Q.push(k),k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function Ffe(){var C,Q,k,N,Z;if(C=w,Q=[],k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm))))),k!==r)for(;k!==r;)Q.push(k),k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm)))));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function gE(){var C,Q;return C=w,t.substr(w,2)===jm?(Q=jm,w+=2):(Q=r,we===0&&ve(TQ)),Q!==r&&(Re=C,Q=MQ()),C=Q,C===r&&(C=w,t.substr(w,2)===Ym?(Q=Ym,w+=2):(Q=r,we===0&&ve(qm)),Q!==r&&(Re=C,Q=Jm()),C=Q,C===r&&(C=w,t.substr(w,2)===Wm?(Q=Wm,w+=2):(Q=r,we===0&&ve(zm)),Q!==r&&(Re=C,Q=Vm()),C=Q,C===r&&(C=w,t.substr(w,2)===Uf?(Q=Uf,w+=2):(Q=r,we===0&&ve(OQ)),Q!==r&&(Re=C,Q=KQ()),C=Q,C===r&&(C=w,t.substr(w,2)===_m?(Q=_m,w+=2):(Q=r,we===0&&ve(UQ)),Q!==r&&(Re=C,Q=HQ()),C=Q,C===r&&(C=w,t.substr(w,2)===O?(Q=O,w+=2):(Q=r,we===0&&ve(ht)),Q!==r&&(Re=C,Q=Vc()),C=Q,C===r&&(C=w,t.substr(w,2)===xn?(Q=xn,w+=2):(Q=r,we===0&&ve(Hf)),Q!==r&&(Re=C,Q=Ye()),C=Q,C===r&&(C=w,t.substr(w,2)===nl?(Q=nl,w+=2):(Q=r,we===0&&ve(Xm)),Q!==r&&(Re=C,Q=MM()),C=Q,C===r&&(C=w,t.substr(w,2)===GQ?(Q=GQ,w+=2):(Q=r,we===0&&ve(OM)),Q!==r&&(Re=C,Q=fr()),C=Q)))))))),C}function fE(){var C,Q,k,N,Z,Ee,ot,ut,Tr,ni,Yn,$Q;return C=w,t.substr(w,2)===Bs?(Q=Bs,w+=2):(Q=r,we===0&&ve(jQ)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(Z=[Z,Ee],N=Z):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===Yo?(Q=Yo,w+=2):(Q=r,we===0&&ve($m)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Z=[Z,Ee,ot,ut],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===_a?(Q=_a,w+=2):(Q=r,we===0&&ve(et)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Tr=An(),Tr!==r?(ni=An(),ni!==r?(Yn=An(),Yn!==r?($Q=An(),$Q!==r?(Z=[Z,Ee,ot,ut,Tr,ni,Yn,$Q],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=YQ(k),C=Q):(w=C,C=r)):(w=C,C=r))),C}function An(){var C;return eE.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(tE)),C}function Nfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r)),k!==r)for(;k!==r;)Q.push(k),k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function _Q(){var C,Q,k,N,Z,Ee;if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;if(k!==r)if(t.charCodeAt(w)===46?(N=Al,w++):(N=r,we===0&&ve(qQ)),N!==r){if(Z=[],De.test(t.charAt(w))?(Ee=t.charAt(w),w++):(Ee=r,we===0&&ve($)),Ee!==r)for(;Ee!==r;)Z.push(Ee),De.test(t.charAt(w))?(Ee=t.charAt(w),w++):(Ee=r,we===0&&ve($));else Z=r;Z!==r?(Re=C,Q=rE(Q,k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;if(C===r){if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;k!==r?(Re=C,Q=iE(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;if(C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=JQ(Q)),C=Q,C===r&&(C=w,Q=zf(),Q!==r&&(Re=C,Q=ll(Q)),C=Q,C===r)))if(C=w,t.charCodeAt(w)===40?(Q=W,w++):(Q=r,we===0&&ve(X)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(t.charCodeAt(w)===41?(Ee=F,w++):(Ee=r,we===0&&ve(D)),Ee!==r?(Re=C,Q=WQ(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r}return C}function XQ(){var C,Q,k,N,Z,Ee,ot,ut;if(C=w,Q=_Q(),Q!==r){for(k=[],N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ee=nE,w++):(Ee=r,we===0&&ve(Gf)),Ee===r&&(t.charCodeAt(w)===47?(Ee=_c,w++):(Ee=r,we===0&&ve(jf))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ee=nE,w++):(Ee=r,we===0&&ve(Gf)),Ee===r&&(t.charCodeAt(w)===47?(Ee=_c,w++):(Ee=r,we===0&&ve(jf))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function iO(){var C,Q,k,N,Z,Ee,ot,ut;if(C=w,Q=XQ(),Q!==r){for(k=[],N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ee=al,w++):(Ee=r,we===0&&ve(qo)),Ee===r&&(t.charCodeAt(w)===45?(Ee=sl,w++):(Ee=r,we===0&&ve(ol))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ee=al,w++):(Ee=r,we===0&&ve(qo)),Ee===r&&(t.charCodeAt(w)===45?(Ee=sl,w++):(Ee=r,we===0&&ve(ol))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function nO(){var C,Q,k,N,Z,Ee;if(C=w,t.substr(w,3)===Yf?(Q=Yf,w+=3):(Q=r,we===0&&ve(Xc)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(t.substr(w,2)===xr?(Ee=xr,w+=2):(Ee=r,we===0&&ve(KM)),Ee!==r?(Re=C,Q=Jo(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;return C}function sO(){var C,Q,k,N;return C=w,t.substr(w,2)===Zs?(Q=Zs,w+=2):(Q=r,we===0&&ve(aE)),Q!==r?(k=Jf(),k!==r?(t.charCodeAt(w)===41?(N=F,w++):(N=r,we===0&&ve(D)),N!==r?(Re=C,Q=Zc(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function ZQ(){var C,Q,k,N,Z,Ee;return C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,2)===le?(N=le,w+=2):(N=r,we===0&&ve(xe)),N!==r?(Z=Sfe(),Z!==r?(t.charCodeAt(w)===125?(Ee=Pe,w++):(Ee=r,we===0&&ve(qe)),Ee!==r?(Re=C,Q=Qe(k,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,3)===Ge?(N=Ge,w+=3):(N=r,we===0&&ve(ct)),N!==r?(Re=C,Q=sr(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.charCodeAt(w)===125?(N=Pe,w++):(N=r,we===0&&ve(qe)),N!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.charCodeAt(w)===36?(Q=Afe,w++):(Q=r,we===0&&ve(lfe)),Q!==r?(k=zf(),k!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)))),C}function Lfe(){var C,Q,k;return C=w,Q=Tfe(),Q!==r?(Re=w,k=cfe(Q),k?k=void 0:k=r,k!==r?(Re=C,Q=ufe(Q),C=Q):(w=C,C=r)):(w=C,C=r),C}function Tfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k!==r)for(;k!==r;)Q.push(k),k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r);else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function oO(){var C,Q,k;if(C=w,Q=[],UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM)),k!==r)for(;k!==r;)Q.push(k),UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function zf(){var C,Q,k;if(C=w,Q=[],jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM)),k!==r)for(;k!==r;)Q.push(k),jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function aO(){var C;return gfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(ffe)),C}function AO(){var C;return hfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(pfe)),C}function ke(){var C,Q;if(C=[],qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM)),Q!==r)for(;Q!==r;)C.push(Q),qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM));else C=r;return C}if(lE=n(),lE!==r&&w===t.length)return lE;throw lE!==r&&w{"use strict";function Eke(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Xl(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Xl)}Eke(Xl,Error);Xl.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=B,L=[]),L.push($))}function qe($,G){return new Xl($,null,null,G)}function re($,G,Ce){return new Xl(Xl.buildMessage($,G),$,G,Ce)}function se(){var $,G,Ce,ee;return $=B,G=be(),G!==r?(t.charCodeAt(B)===47?(Ce=s,B++):(Ce=r,K===0&&Pe(o)),Ce!==r?(ee=be(),ee!==r?(b=$,G=a(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=be(),G!==r&&(b=$,G=l(G)),$=G),$}function be(){var $,G,Ce,ee;return $=B,G=ae(),G!==r?(t.charCodeAt(B)===64?(Ce=c,B++):(Ce=r,K===0&&Pe(u)),Ce!==r?(ee=De(),ee!==r?(b=$,G=g(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=ae(),G!==r&&(b=$,G=f(G)),$=G),$}function ae(){var $,G,Ce,ee,Ue;return $=B,t.charCodeAt(B)===64?(G=c,B++):(G=r,K===0&&Pe(u)),G!==r?(Ce=Ae(),Ce!==r?(t.charCodeAt(B)===47?(ee=s,B++):(ee=r,K===0&&Pe(o)),ee!==r?(Ue=Ae(),Ue!==r?(b=$,G=h(),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=Ae(),G!==r&&(b=$,G=h()),$=G),$}function Ae(){var $,G,Ce;if($=B,G=[],p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d)),Ce!==r)for(;Ce!==r;)G.push(Ce),p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d));else G=r;return G!==r&&(b=$,G=h()),$=G,$}function De(){var $,G,Ce;if($=B,G=[],m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(I)),Ce!==r)for(;Ce!==r;)G.push(Ce),m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(I));else G=r;return G!==r&&(b=$,G=h()),$=G,$}if(J=n(),J!==r&&B===t.length)return J;throw J!==r&&B{"use strict";function F4(t){return typeof t=="undefined"||t===null}function yke(t){return typeof t=="object"&&t!==null}function wke(t){return Array.isArray(t)?t:F4(t)?[]:[t]}function Bke(t,e){var r,i,n,s;if(e)for(s=Object.keys(e),r=0,i=s.length;r{"use strict";function Lp(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Lp.prototype=Object.create(Error.prototype);Lp.prototype.constructor=Lp;Lp.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};N4.exports=Lp});var M4=E((Vot,L4)=>{"use strict";var T4=$l();function kP(t,e,r,i,n){this.name=t,this.buffer=e,this.position=r,this.line=i,this.column=n}kP.prototype.getSnippet=function(e,r){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,r=r||75,i="",n=this.position;n>0&&`\0\r -\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>r/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;or/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),T4.repeat(" ",e)+i+a+s+` -`+T4.repeat(" ",e+this.position-n+i.length)+"^"};kP.prototype.toString=function(e){var r,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(i+=`: -`+r)),i};L4.exports=kP});var Xr=E((_ot,O4)=>{"use strict";var K4=ng(),vke=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Ske=["scalar","sequence","mapping"];function xke(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(i){e[String(i)]=r})}),e}function kke(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(vke.indexOf(r)===-1)throw new K4('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=xke(e.styleAliases||null),Ske.indexOf(this.kind)===-1)throw new K4('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}O4.exports=kke});var ec=E((Xot,U4)=>{"use strict";var H4=$l(),hw=ng(),Pke=Xr();function PP(t,e,r){var i=[];return t.include.forEach(function(n){r=PP(n,e,r)}),t[e].forEach(function(n){r.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),r.push(n)}),r.filter(function(n,s){return i.indexOf(s)===-1})}function Dke(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function i(n){t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,r=arguments.length;e{"use strict";var Rke=Xr();G4.exports=new Rke("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var q4=E(($ot,Y4)=>{"use strict";var Fke=Xr();Y4.exports=new Fke("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var W4=E((eat,J4)=>{"use strict";var Nke=Xr();J4.exports=new Nke("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var pw=E((tat,z4)=>{"use strict";var Lke=ec();z4.exports=new Lke({explicit:[j4(),q4(),W4()]})});var _4=E((rat,V4)=>{"use strict";var Tke=Xr();function Mke(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function Oke(){return null}function Kke(t){return t===null}V4.exports=new Tke("tag:yaml.org,2002:null",{kind:"scalar",resolve:Mke,construct:Oke,predicate:Kke,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var Z4=E((iat,X4)=>{"use strict";var Uke=Xr();function Hke(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function Gke(t){return t==="true"||t==="True"||t==="TRUE"}function jke(t){return Object.prototype.toString.call(t)==="[object Boolean]"}X4.exports=new Uke("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Hke,construct:Gke,predicate:jke,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var ez=E((nat,$4)=>{"use strict";var Yke=$l(),qke=Xr();function Jke(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function Wke(t){return 48<=t&&t<=55}function zke(t){return 48<=t&&t<=57}function Vke(t){if(t===null)return!1;var e=t.length,r=0,i=!1,n;if(!e)return!1;if(n=t[r],(n==="-"||n==="+")&&(n=t[++r]),n==="0"){if(r+1===e)return!0;if(n=t[++r],n==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var iz=E((sat,tz)=>{"use strict";var rz=$l(),Zke=Xr(),$ke=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ePe(t){return!(t===null||!$ke.test(t)||t[t.length-1]==="_")}function tPe(t){var e,r,i,n;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),r*e):r*parseFloat(e,10)}var rPe=/^[-+]?[0-9]+e/;function iPe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(rz.isNegativeZero(t))return"-0.0";return r=t.toString(10),rPe.test(r)?r.replace("e",".e"):r}function nPe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!=0||rz.isNegativeZero(t))}tz.exports=new Zke("tag:yaml.org,2002:float",{kind:"scalar",resolve:ePe,construct:tPe,predicate:nPe,represent:iPe,defaultStyle:"lowercase"})});var DP=E((oat,nz)=>{"use strict";var sPe=ec();nz.exports=new sPe({include:[pw()],implicit:[_4(),Z4(),ez(),iz()]})});var RP=E((aat,sz)=>{"use strict";var oPe=ec();sz.exports=new oPe({include:[DP()]})});var lz=E((Aat,oz)=>{"use strict";var aPe=Xr(),az=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Az=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function APe(t){return t===null?!1:az.exec(t)!==null||Az.exec(t)!==null}function lPe(t){var e,r,i,n,s,o,a,l=0,c=null,u,g,f;if(e=az.exec(t),e===null&&(e=Az.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(r,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function cPe(t){return t.toISOString()}oz.exports=new aPe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:APe,construct:lPe,instanceOf:Date,represent:cPe})});var uz=E((lat,cz)=>{"use strict";var uPe=Xr();function gPe(t){return t==="<<"||t===null}cz.exports=new uPe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:gPe})});var hz=E((cat,gz)=>{"use strict";var tc;try{fz=require,tc=fz("buffer").Buffer}catch(t){}var fz,fPe=Xr(),FP=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function hPe(t){if(t===null)return!1;var e,r,i=0,n=t.length,s=FP;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8==0}function pPe(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,s=FP,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return r=n%4*6,r===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):r===18?(a.push(o>>10&255),a.push(o>>2&255)):r===12&&a.push(o>>4&255),tc?tc.from?tc.from(a):new tc(a):a}function dPe(t){var e="",r=0,i,n,s=t.length,o=FP;for(i=0;i>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]),r=(r<<8)+t[i];return n=s%3,n===0?(e+=o[r>>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]):n===2?(e+=o[r>>10&63],e+=o[r>>4&63],e+=o[r<<2&63],e+=o[64]):n===1&&(e+=o[r>>2&63],e+=o[r<<4&63],e+=o[64],e+=o[64]),e}function CPe(t){return tc&&tc.isBuffer(t)}gz.exports=new fPe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:hPe,construct:pPe,predicate:CPe,represent:dPe})});var dz=E((uat,pz)=>{"use strict";var mPe=Xr(),EPe=Object.prototype.hasOwnProperty,IPe=Object.prototype.toString;function yPe(t){if(t===null)return!0;var e=[],r,i,n,s,o,a=t;for(r=0,i=a.length;r{"use strict";var BPe=Xr(),QPe=Object.prototype.toString;function bPe(t){if(t===null)return!0;var e,r,i,n,s,o=t;for(s=new Array(o.length),e=0,r=o.length;e{"use strict";var SPe=Xr(),xPe=Object.prototype.hasOwnProperty;function kPe(t){if(t===null)return!0;var e,r=t;for(e in r)if(xPe.call(r,e)&&r[e]!==null)return!1;return!0}function PPe(t){return t!==null?t:{}}Ez.exports=new SPe("tag:yaml.org,2002:set",{kind:"mapping",resolve:kPe,construct:PPe})});var og=E((hat,yz)=>{"use strict";var DPe=ec();yz.exports=new DPe({include:[RP()],implicit:[lz(),uz()],explicit:[hz(),dz(),mz(),Iz()]})});var Bz=E((pat,wz)=>{"use strict";var RPe=Xr();function FPe(){return!0}function NPe(){}function LPe(){return""}function TPe(t){return typeof t=="undefined"}wz.exports=new RPe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:FPe,construct:NPe,predicate:TPe,represent:LPe})});var bz=E((dat,Qz)=>{"use strict";var MPe=Xr();function OPe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),i="";return!(e[0]==="/"&&(r&&(i=r[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function KPe(t){var e=t,r=/\/([gim]*)$/.exec(t),i="";return e[0]==="/"&&(r&&(i=r[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function UPe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function HPe(t){return Object.prototype.toString.call(t)==="[object RegExp]"}Qz.exports=new MPe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:OPe,construct:KPe,predicate:HPe,represent:UPe})});var xz=E((Cat,vz)=>{"use strict";var dw;try{Sz=require,dw=Sz("esprima")}catch(t){typeof window!="undefined"&&(dw=window.esprima)}var Sz,GPe=Xr();function jPe(t){if(t===null)return!1;try{var e="("+t+")",r=dw.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch(i){return!1}}function YPe(t){var e="("+t+")",r=dw.parse(e,{range:!0}),i=[],n;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function qPe(t){return t.toString()}function JPe(t){return Object.prototype.toString.call(t)==="[object Function]"}vz.exports=new GPe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:jPe,construct:YPe,predicate:JPe,represent:qPe})});var Tp=E((mat,kz)=>{"use strict";var Pz=ec();kz.exports=Pz.DEFAULT=new Pz({include:[og()],explicit:[Bz(),bz(),xz()]})});var Vz=E((Eat,Mp)=>{"use strict";var Ba=$l(),Dz=ng(),WPe=M4(),Rz=og(),zPe=Tp(),QA=Object.prototype.hasOwnProperty,Cw=1,Fz=2,Nz=3,mw=4,NP=1,VPe=2,Lz=3,_Pe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,XPe=/[\x85\u2028\u2029]/,ZPe=/[,\[\]\{\}]/,Tz=/^(?:!|!!|![a-z\-]+!)$/i,Mz=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Oz(t){return Object.prototype.toString.call(t)}function wo(t){return t===10||t===13}function rc(t){return t===9||t===32}function yn(t){return t===9||t===32||t===10||t===13}function ag(t){return t===44||t===91||t===93||t===123||t===125}function $Pe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function eDe(t){return t===120?2:t===117?4:t===85?8:0}function tDe(t){return 48<=t&&t<=57?t-48:-1}function Kz(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` -`:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function rDe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var Uz=new Array(256),Hz=new Array(256);for(var Ag=0;Ag<256;Ag++)Uz[Ag]=Kz(Ag)?1:0,Hz[Ag]=Kz(Ag);function iDe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||zPe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function Gz(t,e){return new Dz(e,new WPe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function st(t,e){throw Gz(t,e)}function Ew(t,e){t.onWarning&&t.onWarning.call(null,Gz(t,e))}var jz={YAML:function(e,r,i){var n,s,o;e.version!==null&&st(e,"duplication of %YAML directive"),i.length!==1&&st(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&st(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&st(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&Ew(e,"unsupported YAML version of the document")},TAG:function(e,r,i){var n,s;i.length!==2&&st(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],Tz.test(n)||st(e,"ill-formed tag handle (first argument) of the TAG directive"),QA.call(e.tagMap,n)&&st(e,'there is a previously declared suffix for "'+n+'" tag handle'),Mz.test(s)||st(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function bA(t,e,r,i){var n,s,o,a;if(e1&&(t.result+=Ba.repeat(` -`,e-1))}function nDe(t,e,r){var i,n,s,o,a,l,c,u,g=t.kind,f=t.result,h;if(h=t.input.charCodeAt(t.position),yn(h)||ag(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n)))return!1;for(t.kind="scalar",t.result="",s=o=t.position,a=!1;h!==0;){if(h===58){if(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n))break}else if(h===35){if(i=t.input.charCodeAt(t.position-1),yn(i))break}else{if(t.position===t.lineStart&&Iw(t)||r&&ag(h))break;if(wo(h))if(l=t.line,c=t.lineStart,u=t.lineIndent,jr(t,!1,-1),t.lineIndent>=e){a=!0,h=t.input.charCodeAt(t.position);continue}else{t.position=o,t.line=l,t.lineStart=c,t.lineIndent=u;break}}a&&(bA(t,s,o,!1),TP(t,t.line-l),s=o=t.position,a=!1),rc(h)||(o=t.position+1),h=t.input.charCodeAt(++t.position)}return bA(t,s,o,!1),t.result?!0:(t.kind=g,t.result=f,!1)}function sDe(t,e){var r,i,n;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(bA(t,i,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)i=t.position,t.position++,n=t.position;else return!0;else wo(r)?(bA(t,i,n,!0),TP(t,jr(t,!1,e)),i=n=t.position):t.position===t.lineStart&&Iw(t)?st(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);st(t,"unexpected end of the stream within a single quoted scalar")}function oDe(t,e){var r,i,n,s,o,a;if(a=t.input.charCodeAt(t.position),a!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;(a=t.input.charCodeAt(t.position))!==0;){if(a===34)return bA(t,r,t.position,!0),t.position++,!0;if(a===92){if(bA(t,r,t.position,!0),a=t.input.charCodeAt(++t.position),wo(a))jr(t,!1,e);else if(a<256&&Uz[a])t.result+=Hz[a],t.position++;else if((o=eDe(a))>0){for(n=o,s=0;n>0;n--)a=t.input.charCodeAt(++t.position),(o=$Pe(a))>=0?s=(s<<4)+o:st(t,"expected hexadecimal character");t.result+=rDe(s),t.position++}else st(t,"unknown escape sequence");r=i=t.position}else wo(a)?(bA(t,r,i,!0),TP(t,jr(t,!1,e)),r=i=t.position):t.position===t.lineStart&&Iw(t)?st(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}st(t,"unexpected end of the stream within a double quoted scalar")}function aDe(t,e){var r=!0,i,n=t.tag,s,o=t.anchor,a,l,c,u,g,f={},h,p,d,m;if(m=t.input.charCodeAt(t.position),m===91)l=93,g=!1,s=[];else if(m===123)l=125,g=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),m=t.input.charCodeAt(++t.position);m!==0;){if(jr(t,!0,e),m=t.input.charCodeAt(t.position),m===l)return t.position++,t.tag=n,t.anchor=o,t.kind=g?"mapping":"sequence",t.result=s,!0;r||st(t,"missed comma between flow collection entries"),p=h=d=null,c=u=!1,m===63&&(a=t.input.charCodeAt(t.position+1),yn(a)&&(c=u=!0,t.position++,jr(t,!0,e))),i=t.line,cg(t,e,Cw,!1,!0),p=t.tag,h=t.result,jr(t,!0,e),m=t.input.charCodeAt(t.position),(u||t.line===i)&&m===58&&(c=!0,m=t.input.charCodeAt(++t.position),jr(t,!0,e),cg(t,e,Cw,!1,!0),d=t.result),g?lg(t,s,f,p,h,d):c?s.push(lg(t,null,f,p,h,d)):s.push(h),jr(t,!0,e),m=t.input.charCodeAt(t.position),m===44?(r=!0,m=t.input.charCodeAt(++t.position)):r=!1}st(t,"unexpected end of the stream within a flow collection")}function ADe(t,e){var r,i,n=NP,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=t.input.charCodeAt(t.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(t.kind="scalar",t.result="";g!==0;)if(g=t.input.charCodeAt(++t.position),g===43||g===45)NP===n?n=g===43?Lz:VPe:st(t,"repeat of a chomping mode identifier");else if((u=tDe(g))>=0)u===0?st(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?st(t,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(rc(g)){do g=t.input.charCodeAt(++t.position);while(rc(g));if(g===35)do g=t.input.charCodeAt(++t.position);while(!wo(g)&&g!==0)}for(;g!==0;){for(LP(t),t.lineIndent=0,g=t.input.charCodeAt(t.position);(!o||t.lineIndenta&&(a=t.lineIndent),wo(g)){l++;continue}if(t.lineIndente)&&l!==0)st(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(cg(t,e,mw,!0,n)&&(p?f=t.result:h=t.result),p||(lg(t,c,u,g,f,h,s,o),g=f=h=null),jr(t,!0,-1),m=t.input.charCodeAt(t.position)),t.lineIndent>e&&m!==0)st(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),g=0,f=t.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result)?(t.result=h.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):st(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):st(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function fDe(t){var e=t.position,r,i,n,s=!1,o;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(o=t.input.charCodeAt(t.position))!==0&&(jr(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||o!==37));){for(s=!0,o=t.input.charCodeAt(++t.position),r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);for(i=t.input.slice(r,t.position),n=[],i.length<1&&st(t,"directive name must not be less than one character in length");o!==0;){for(;rc(o);)o=t.input.charCodeAt(++t.position);if(o===35){do o=t.input.charCodeAt(++t.position);while(o!==0&&!wo(o));break}if(wo(o))break;for(r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);n.push(t.input.slice(r,t.position))}o!==0&&LP(t),QA.call(jz,i)?jz[i](t,i,n):Ew(t,'unknown document directive "'+i+'"')}if(jr(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,jr(t,!0,-1)):s&&st(t,"directives end mark is expected"),cg(t,t.lineIndent-1,mw,!1,!0),jr(t,!0,-1),t.checkLineBreaks&&XPe.test(t.input.slice(e,t.position))&&Ew(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Iw(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,jr(t,!0,-1));return}if(t.position{"use strict";var Op=$l(),Kp=ng(),dDe=Tp(),CDe=og(),_z=Object.prototype.toString,Xz=Object.prototype.hasOwnProperty,mDe=9,Up=10,EDe=13,IDe=32,yDe=33,wDe=34,Zz=35,BDe=37,QDe=38,bDe=39,vDe=42,$z=44,SDe=45,e5=58,xDe=61,kDe=62,PDe=63,DDe=64,t5=91,r5=93,RDe=96,i5=123,FDe=124,n5=125,Ri={};Ri[0]="\\0";Ri[7]="\\a";Ri[8]="\\b";Ri[9]="\\t";Ri[10]="\\n";Ri[11]="\\v";Ri[12]="\\f";Ri[13]="\\r";Ri[27]="\\e";Ri[34]='\\"';Ri[92]="\\\\";Ri[133]="\\N";Ri[160]="\\_";Ri[8232]="\\L";Ri[8233]="\\P";var NDe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function LDe(t,e){var r,i,n,s,o,a,l;if(e===null)return{};for(r={},i=Object.keys(e),n=0,s=i.length;n0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}else{for(s=0;si&&t[g+1]!==" ",g=s);else if(!ug(o))return yw;a=s>0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}c=c||u&&s-g-1>i&&t[g+1]!==" "}return!l&&!c?f&&!n(t)?l5:c5:r>9&&A5(t)?yw:c?g5:u5}function jDe(t,e,r,i){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&NDe.indexOf(e)!==-1)return"'"+e+"'";var n=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-n),o=i||t.flowLevel>-1&&r>=t.flowLevel;function a(l){return MDe(t,l)}switch(UDe(e,o,t.indent,s,a)){case l5:return e;case c5:return"'"+e.replace(/'/g,"''")+"'";case u5:return"|"+f5(e,t.indent)+h5(o5(e,n));case g5:return">"+f5(e,t.indent)+h5(o5(HDe(e,s),n));case yw:return'"'+GDe(e,s)+'"';default:throw new Kp("impossible error: invalid scalar style")}}()}function f5(t,e){var r=A5(t)?String(e):"",i=t[t.length-1]===` -`,n=i&&(t[t.length-2]===` -`||t===` -`),s=n?"+":i?"":"-";return r+s+` -`}function h5(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function HDe(t,e){for(var r=/(\n+)([^\n]*)/g,i=function(){var c=t.indexOf(` -`);return c=c!==-1?c:t.length,r.lastIndex=c,p5(t.slice(0,c),e)}(),n=t[0]===` -`||t[0]===" ",s,o;o=r.exec(t);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` -`:"")+p5(l,e),n=s}return i}function p5(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=r.exec(t);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` -`+t.slice(n,s),n=s+1),o=a;return l+=` -`,t.length-n>e&&o>n?l+=t.slice(n,o)+` -`+t.slice(o+1):l+=t.slice(n),l.slice(1)}function GDe(t){for(var e="",r,i,n,s=0;s=55296&&r<=56319&&(i=t.charCodeAt(s+1),i>=56320&&i<=57343)){e+=s5((r-55296)*1024+i-56320+65536),s++;continue}n=Ri[r],e+=!n&&ug(r)?t[s]:n||s5(r)}return e}function YDe(t,e,r){var i="",n=t.tag,s,o;for(s=0,o=r.length;s1024&&(u+="? "),u+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),!!ic(t,e,c,!1,!1)&&(u+=t.dump,i+=u));t.tag=n,t.dump="{"+i+"}"}function WDe(t,e,r,i){var n="",s=t.tag,o=Object.keys(r),a,l,c,u,g,f;if(t.sortKeys===!0)o.sort();else if(typeof t.sortKeys=="function")o.sort(t.sortKeys);else if(t.sortKeys)throw new Kp("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(t.dump&&Up===t.dump.charCodeAt(0)?f+="?":f+="? "),f+=t.dump,g&&(f+=OP(t,e)),!!ic(t,e+1,u,!0,g)&&(t.dump&&Up===t.dump.charCodeAt(0)?f+=":":f+=": ",f+=t.dump,n+=f));t.tag=s,t.dump=n||"{}"}function d5(t,e,r){var i,n,s,o,a,l;for(n=r?t.explicitTypes:t.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');t.dump=i}return!0}return!1}function ic(t,e,r,i,n,s){t.tag=null,t.dump=r,d5(t,r,!1)||d5(t,r,!0);var o=_z.call(t.dump);i&&(i=t.flowLevel<0||t.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=t.duplicates.indexOf(r),c=l!==-1),(t.tag!==null&&t.tag!=="?"||c||t.indent!==2&&e>0)&&(n=!1),c&&t.usedDuplicates[l])t.dump="*ref_"+l;else{if(a&&c&&!t.usedDuplicates[l]&&(t.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(t.dump).length!==0?(WDe(t,e,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(JDe(t,e,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump));else if(o==="[object Array]"){var u=t.noArrayIndent&&e>0?e-1:e;i&&t.dump.length!==0?(qDe(t,u,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(YDe(t,u,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump))}else if(o==="[object String]")t.tag!=="?"&&jDe(t,t.dump,e,s);else{if(t.skipInvalid)return!1;throw new Kp("unacceptable kind of an object to dump "+o)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function zDe(t,e){var r=[],i=[],n,s;for(UP(t,r,i),n=0,s=i.length;n{"use strict";var ww=Vz(),E5=m5();function Bw(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Qr.exports.Type=Xr();Qr.exports.Schema=ec();Qr.exports.FAILSAFE_SCHEMA=pw();Qr.exports.JSON_SCHEMA=DP();Qr.exports.CORE_SCHEMA=RP();Qr.exports.DEFAULT_SAFE_SCHEMA=og();Qr.exports.DEFAULT_FULL_SCHEMA=Tp();Qr.exports.load=ww.load;Qr.exports.loadAll=ww.loadAll;Qr.exports.safeLoad=ww.safeLoad;Qr.exports.safeLoadAll=ww.safeLoadAll;Qr.exports.dump=E5.dump;Qr.exports.safeDump=E5.safeDump;Qr.exports.YAMLException=ng();Qr.exports.MINIMAL_SCHEMA=pw();Qr.exports.SAFE_SCHEMA=og();Qr.exports.DEFAULT_SCHEMA=Tp();Qr.exports.scan=Bw("scan");Qr.exports.parse=Bw("parse");Qr.exports.compose=Bw("compose");Qr.exports.addConstructor=Bw("addConstructor")});var w5=E((wat,y5)=>{"use strict";var _De=I5();y5.exports=_De});var Q5=E((Bat,B5)=>{"use strict";function XDe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function nc(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,nc)}XDe(nc,Error);nc.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[xe]:le})))},H=function(x){return x},L=function(x){return x},K=Yo("correct indentation"),J=" ",ne=fr(" ",!1),q=function(x){return x.length===Zc*aE},A=function(x){return x.length===(Zc+1)*aE},V=function(){return Zc++,!0},W=function(){return Zc--,!0},X=function(){return Xm()},F=Yo("pseudostring"),D=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,he=Bs(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),pe=/^[^\r\n\t ,\][{}:#"']/,Ne=Bs(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Pe=function(){return Xm().replace(/^ *| *$/g,"")},qe="--",re=fr("--",!1),se=/^[a-zA-Z\/0-9]/,be=Bs([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),ae=/^[^\r\n\t :,]/,Ae=Bs(["\r",` -`," "," ",":",","],!0,!1),De="null",$=fr("null",!1),G=function(){return null},Ce="true",ee=fr("true",!1),Ue=function(){return!0},Oe="false",vt=fr("false",!1),dt=function(){return!1},ri=Yo("string"),ii='"',an=fr('"',!1),yr=function(){return""},Ki=function(x){return x},Qi=function(x){return x.join("")},Go=/^[^"\\\0-\x1F\x7F]/,wr=Bs(['"',"\\",["\0",""],"\x7F"],!0,!1),Ui='\\"',ws=fr('\\"',!1),Tf=function(){return'"'},Mf="\\\\",Rm=fr("\\\\",!1),Fm=function(){return"\\"},Nm="\\/",DQ=fr("\\/",!1),RQ=function(){return"/"},Of="\\b",FQ=fr("\\b",!1),NQ=function(){return"\b"},Lm="\\f",LQ=fr("\\f",!1),Va=function(){return"\f"},jo="\\n",Tm=fr("\\n",!1),Mm=function(){return` -`},te="\\r",Om=fr("\\r",!1),Km=function(){return"\r"},il="\\t",Um=fr("\\t",!1),Hm=function(){return" "},Kf="\\u",Gm=fr("\\u",!1),jm=function(x,U,le,xe){return String.fromCharCode(parseInt(`0x${x}${U}${le}${xe}`))},TQ=/^[0-9a-fA-F]/,MQ=Bs([["0","9"],["a","f"],["A","F"]],!1,!1),Ym=Yo("blank space"),qm=/^[ \t]/,Jm=Bs([" "," "],!1,!1),Wm=Yo("white space"),zm=/^[ \t\n\r]/,Vm=Bs([" "," ",` -`,"\r"],!1,!1),Uf=`\r -`,OQ=fr(`\r -`,!1),KQ=` -`,_m=fr(` -`,!1),UQ="\r",HQ=fr("\r",!1),O=0,ht=0,Vc=[{line:1,column:1}],xn=0,Hf=[],Ye=0,nl;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Xm(){return t.substring(ht,O)}function MM(){return _a(ht,O)}function GQ(x,U){throw U=U!==void 0?U:_a(ht,O),eE([Yo(x)],t.substring(ht,O),U)}function OM(x,U){throw U=U!==void 0?U:_a(ht,O),YQ(x,U)}function fr(x,U){return{type:"literal",text:x,ignoreCase:U}}function Bs(x,U,le){return{type:"class",parts:x,inverted:U,ignoreCase:le}}function jQ(){return{type:"any"}}function Zm(){return{type:"end"}}function Yo(x){return{type:"other",description:x}}function $m(x){var U=Vc[x],le;if(U)return U;for(le=x-1;!Vc[le];)le--;for(U=Vc[le],U={line:U.line,column:U.column};lexn&&(xn=O,Hf=[]),Hf.push(x))}function YQ(x,U){return new nc(x,null,null,U)}function eE(x,U,le){return new nc(nc.buildMessage(x,U),x,U,le)}function tE(){var x;return x=ol(),x}function Xa(){var x,U,le;for(x=O,U=[],le=sl();le!==r;)U.push(le),le=sl();return U!==r&&(ht=x,U=s(U)),x=U,x}function sl(){var x,U,le,xe,Qe;return x=O,U=Al(),U!==r?(t.charCodeAt(O)===45?(le=o,O++):(le=r,Ye===0&&et(a)),le!==r?(xe=xr(),xe!==r?(Qe=qo(),Qe!==r?(ht=x,U=l(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x}function ol(){var x,U,le;for(x=O,U=[],le=al();le!==r;)U.push(le),le=al();return U!==r&&(ht=x,U=c(U)),x=U,x}function al(){var x,U,le,xe,Qe,Ge,ct,sr,Wo;if(x=O,U=xr(),U===r&&(U=null),U!==r){if(le=O,t.charCodeAt(O)===35?(xe=u,O++):(xe=r,Ye===0&&et(g)),xe!==r){if(Qe=[],Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r),Ge!==r)for(;Ge!==r;)Qe.push(Ge),Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r);else Qe=r;Qe!==r?(xe=[xe,Qe],le=xe):(O=le,le=r)}else O=le,le=r;if(le===r&&(le=null),le!==r){if(xe=[],Qe=Jo(),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=Jo();else xe=r;xe!==r?(ht=x,U=h(),x=U):(O=x,x=r)}else O=x,x=r}else O=x,x=r;if(x===r&&(x=O,U=Al(),U!==r?(le=JQ(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Al(),U!==r?(le=ll(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))){if(x=O,U=Al(),U!==r)if(le=ll(),le!==r)if(xe=xr(),xe!==r)if(Qe=nE(),Qe!==r){if(Ge=[],ct=Jo(),ct!==r)for(;ct!==r;)Ge.push(ct),ct=Jo();else Ge=r;Ge!==r?(ht=x,U=m(le,Qe),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;else O=x,x=r;else O=x,x=r;if(x===r)if(x=O,U=Al(),U!==r)if(le=ll(),le!==r){if(xe=[],Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=I,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=I,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r);else xe=r;xe!==r?(Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(t.charCodeAt(O)===58?(Ge=p,O++):(Ge=r,Ye===0&&et(d)),Ge!==r?(ct=xr(),ct===r&&(ct=null),ct!==r?(sr=qo(),sr!==r?(ht=x,U=R(le,xe,sr),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)}else O=x,x=r;else O=x,x=r}return x}function qo(){var x,U,le,xe,Qe,Ge,ct;if(x=O,U=O,Ye++,le=O,xe=Zs(),xe!==r?(Qe=qQ(),Qe!==r?(t.charCodeAt(O)===45?(Ge=o,O++):(Ge=r,Ye===0&&et(a)),Ge!==r?(ct=xr(),ct!==r?(xe=[xe,Qe,Ge,ct],le=xe):(O=le,le=r)):(O=le,le=r)):(O=le,le=r)):(O=le,le=r),Ye--,le!==r?(O=U,U=void 0):U=r,U!==r?(le=Jo(),le!==r?(xe=rE(),xe!==r?(Qe=Xa(),Qe!==r?(Ge=iE(),Ge!==r?(ht=x,U=H(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Zs(),U!==r?(le=rE(),le!==r?(xe=ol(),xe!==r?(Qe=iE(),Qe!==r?(ht=x,U=H(xe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))if(x=O,U=WQ(),U!==r){if(le=[],xe=Jo(),xe!==r)for(;xe!==r;)le.push(xe),xe=Jo();else le=r;le!==r?(ht=x,U=L(U),x=U):(O=x,x=r)}else O=x,x=r;return x}function Al(){var x,U,le;for(Ye++,x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=q(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),Ye--,x===r&&(U=r,Ye===0&&et(K)),x}function qQ(){var x,U,le;for(x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=A(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),x}function rE(){var x;return ht=O,x=V(),x?x=void 0:x=r,x}function iE(){var x;return ht=O,x=W(),x?x=void 0:x=r,x}function JQ(){var x;return x=cl(),x===r&&(x=Gf()),x}function ll(){var x,U,le;if(x=cl(),x===r){if(x=O,U=[],le=_c(),le!==r)for(;le!==r;)U.push(le),le=_c();else U=r;U!==r&&(ht=x,U=X()),x=U}return x}function WQ(){var x;return x=jf(),x===r&&(x=sE(),x===r&&(x=cl(),x===r&&(x=Gf()))),x}function nE(){var x;return x=jf(),x===r&&(x=cl(),x===r&&(x=_c())),x}function Gf(){var x,U,le,xe,Qe,Ge;if(Ye++,x=O,D.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(he)),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;return Ye--,x===r&&(U=r,Ye===0&&et(F)),x}function _c(){var x,U,le,xe,Qe;if(x=O,t.substr(O,2)===qe?(U=qe,O+=2):(U=r,Ye===0&&et(re)),U===r&&(U=null),U!==r)if(se.test(t.charAt(O))?(le=t.charAt(O),O++):(le=r,Ye===0&&et(be)),le!==r){for(xe=[],ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));Qe!==r;)xe.push(Qe),ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));xe!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;return x}function jf(){var x,U;return x=O,t.substr(O,4)===De?(U=De,O+=4):(U=r,Ye===0&&et($)),U!==r&&(ht=x,U=G()),x=U,x}function sE(){var x,U;return x=O,t.substr(O,4)===Ce?(U=Ce,O+=4):(U=r,Ye===0&&et(ee)),U!==r&&(ht=x,U=Ue()),x=U,x===r&&(x=O,t.substr(O,5)===Oe?(U=Oe,O+=5):(U=r,Ye===0&&et(vt)),U!==r&&(ht=x,U=dt()),x=U),x}function cl(){var x,U,le,xe;return Ye++,x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(t.charCodeAt(O)===34?(le=ii,O++):(le=r,Ye===0&&et(an)),le!==r?(ht=x,U=yr(),x=U):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(le=oE(),le!==r?(t.charCodeAt(O)===34?(xe=ii,O++):(xe=r,Ye===0&&et(an)),xe!==r?(ht=x,U=Ki(le),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)),Ye--,x===r&&(U=r,Ye===0&&et(ri)),x}function oE(){var x,U,le;if(x=O,U=[],le=Yf(),le!==r)for(;le!==r;)U.push(le),le=Yf();else U=r;return U!==r&&(ht=x,U=Qi(U)),x=U,x}function Yf(){var x,U,le,xe,Qe,Ge;return Go.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(wr)),x===r&&(x=O,t.substr(O,2)===Ui?(U=Ui,O+=2):(U=r,Ye===0&&et(ws)),U!==r&&(ht=x,U=Tf()),x=U,x===r&&(x=O,t.substr(O,2)===Mf?(U=Mf,O+=2):(U=r,Ye===0&&et(Rm)),U!==r&&(ht=x,U=Fm()),x=U,x===r&&(x=O,t.substr(O,2)===Nm?(U=Nm,O+=2):(U=r,Ye===0&&et(DQ)),U!==r&&(ht=x,U=RQ()),x=U,x===r&&(x=O,t.substr(O,2)===Of?(U=Of,O+=2):(U=r,Ye===0&&et(FQ)),U!==r&&(ht=x,U=NQ()),x=U,x===r&&(x=O,t.substr(O,2)===Lm?(U=Lm,O+=2):(U=r,Ye===0&&et(LQ)),U!==r&&(ht=x,U=Va()),x=U,x===r&&(x=O,t.substr(O,2)===jo?(U=jo,O+=2):(U=r,Ye===0&&et(Tm)),U!==r&&(ht=x,U=Mm()),x=U,x===r&&(x=O,t.substr(O,2)===te?(U=te,O+=2):(U=r,Ye===0&&et(Om)),U!==r&&(ht=x,U=Km()),x=U,x===r&&(x=O,t.substr(O,2)===il?(U=il,O+=2):(U=r,Ye===0&&et(Um)),U!==r&&(ht=x,U=Hm()),x=U,x===r&&(x=O,t.substr(O,2)===Kf?(U=Kf,O+=2):(U=r,Ye===0&&et(Gm)),U!==r?(le=Xc(),le!==r?(xe=Xc(),xe!==r?(Qe=Xc(),Qe!==r?(Ge=Xc(),Ge!==r?(ht=x,U=jm(le,xe,Qe,Ge),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)))))))))),x}function Xc(){var x;return TQ.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(MQ)),x}function xr(){var x,U;if(Ye++,x=[],qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm)),U!==r)for(;U!==r;)x.push(U),qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Ym)),x}function KM(){var x,U;if(Ye++,x=[],zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm)),U!==r)for(;U!==r;)x.push(U),zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Wm)),x}function Jo(){var x,U,le,xe,Qe,Ge;if(x=O,U=Zs(),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(U=[U,le],x=U):(O=x,x=r)}else O=x,x=r;return x}function Zs(){var x;return t.substr(O,2)===Uf?(x=Uf,O+=2):(x=r,Ye===0&&et(OQ)),x===r&&(t.charCodeAt(O)===10?(x=KQ,O++):(x=r,Ye===0&&et(_m)),x===r&&(t.charCodeAt(O)===13?(x=UQ,O++):(x=r,Ye===0&&et(HQ)))),x}let aE=2,Zc=0;if(nl=n(),nl!==r&&O===t.length)return nl;throw nl!==r&&O{var fRe=typeof global=="object"&&global&&global.Object===Object&&global;V5.exports=fRe});var Ks=E((Zat,_5)=>{var hRe=WP(),pRe=typeof self=="object"&&self&&self.Object===Object&&self,dRe=hRe||pRe||Function("return this")();_5.exports=dRe});var ac=E(($at,X5)=>{var CRe=Ks(),mRe=CRe.Symbol;X5.exports=mRe});var $5=E((eAt,Z5)=>{function ERe(t,e){for(var r=-1,i=t==null?0:t.length,n=Array(i);++r{var IRe=Array.isArray;e6.exports=IRe});var n6=E((rAt,t6)=>{var r6=ac(),i6=Object.prototype,yRe=i6.hasOwnProperty,wRe=i6.toString,Jp=r6?r6.toStringTag:void 0;function BRe(t){var e=yRe.call(t,Jp),r=t[Jp];try{t[Jp]=void 0;var i=!0}catch(s){}var n=wRe.call(t);return i&&(e?t[Jp]=r:delete t[Jp]),n}t6.exports=BRe});var o6=E((iAt,s6)=>{var QRe=Object.prototype,bRe=QRe.toString;function vRe(t){return bRe.call(t)}s6.exports=vRe});var Ac=E((nAt,a6)=>{var A6=ac(),SRe=n6(),xRe=o6(),kRe="[object Null]",PRe="[object Undefined]",l6=A6?A6.toStringTag:void 0;function DRe(t){return t==null?t===void 0?PRe:kRe:l6&&l6 in Object(t)?SRe(t):xRe(t)}a6.exports=DRe});var Qo=E((sAt,c6)=>{function RRe(t){return t!=null&&typeof t=="object"}c6.exports=RRe});var Nw=E((oAt,u6)=>{var FRe=Ac(),NRe=Qo(),LRe="[object Symbol]";function TRe(t){return typeof t=="symbol"||NRe(t)&&FRe(t)==LRe}u6.exports=TRe});var C6=E((aAt,g6)=>{var f6=ac(),MRe=$5(),ORe=As(),KRe=Nw(),URe=1/0,h6=f6?f6.prototype:void 0,p6=h6?h6.toString:void 0;function d6(t){if(typeof t=="string")return t;if(ORe(t))return MRe(t,d6)+"";if(KRe(t))return p6?p6.call(t):"";var e=t+"";return e=="0"&&1/t==-URe?"-0":e}g6.exports=d6});var gg=E((AAt,m6)=>{var HRe=C6();function GRe(t){return t==null?"":HRe(t)}m6.exports=GRe});var zP=E((lAt,E6)=>{function jRe(t,e,r){var i=-1,n=t.length;e<0&&(e=-e>n?0:n+e),r=r>n?n:r,r<0&&(r+=n),n=e>r?0:r-e>>>0,e>>>=0;for(var s=Array(n);++i{var YRe=zP();function qRe(t,e,r){var i=t.length;return r=r===void 0?i:r,!e&&r>=i?t:YRe(t,e,r)}I6.exports=qRe});var VP=E((uAt,w6)=>{var JRe="\\ud800-\\udfff",WRe="\\u0300-\\u036f",zRe="\\ufe20-\\ufe2f",VRe="\\u20d0-\\u20ff",_Re=WRe+zRe+VRe,XRe="\\ufe0e\\ufe0f",ZRe="\\u200d",$Re=RegExp("["+ZRe+JRe+_Re+XRe+"]");function eFe(t){return $Re.test(t)}w6.exports=eFe});var Q6=E((gAt,B6)=>{function tFe(t){return t.split("")}B6.exports=tFe});var R6=E((fAt,b6)=>{var v6="\\ud800-\\udfff",rFe="\\u0300-\\u036f",iFe="\\ufe20-\\ufe2f",nFe="\\u20d0-\\u20ff",sFe=rFe+iFe+nFe,oFe="\\ufe0e\\ufe0f",aFe="["+v6+"]",_P="["+sFe+"]",XP="\\ud83c[\\udffb-\\udfff]",AFe="(?:"+_P+"|"+XP+")",S6="[^"+v6+"]",x6="(?:\\ud83c[\\udde6-\\uddff]){2}",k6="[\\ud800-\\udbff][\\udc00-\\udfff]",lFe="\\u200d",P6=AFe+"?",D6="["+oFe+"]?",cFe="(?:"+lFe+"(?:"+[S6,x6,k6].join("|")+")"+D6+P6+")*",uFe=D6+P6+cFe,gFe="(?:"+[S6+_P+"?",_P,x6,k6,aFe].join("|")+")",fFe=RegExp(XP+"(?="+XP+")|"+gFe+uFe,"g");function hFe(t){return t.match(fFe)||[]}b6.exports=hFe});var N6=E((hAt,F6)=>{var pFe=Q6(),dFe=VP(),CFe=R6();function mFe(t){return dFe(t)?CFe(t):pFe(t)}F6.exports=mFe});var T6=E((pAt,L6)=>{var EFe=y6(),IFe=VP(),yFe=N6(),wFe=gg();function BFe(t){return function(e){e=wFe(e);var r=IFe(e)?yFe(e):void 0,i=r?r[0]:e.charAt(0),n=r?EFe(r,1).join(""):e.slice(1);return i[t]()+n}}L6.exports=BFe});var O6=E((dAt,M6)=>{var QFe=T6(),bFe=QFe("toUpperCase");M6.exports=bFe});var ZP=E((CAt,K6)=>{var vFe=gg(),SFe=O6();function xFe(t){return SFe(vFe(t).toLowerCase())}K6.exports=xFe});var H6=E((mAt,U6)=>{"use strict";U6.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Wp=E((EAt,$P)=>{"use strict";var kFe=H6(),G6=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,i=()=>{r--,e.length>0&&e.shift()()},n=(a,l,...c)=>{r++;let u=kFe(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{rnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),o};$P.exports=G6;$P.exports.default=G6});var X6=E((FAt,Mw)=>{function PFe(){var t=0,e=1,r=2,i=3,n=4,s=5,o=6,a=7,l=8,c=9,u=10,g=11,f=12,h=13,p=14,d=15,m=16,I=17,B=0,b=1,R=2,H=3,L=4;function K(A,V){return 55296<=A.charCodeAt(V)&&A.charCodeAt(V)<=56319&&56320<=A.charCodeAt(V+1)&&A.charCodeAt(V+1)<=57343}function J(A,V){V===void 0&&(V=0);var W=A.charCodeAt(V);if(55296<=W&&W<=56319&&V=1){var X=A.charCodeAt(V-1),F=W;return 55296<=X&&X<=56319?(X-55296)*1024+(F-56320)+65536:F}return W}function ne(A,V,W){var X=[A].concat(V).concat([W]),F=X[X.length-2],D=W,he=X.lastIndexOf(p);if(he>1&&X.slice(1,he).every(function(Pe){return Pe==i})&&[i,h,I].indexOf(A)==-1)return R;var pe=X.lastIndexOf(n);if(pe>0&&X.slice(1,pe).every(function(Pe){return Pe==n})&&[f,n].indexOf(F)==-1)return X.filter(function(Pe){return Pe==n}).length%2==1?H:L;if(F==t&&D==e)return B;if(F==r||F==t||F==e)return D==p&&V.every(function(Pe){return Pe==i})?R:b;if(D==r||D==t||D==e)return b;if(F==o&&(D==o||D==a||D==c||D==u))return B;if((F==c||F==a)&&(D==a||D==l))return B;if((F==u||F==l)&&D==l)return B;if(D==i||D==d)return B;if(D==s)return B;if(F==f)return B;var Ne=X.indexOf(i)!=-1?X.lastIndexOf(i)-1:X.length-2;return[h,I].indexOf(X[Ne])!=-1&&X.slice(Ne+1,-1).every(function(Pe){return Pe==i})&&D==p||F==d&&[m,I].indexOf(D)!=-1?B:V.indexOf(n)!=-1?R:F==n&&D==n?B:b}this.nextBreak=function(A,V){if(V===void 0&&(V=0),V<0)return 0;if(V>=A.length-1)return A.length;for(var W=q(J(A,V)),X=[],F=V+1;F{var DFe=X6(),RFe=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,FFe=new DFe;Z6.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let i=r-e,n="",s=0,o=0;for(;t.length>0;){let a=t.match(RFe)||[t,t,void 0],l=FFe.splitGraphemes(a[1]),c=Math.min(e-s,l.length);l=l.slice(c);let u=Math.min(i-o,l.length);n+=l.slice(0,u).join(""),s+=c,o+=u,typeof a[2]!="undefined"&&(n+=a[2]),t=t.slice(a[0].length)}return n}});var fg=E((alt,f9)=>{"use strict";var h9=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]),olt=f9.exports=t=>t?Object.keys(t).map(e=>[h9.has(e)?h9.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var hg=E((Alt,p9)=>{"use strict";var JFe=require("events"),d9=require("stream"),_p=Rh(),C9=require("string_decoder").StringDecoder,va=Symbol("EOF"),Xp=Symbol("maybeEmitEnd"),xA=Symbol("emittedEnd"),Gw=Symbol("emittingEnd"),jw=Symbol("closed"),m9=Symbol("read"),iD=Symbol("flush"),E9=Symbol("flushChunk"),Bn=Symbol("encoding"),Sa=Symbol("decoder"),Yw=Symbol("flowing"),Zp=Symbol("paused"),$p=Symbol("resume"),rn=Symbol("bufferLength"),I9=Symbol("bufferPush"),nD=Symbol("bufferShift"),Ni=Symbol("objectMode"),Li=Symbol("destroyed"),y9=global._MP_NO_ITERATOR_SYMBOLS_!=="1",WFe=y9&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),zFe=y9&&Symbol.iterator||Symbol("iterator not implemented"),w9=t=>t==="end"||t==="finish"||t==="prefinish",VFe=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,_Fe=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t);p9.exports=class B9 extends d9{constructor(e){super();this[Yw]=!1,this[Zp]=!1,this.pipes=new _p,this.buffer=new _p,this[Ni]=e&&e.objectMode||!1,this[Ni]?this[Bn]=null:this[Bn]=e&&e.encoding||null,this[Bn]==="buffer"&&(this[Bn]=null),this[Sa]=this[Bn]?new C9(this[Bn]):null,this[va]=!1,this[xA]=!1,this[Gw]=!1,this[jw]=!1,this.writable=!0,this.readable=!0,this[rn]=0,this[Li]=!1}get bufferLength(){return this[rn]}get encoding(){return this[Bn]}set encoding(e){if(this[Ni])throw new Error("cannot set encoding in objectMode");if(this[Bn]&&e!==this[Bn]&&(this[Sa]&&this[Sa].lastNeed||this[rn]))throw new Error("cannot change encoding");this[Bn]!==e&&(this[Sa]=e?new C9(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Sa].write(r)))),this[Bn]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Ni]}set objectMode(e){this[Ni]=this[Ni]||!!e}write(e,r,i){if(this[va])throw new Error("write after end");return this[Li]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[Ni]&&!Buffer.isBuffer(e)&&(_Fe(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):VFe(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof e=="string"&&!this[Ni]&&!(r===this[Bn]&&!this[Sa].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Bn]&&(e=this[Sa].write(e)),this.flowing?(this[rn]!==0&&this[iD](!0),this.emit("data",e)):this[I9](e),this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(e){if(this[Li])return null;try{return this[rn]===0||e===0||e>this[rn]?null:(this[Ni]&&(e=null),this.buffer.length>1&&!this[Ni]&&(this.encoding?this.buffer=new _p([Array.from(this.buffer).join("")]):this.buffer=new _p([Buffer.concat(Array.from(this.buffer),this[rn])])),this[m9](e||null,this.buffer.head.value))}finally{this[Xp]()}}[m9](e,r){return e===r.length||e===null?this[nD]():(this.buffer.head.value=r.slice(e),r=r.slice(0,e),this[rn]-=e),this.emit("data",r),!this.buffer.length&&!this[va]&&this.emit("drain"),r}end(e,r,i){return typeof e=="function"&&(i=e,e=null),typeof r=="function"&&(i=r,r="utf8"),e&&this.write(e,r),i&&this.once("end",i),this[va]=!0,this.writable=!1,(this.flowing||!this[Zp])&&this[Xp](),this}[$p](){this[Li]||(this[Zp]=!1,this[Yw]=!0,this.emit("resume"),this.buffer.length?this[iD]():this[va]?this[Xp]():this.emit("drain"))}resume(){return this[$p]()}pause(){this[Yw]=!1,this[Zp]=!0}get destroyed(){return this[Li]}get flowing(){return this[Yw]}get paused(){return this[Zp]}[I9](e){return this[Ni]?this[rn]+=1:this[rn]+=e.length,this.buffer.push(e)}[nD](){return this.buffer.length&&(this[Ni]?this[rn]-=1:this[rn]-=this.buffer.head.value.length),this.buffer.shift()}[iD](e){do;while(this[E9](this[nD]()));!e&&!this.buffer.length&&!this[va]&&this.emit("drain")}[E9](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Li])return;let i=this[xA];r=r||{},e===process.stdout||e===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:e,opts:r,ondrain:s=>this[$p]()};return this.pipes.push(n),e.on("drain",n.ondrain),this[$p](),i&&n.opts.end&&n.dest.end(),e}addListener(e,r){return this.on(e,r)}on(e,r){try{return super.on(e,r)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[$p]():w9(e)&&this[xA]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[xA]}[Xp](){!this[Gw]&&!this[xA]&&!this[Li]&&this.buffer.length===0&&this[va]&&(this[Gw]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[jw]&&this.emit("close"),this[Gw]=!1)}emit(e,r){if(e!=="error"&&e!=="close"&&e!==Li&&this[Li])return;if(e==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(e==="end"){if(this[xA]===!0)return;this[xA]=!0,this.readable=!1,this[Sa]&&(r=this[Sa].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(e==="close"&&(this[jw]=!0,!this[xA]&&!this[Li]))return;let i=new Array(arguments.length);if(i[0]=e,i[1]=r,arguments.length>2)for(let n=2;n{e.push(i),this[Ni]||(e.dataLength+=i.length)}),r.then(()=>e)}concat(){return this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this[Bn]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Li,()=>r(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",i=>r(i))})}[WFe](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[va])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),i({value:c,done:!!this[va]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},l=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(Li,l),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[zFe](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Li]?(e?this.emit("error",e):this.emit(Li),this):(this[Li]=!0,this.buffer=new _p,this[rn]=0,typeof this.close=="function"&&!this[jw]&&this.close(),e?this.emit("error",e):this.emit(Li),this)}static isStream(e){return!!e&&(e instanceof B9||e instanceof d9||e instanceof JFe&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var b9=E((llt,Q9)=>{var XFe=require("zlib").constants||{ZLIB_VERNUM:4736};Q9.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},XFe))});var fD=E(Un=>{"use strict";var sD=require("assert"),kA=require("buffer").Buffer,v9=require("zlib"),uc=Un.constants=b9(),ZFe=hg(),S9=kA.concat,gc=Symbol("_superWrite"),ed=class extends Error{constructor(e){super("zlib: "+e.message);this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},$Fe=Symbol("opts"),td=Symbol("flushFlag"),x9=Symbol("finishFlushFlag"),oD=Symbol("fullFlushFlag"),tr=Symbol("handle"),qw=Symbol("onError"),pg=Symbol("sawError"),aD=Symbol("level"),AD=Symbol("strategy"),lD=Symbol("ended"),clt=Symbol("_defaultFullFlush"),cD=class extends ZFe{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e);this[pg]=!1,this[lD]=!1,this[$Fe]=e,this[td]=e.flush,this[x9]=e.finishFlush;try{this[tr]=new v9[r](e)}catch(i){throw new ed(i)}this[qw]=i=>{this[pg]||(this[pg]=!0,this.close(),this.emit("error",i))},this[tr].on("error",i=>this[qw](new ed(i))),this.once("end",()=>this.close)}close(){this[tr]&&(this[tr].close(),this[tr]=null,this.emit("close"))}reset(){if(!this[pg])return sD(this[tr],"zlib binding closed"),this[tr].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[oD]),this.write(Object.assign(kA.alloc(0),{[td]:e})))}end(e,r,i){return e&&this.write(e,r),this.flush(this[x9]),this[lD]=!0,super.end(null,null,i)}get ended(){return this[lD]}write(e,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof e=="string"&&(e=kA.from(e,r)),this[pg])return;sD(this[tr],"zlib binding closed");let n=this[tr]._handle,s=n.close;n.close=()=>{};let o=this[tr].close;this[tr].close=()=>{},kA.concat=c=>c;let a;try{let c=typeof e[td]=="number"?e[td]:this[td];a=this[tr]._processChunk(e,c),kA.concat=S9}catch(c){kA.concat=S9,this[qw](new ed(c))}finally{this[tr]&&(this[tr]._handle=n,n.close=s,this[tr].close=o,this[tr].removeAllListeners("error"))}this[tr]&&this[tr].on("error",c=>this[qw](new ed(c)));let l;if(a)if(Array.isArray(a)&&a.length>0){l=this[gc](kA.from(a[0]));for(let c=1;c{this.flush(n),s()};try{this[tr].params(e,r)}finally{this[tr].flush=i}this[tr]&&(this[aD]=e,this[AD]=r)}}}},k9=class extends PA{constructor(e){super(e,"Deflate")}},P9=class extends PA{constructor(e){super(e,"Inflate")}},uD=Symbol("_portable"),D9=class extends PA{constructor(e){super(e,"Gzip");this[uD]=e&&!!e.portable}[gc](e){return this[uD]?(this[uD]=!1,e[9]=255,super[gc](e)):super[gc](e)}},R9=class extends PA{constructor(e){super(e,"Gunzip")}},F9=class extends PA{constructor(e){super(e,"DeflateRaw")}},N9=class extends PA{constructor(e){super(e,"InflateRaw")}},L9=class extends PA{constructor(e){super(e,"Unzip")}},gD=class extends cD{constructor(e,r){e=e||{},e.flush=e.flush||uc.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||uc.BROTLI_OPERATION_FINISH,super(e,r),this[oD]=uc.BROTLI_OPERATION_FLUSH}},T9=class extends gD{constructor(e){super(e,"BrotliCompress")}},M9=class extends gD{constructor(e){super(e,"BrotliDecompress")}};Un.Deflate=k9;Un.Inflate=P9;Un.Gzip=D9;Un.Gunzip=R9;Un.DeflateRaw=F9;Un.InflateRaw=N9;Un.Unzip=L9;typeof v9.BrotliCompress=="function"?(Un.BrotliCompress=T9,Un.BrotliDecompress=M9):Un.BrotliCompress=Un.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var rd=E(Jw=>{"use strict";Jw.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);Jw.code=new Map(Array.from(Jw.name).map(t=>[t[1],t[0]]))});var id=E((plt,O9)=>{"use strict";var flt=rd(),eNe=hg(),hD=Symbol("slurp");O9.exports=class extends eNe{constructor(e,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,r&&this[hD](r),i&&this[hD](i,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(e):super.write(e.slice(0,i))}[hD](e,r){for(let i in e)e[i]!==null&&e[i]!==void 0&&!(r&&i==="path")&&(this[i]=e[i])}}});var H9=E(pD=>{"use strict";var dlt=pD.encode=(t,e)=>{if(Number.isSafeInteger(t))t<0?rNe(t,e):tNe(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},tNe=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},rNe=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var i=e.length;i>1;i--){var n=t&255;t=Math.floor(t/256),r?e[i-1]=K9(n):n===0?e[i-1]=0:(r=!0,e[i-1]=U9(n))}},Clt=pD.parse=t=>{var e=t[t.length-1],r=t[0],i;if(r===128)i=nNe(t.slice(1,t.length));else if(r===255)i=iNe(t);else throw Error("invalid base256 encoding");if(!Number.isSafeInteger(i))throw Error("parsed number outside of javascript safe integer range");return i},iNe=t=>{for(var e=t.length,r=0,i=!1,n=e-1;n>-1;n--){var s=t[n],o;i?o=K9(s):s===0?o=s:(i=!0,o=U9(s)),o!==0&&(r-=o*Math.pow(256,e-n-1))}return r},nNe=t=>{for(var e=t.length,r=0,i=e-1;i>-1;i--){var n=t[i];n!==0&&(r+=n*Math.pow(256,e-i-1))}return r},K9=t=>(255^t)&255,U9=t=>(255^t)+1&255});var Cg=E((Elt,G9)=>{"use strict";var dD=rd(),dg=require("path").posix,j9=H9(),CD=Symbol("slurp"),Hn=Symbol("type"),Y9=class{constructor(e,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Hn]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,i,n):e&&this.set(e)}decode(e,r,i,n){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=fc(e,r,100),this.mode=DA(e,r+100,8),this.uid=DA(e,r+108,8),this.gid=DA(e,r+116,8),this.size=DA(e,r+124,12),this.mtime=mD(e,r+136,12),this.cksum=DA(e,r+148,12),this[CD](i),this[CD](n,!0),this[Hn]=fc(e,r+156,1),this[Hn]===""&&(this[Hn]="0"),this[Hn]==="0"&&this.path.substr(-1)==="/"&&(this[Hn]="5"),this[Hn]==="5"&&(this.size=0),this.linkpath=fc(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=fc(e,r+265,32),this.gname=fc(e,r+297,32),this.devmaj=DA(e,r+329,8),this.devmin=DA(e,r+337,8),e[r+475]!==0){let o=fc(e,r+345,155);this.path=o+"/"+this.path}else{let o=fc(e,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=mD(e,r+476,12),this.ctime=mD(e,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=sNe(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=hc(e,r,100,s)||this.needPax,this.needPax=RA(e,r+100,8,this.mode)||this.needPax,this.needPax=RA(e,r+108,8,this.uid)||this.needPax,this.needPax=RA(e,r+116,8,this.gid)||this.needPax,this.needPax=RA(e,r+124,12,this.size)||this.needPax,this.needPax=ED(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[Hn].charCodeAt(0),this.needPax=hc(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=hc(e,r+265,32,this.uname)||this.needPax,this.needPax=hc(e,r+297,32,this.gname)||this.needPax,this.needPax=RA(e,r+329,8,this.devmaj)||this.needPax,this.needPax=RA(e,r+337,8,this.devmin)||this.needPax,this.needPax=hc(e,r+345,i,o)||this.needPax,e[r+475]!==0?this.needPax=hc(e,r+345,155,o)||this.needPax:(this.needPax=hc(e,r+345,130,o)||this.needPax,this.needPax=ED(e,r+476,12,this.atime)||this.needPax,this.needPax=ED(e,r+488,12,this.ctime)||this.needPax);let a=8*32;for(let l=r;l{let r=100,i=t,n="",s,o=dg.parse(t).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=e?s=[i.substr(0,r-1),n,!0]:(i=dg.join(dg.basename(n),i),n=dg.dirname(n));while(n!==o&&!s);s||(s=[t.substr(0,r-1),"",!0])}return s},fc=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),mD=(t,e,r)=>oNe(DA(t,e,r)),oNe=t=>t===null?null:new Date(t*1e3),DA=(t,e,r)=>t[e]&128?j9.parse(t.slice(e,e+r)):aNe(t,e,r),ANe=t=>isNaN(t)?null:t,aNe=(t,e,r)=>ANe(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),lNe={12:8589934591,8:2097151},RA=(t,e,r,i)=>i===null?!1:i>lNe[r]||i<0?(j9.encode(i,t.slice(e,e+r)),!0):(cNe(t,e,r,i),!1),cNe=(t,e,r,i)=>t.write(uNe(i,r),e,r,"ascii"),uNe=(t,e)=>gNe(Math.floor(t).toString(8),e),gNe=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",ED=(t,e,r,i)=>i===null?!1:RA(t,e,r,i.getTime()/1e3),fNe=new Array(156).join("\0"),hc=(t,e,r,i)=>i===null?!1:(t.write(i+fNe,e,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);G9.exports=Y9});var zw=E((Ilt,q9)=>{"use strict";var hNe=Cg(),pNe=require("path"),Ww=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new hNe({path:("PaxHeader/"+pNe.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(e,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};Ww.parse=(t,e,r)=>new Ww(dNe(CNe(t),e),r);var dNe=(t,e)=>e?Object.keys(t).reduce((r,i)=>(r[i]=t[i],r),e):t,CNe=t=>t.replace(/\n$/,"").split(` -`).reduce(mNe,Object.create(null)),mNe=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return t;let s=i.join("=");return t[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};q9.exports=Ww});var Vw=E((ylt,J9)=>{"use strict";J9.exports=t=>class extends t{warn(e,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),i))}}});var yD=E((wlt,W9)=>{"use strict";var _w=["|","<",">","?",":"],ID=_w.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),ENe=new Map(_w.map((t,e)=>[t,ID[e]])),INe=new Map(ID.map((t,e)=>[t,_w[e]]));W9.exports={encode:t=>_w.reduce((e,r)=>e.split(r).join(ENe.get(r)),t),decode:t=>ID.reduce((e,r)=>e.split(r).join(INe.get(r)),t)}});var V9=E((Blt,z9)=>{"use strict";z9.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var xD=E((xlt,_9)=>{"use strict";var X9=hg(),Z9=zw(),$9=Cg(),Qlt=id(),bo=require("fs"),mg=require("path"),blt=rd(),yNe=16*1024*1024,eV=Symbol("process"),tV=Symbol("file"),rV=Symbol("directory"),wD=Symbol("symlink"),iV=Symbol("hardlink"),nd=Symbol("header"),Xw=Symbol("read"),BD=Symbol("lstat"),Zw=Symbol("onlstat"),QD=Symbol("onread"),bD=Symbol("onreadlink"),vD=Symbol("openfile"),SD=Symbol("onopenfile"),pc=Symbol("close"),$w=Symbol("mode"),nV=Vw(),wNe=yD(),sV=V9(),eB=nV(class extends X9{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||yNe,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&mg.win32.isAbsolute(e)){let n=mg.win32.parse(e);this.path=e.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=wNe.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||mg.resolve(this.cwd,e),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[Zw](this.statCache.get(this.absolute)):this[BD]()}[BD](){bo.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Zw](r)})}[Zw](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=BNe(e),this.emit("stat",e),this[eV]()}[eV](){switch(this.type){case"File":return this[tV]();case"Directory":return this[rV]();case"SymbolicLink":return this[wD]();default:return this.end()}}[$w](e){return sV(e,this.type==="Directory",this.portable)}[nd](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this[$w](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new Z9({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[rV](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[nd](),this.end()}[wD](){bo.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[bD](r)})}[bD](e){this.linkpath=e.replace(/\\/g,"/"),this[nd](),this.end()}[iV](e){this.type="Link",this.linkpath=mg.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[nd](),this.end()}[tV](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[iV](r)}this.linkCache.set(e,this.absolute)}if(this[nd](),this.stat.size===0)return this.end();this[vD]()}[vD](){bo.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[SD](r)})}[SD](e){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Xw](e,n,0,n.length,0,this.stat.size,r)}[Xw](e,r,i,n,s,o,a){bo.read(e,r,i,n,s,(l,c)=>{if(l)return this[pc](e,()=>this.emit("error",l));this[QD](e,r,i,n,s,o,a,c)})}[pc](e,r){bo.close(e,r)}[QD](e,r,i,n,s,o,a,l){if(l<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l===o)for(let u=l;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Xw](e,r,i,n,s,o,a)}}),oV=class extends eB{constructor(e,r){super(e,r)}[BD](){this[Zw](bo.lstatSync(this.absolute))}[wD](){this[bD](bo.readlinkSync(this.absolute))}[vD](){this[SD](bo.openSync(this.absolute,"r"))}[Xw](e,r,i,n,s,o,a){let l=!0;try{let c=bo.readSync(e,r,i,n,s);this[QD](e,r,i,n,s,o,a,c),l=!1}finally{if(l)try{this[pc](e,()=>{})}catch(c){}}}[pc](e,r){bo.closeSync(e),r()}},QNe=nV(class extends X9{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[$w](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(mg.isAbsolute(this.path)&&!this.preservePaths){let n=mg.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new Z9({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[$w](e){return sV(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});eB.Sync=oV;eB.Tar=QNe;var BNe=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";_9.exports=eB});var AB=E((Plt,aV)=>{"use strict";var kD=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},bNe=hg(),vNe=fD(),SNe=id(),PD=xD(),xNe=PD.Sync,kNe=PD.Tar,PNe=Rh(),AV=Buffer.alloc(1024),tB=Symbol("onStat"),rB=Symbol("ended"),vo=Symbol("queue"),Eg=Symbol("current"),dc=Symbol("process"),iB=Symbol("processing"),lV=Symbol("processJob"),So=Symbol("jobs"),DD=Symbol("jobDone"),nB=Symbol("addFSEntry"),cV=Symbol("addTarEntry"),RD=Symbol("stat"),FD=Symbol("readdir"),sB=Symbol("onreaddir"),oB=Symbol("pipe"),uV=Symbol("entry"),ND=Symbol("entryOpt"),LD=Symbol("writeEntryClass"),gV=Symbol("write"),TD=Symbol("ondrain"),aB=require("fs"),fV=require("path"),DNe=Vw(),MD=DNe(class extends bNe{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[LD]=PD,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new vNe.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[TD]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[TD]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[vo]=new PNe,this[So]=0,this.jobs=+e.jobs||4,this[iB]=!1,this[rB]=!1}[gV](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[rB]=!0,this[dc](),this}write(e){if(this[rB])throw new Error("write after end");return e instanceof SNe?this[cV](e):this[nB](e),this.flowing}[cV](e){let r=fV.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let i=new kD(e.path,r,!1);i.entry=new kNe(e,this[ND](i)),i.entry.on("end",n=>this[DD](i)),this[So]+=1,this[vo].push(i)}this[dc]()}[nB](e){let r=fV.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[vo].push(new kD(e,r)),this[dc]()}[RD](e){e.pending=!0,this[So]+=1;let r=this.follow?"stat":"lstat";aB[r](e.absolute,(i,n)=>{e.pending=!1,this[So]-=1,i?this.emit("error",i):this[tB](e,n)})}[tB](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[dc]()}[FD](e){e.pending=!0,this[So]+=1,aB.readdir(e.absolute,(r,i)=>{if(e.pending=!1,this[So]-=1,r)return this.emit("error",r);this[sB](e,i)})}[sB](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[dc]()}[dc](){if(!this[iB]){this[iB]=!0;for(let e=this[vo].head;e!==null&&this[So]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[uV](e){this[So]+=1;try{return new this[LD](e.path,this[ND](e)).on("end",()=>this[DD](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[TD](){this[Eg]&&this[Eg].entry&&this[Eg].entry.resume()}[oB](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)});let r=e.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),hV=class extends MD{constructor(e){super(e);this[LD]=xNe}pause(){}resume(){}[RD](e){let r=this.follow?"statSync":"lstatSync";this[tB](e,aB[r](e.absolute))}[FD](e,r){this[sB](e,aB.readdirSync(e.absolute))}[oB](e){let r=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[gV](n)})}};MD.Sync=hV;aV.exports=MD});var bg=E(sd=>{"use strict";var RNe=hg(),FNe=require("events").EventEmitter,ls=require("fs"),lB=process.binding("fs"),Dlt=lB.writeBuffers,NNe=lB.FSReqWrap||lB.FSReqCallback,Ig=Symbol("_autoClose"),xo=Symbol("_close"),od=Symbol("_ended"),Jt=Symbol("_fd"),pV=Symbol("_finished"),Cc=Symbol("_flags"),OD=Symbol("_flush"),KD=Symbol("_handleChunk"),UD=Symbol("_makeBuf"),HD=Symbol("_mode"),cB=Symbol("_needDrain"),yg=Symbol("_onerror"),wg=Symbol("_onopen"),GD=Symbol("_onread"),mc=Symbol("_onwrite"),FA=Symbol("_open"),NA=Symbol("_path"),Ec=Symbol("_pos"),ko=Symbol("_queue"),Bg=Symbol("_read"),dV=Symbol("_readSize"),LA=Symbol("_reading"),uB=Symbol("_remain"),CV=Symbol("_size"),gB=Symbol("_write"),Qg=Symbol("_writing"),fB=Symbol("_defaultFlag"),jD=class extends RNe{constructor(e,r){if(r=r||{},super(r),this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Jt]=typeof r.fd=="number"?r.fd:null,this[NA]=e,this[dV]=r.readSize||16*1024*1024,this[LA]=!1,this[CV]=typeof r.size=="number"?r.size:Infinity,this[uB]=this[CV],this[Ig]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Jt]=="number"?this[Bg]():this[FA]()}get fd(){return this[Jt]}get path(){return this[NA]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[FA](){ls.open(this[NA],"r",(e,r)=>this[wg](e,r))}[wg](e,r){e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[Bg]())}[UD](){return Buffer.allocUnsafe(Math.min(this[dV],this[uB]))}[Bg](){if(!this[LA]){this[LA]=!0;let e=this[UD]();if(e.length===0)return process.nextTick(()=>this[GD](null,0,e));ls.read(this[Jt],e,0,e.length,null,(r,i,n)=>this[GD](r,i,n))}}[GD](e,r,i){this[LA]=!1,e?this[yg](e):this[KD](r,i)&&this[Bg]()}[xo](){this[Ig]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}[yg](e){this[LA]=!0,this[xo](),this.emit("error",e)}[KD](e,r){let i=!1;return this[uB]-=e,e>0&&(i=super.write(ethis[wg](e,r))}[wg](e,r){this[fB]&&this[Cc]==="r+"&&e&&e.code==="ENOENT"?(this[Cc]="w",this[FA]()):e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[OD]())}end(e,r){e&&this.write(e,r),this[od]=!0,!this[Qg]&&!this[ko].length&&typeof this[Jt]=="number"&&this[mc](null,0)}write(e,r){return typeof e=="string"&&(e=new Buffer(e,r)),this[od]?(this.emit("error",new Error("write() after end()")),!1):this[Jt]===null||this[Qg]||this[ko].length?(this[ko].push(e),this[cB]=!0,!1):(this[Qg]=!0,this[gB](e),!0)}[gB](e){ls.write(this[Jt],e,0,e.length,this[Ec],(r,i)=>this[mc](r,i))}[mc](e,r){e?this[yg](e):(this[Ec]!==null&&(this[Ec]+=r),this[ko].length?this[OD]():(this[Qg]=!1,this[od]&&!this[pV]?(this[pV]=!0,this[xo](),this.emit("finish")):this[cB]&&(this[cB]=!1,this.emit("drain"))))}[OD](){if(this[ko].length===0)this[od]&&this[mc](null,0);else if(this[ko].length===1)this[gB](this[ko].pop());else{let e=this[ko];this[ko]=[],LNe(this[Jt],e,this[Ec],(r,i)=>this[mc](r,i))}}[xo](){this[Ig]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}},EV=class extends YD{[FA](){let e;try{e=ls.openSync(this[NA],this[Cc],this[HD])}catch(r){if(this[fB]&&this[Cc]==="r+"&&r&&r.code==="ENOENT")return this[Cc]="w",this[FA]();throw r}this[wg](null,e)}[xo](){if(this[Ig]&&typeof this[Jt]=="number"){try{ls.closeSync(this[Jt])}catch(e){}this[Jt]=null,this.emit("close")}}[gB](e){try{this[mc](null,ls.writeSync(this[Jt],e,0,e.length,this[Ec]))}catch(r){this[mc](r,0)}}},LNe=(t,e,r,i)=>{let n=(o,a)=>i(o,a,e),s=new NNe;s.oncomplete=n,lB.writeBuffers(t,e,r,s)};sd.ReadStream=jD;sd.ReadStreamSync=mV;sd.WriteStream=YD;sd.WriteStreamSync=EV});var ld=E((Llt,IV)=>{"use strict";var TNe=Vw(),Flt=require("path"),MNe=Cg(),ONe=require("events"),KNe=Rh(),UNe=1024*1024,HNe=id(),yV=zw(),GNe=fD(),qD=Buffer.from([31,139]),cs=Symbol("state"),Ic=Symbol("writeEntry"),xa=Symbol("readEntry"),JD=Symbol("nextEntry"),wV=Symbol("processEntry"),us=Symbol("extendedHeader"),ad=Symbol("globalExtendedHeader"),TA=Symbol("meta"),BV=Symbol("emitMeta"),Ar=Symbol("buffer"),ka=Symbol("queue"),yc=Symbol("ended"),QV=Symbol("emittedEnd"),wc=Symbol("emit"),Qn=Symbol("unzip"),hB=Symbol("consumeChunk"),pB=Symbol("consumeChunkSub"),WD=Symbol("consumeBody"),bV=Symbol("consumeMeta"),vV=Symbol("consumeHeader"),dB=Symbol("consuming"),zD=Symbol("bufferConcat"),VD=Symbol("maybeEnd"),Ad=Symbol("writing"),MA=Symbol("aborted"),CB=Symbol("onDone"),Bc=Symbol("sawValidEntry"),mB=Symbol("sawNullBlock"),EB=Symbol("sawEOF"),jNe=t=>!0;IV.exports=TNe(class extends ONe{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Bc]=null,this.on(CB,r=>{(this[cs]==="begin"||this[Bc]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(CB,e.ondone):this.on(CB,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||UNe,this.filter=typeof e.filter=="function"?e.filter:jNe,this.writable=!0,this.readable=!1,this[ka]=new KNe,this[Ar]=null,this[xa]=null,this[Ic]=null,this[cs]="begin",this[TA]="",this[us]=null,this[ad]=null,this[yc]=!1,this[Qn]=null,this[MA]=!1,this[mB]=!1,this[EB]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[vV](e,r){this[Bc]===null&&(this[Bc]=!1);let i;try{i=new MNe(e,r,this[us],this[ad])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[mB]?(this[EB]=!0,this[cs]==="begin"&&(this[cs]="header"),this[wc]("eof")):(this[mB]=!0,this[wc]("nullBlock"));else if(this[mB]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Ic]=new HNe(i,this[us],this[ad]);if(!this[Bc])if(s.remain){let o=()=>{s.invalid||(this[Bc]=!0)};s.on("end",o)}else this[Bc]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[wc]("ignoredEntry",s),this[cs]="ignore",s.resume()):s.size>0&&(this[TA]="",s.on("data",o=>this[TA]+=o),this[cs]="meta"):(this[us]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[wc]("ignoredEntry",s),this[cs]=s.remain?"ignore":"header",s.resume()):(s.remain?this[cs]="body":(this[cs]="header",s.end()),this[xa]?this[ka].push(s):(this[ka].push(s),this[JD]())))}}}[wV](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[xa]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[JD]()),r=!1)):(this[xa]=null,r=!1),r}[JD](){do;while(this[wV](this[ka].shift()));if(!this[ka].length){let e=this[xa];!e||e.flowing||e.size===e.remain?this[Ad]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[WD](e,r){let i=this[Ic],n=i.blockRemain,s=n>=e.length&&r===0?e:e.slice(r,r+n);return i.write(s),i.blockRemain||(this[cs]="header",this[Ic]=null,i.end()),s.length}[bV](e,r){let i=this[Ic],n=this[WD](e,r);return this[Ic]||this[BV](i),n}[wc](e,r,i){!this[ka].length&&!this[xa]?this.emit(e,r,i):this[ka].push([e,r,i])}[BV](e){switch(this[wc]("meta",this[TA]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[us]=yV.parse(this[TA],this[us],!1);break;case"GlobalExtendedHeader":this[ad]=yV.parse(this[TA],this[ad],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[us]=this[us]||Object.create(null),this[us].path=this[TA].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[us]=this[us]||Object.create(null),this[us].linkpath=this[TA].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[MA]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[MA])return;if(this[Qn]===null&&e){if(this[Ar]&&(e=Buffer.concat([this[Ar],e]),this[Ar]=null),e.lengththis[hB](s)),this[Qn].on("error",s=>this.abort(s)),this[Qn].on("end",s=>{this[yc]=!0,this[hB]()}),this[Ad]=!0;let n=this[Qn][i?"end":"write"](e);return this[Ad]=!1,n}}this[Ad]=!0,this[Qn]?this[Qn].write(e):this[hB](e),this[Ad]=!1;let r=this[ka].length?!1:this[xa]?this[xa].flowing:!0;return!r&&!this[ka].length&&this[xa].once("drain",i=>this.emit("drain")),r}[zD](e){e&&!this[MA]&&(this[Ar]=this[Ar]?Buffer.concat([this[Ar],e]):e)}[VD](){if(this[yc]&&!this[QV]&&!this[MA]&&!this[dB]){this[QV]=!0;let e=this[Ic];if(e&&e.blockRemain){let r=this[Ar]?this[Ar].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[Ar]&&e.write(this[Ar]),e.end()}this[wc](CB)}}[hB](e){if(this[dB])this[zD](e);else if(!e&&!this[Ar])this[VD]();else{if(this[dB]=!0,this[Ar]){this[zD](e);let r=this[Ar];this[Ar]=null,this[pB](r)}else this[pB](e);for(;this[Ar]&&this[Ar].length>=512&&!this[MA]&&!this[EB];){let r=this[Ar];this[Ar]=null,this[pB](r)}this[dB]=!1}(!this[Ar]||this[yc])&&this[VD]()}[pB](e){let r=0,i=e.length;for(;r+512<=i&&!this[MA]&&!this[EB];)switch(this[cs]){case"begin":case"header":this[vV](e,r),r+=512;break;case"ignore":case"body":r+=this[WD](e,r);break;case"meta":r+=this[bV](e,r);break;default:throw new Error("invalid state: "+this[cs])}r{"use strict";var YNe=fg(),xV=ld(),vg=require("fs"),qNe=bg(),kV=require("path"),Tlt=SV.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=YNe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&WNe(i,e),i.noResume||JNe(i),i.file&&i.sync?zNe(i):i.file?VNe(i,r):PV(i)},JNe=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},WNe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||kV.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(kV.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},zNe=t=>{let e=PV(t),r=t.file,i=!0,n;try{let s=vg.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new xV(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),vg.stat(n,(l,c)=>{if(l)a(l);else{let u=new qNe.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},PV=t=>new xV(t)});var TV=E((Ult,DV)=>{"use strict";var _Ne=fg(),yB=AB(),Olt=require("fs"),RV=bg(),FV=IB(),NV=require("path"),Klt=DV.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=_Ne(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?XNe(i,e):i.file?ZNe(i,e,r):i.sync?$Ne(i,e):eLe(i,e)},XNe=(t,e)=>{let r=new yB.Sync(t),i=new RV.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(i),LV(r,e)},ZNe=(t,e,r)=>{let i=new yB(t),n=new RV.WriteStream(t.file,{mode:t.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return _D(i,e),r?s.then(r,r):s},LV=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?FV({file:NV.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},_D=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return FV({file:NV.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>_D(t,e));t.add(r)}t.end()},$Ne=(t,e)=>{let r=new yB.Sync(t);return LV(r,e),r},eLe=(t,e)=>{let r=new yB(t);return _D(r,e),r}});var XD=E((jlt,MV)=>{"use strict";var tLe=fg(),OV=AB(),Hlt=ld(),gs=require("fs"),KV=bg(),UV=IB(),HV=require("path"),GV=Cg(),Glt=MV.exports=(t,e,r)=>{let i=tLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?rLe(i,e):iLe(i,e,r)},rLe=(t,e)=>{let r=new OV.Sync(t),i=!0,n,s;try{try{n=gs.openSync(t.file,"r+")}catch(l){if(l.code==="ENOENT")n=gs.openSync(t.file,"w+");else throw l}let o=gs.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(l.path,l.mtime)}i=!1,nLe(t,r,s,n,e)}finally{if(i)try{gs.closeSync(n)}catch(o){}}},nLe=(t,e,r,i,n)=>{let s=new KV.WriteStreamSync(t.file,{fd:i,start:r});e.pipe(s),sLe(e,n)},iLe=(t,e,r)=>{e=Array.from(e);let i=new OV(t),n=(o,a,l)=>{let c=(p,d)=>{p?gs.close(o,m=>l(p)):l(null,d)},u=0;if(a===0)return c(null,0);let g=0,f=Buffer.alloc(512),h=(p,d)=>{if(p)return c(p);if(g+=d,g<512&&d)return gs.read(o,f,g,f.length-g,u+g,h);if(u===0&&f[0]===31&&f[1]===139)return c(new Error("cannot append to compressed archives"));if(g<512)return c(null,u);let m=new GV(f);if(!m.cksumValid)return c(null,u);let I=512*Math.ceil(m.size/512);if(u+I+512>a||(u+=I+512,u>=a))return c(null,u);t.mtimeCache&&t.mtimeCache.set(m.path,m.mtime),g=0,gs.read(o,f,0,512,u,h)};gs.read(o,f,0,512,u,h)},s=new Promise((o,a)=>{i.on("error",a);let l="r+",c=(u,g)=>{if(u&&u.code==="ENOENT"&&l==="r+")return l="w+",gs.open(t.file,l,c);if(u)return a(u);gs.fstat(g,(f,h)=>{if(f)return a(f);n(g,h.size,(p,d)=>{if(p)return a(p);let m=new KV.WriteStream(t.file,{fd:g,start:d});i.pipe(m),m.on("error",a),m.on("close",o),jV(i,e)})})};gs.open(t.file,l,c)});return r?s.then(r,r):s},sLe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?UV({file:HV.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},jV=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return UV({file:HV.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>jV(t,e));t.add(r)}t.end()}});var qV=E((qlt,YV)=>{"use strict";var oLe=fg(),aLe=XD(),Ylt=YV.exports=(t,e,r)=>{let i=oLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),ALe(i),aLe(i,e,r)},ALe=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,i)=>e(r,i)&&!(t.mtimeCache.get(r)>i.mtime):(r,i)=>!(t.mtimeCache.get(r)>i.mtime)}});var zV=E((Jlt,JV)=>{var{promisify:WV}=require("util"),OA=require("fs"),lLe=t=>{if(!t)t={mode:511,fs:OA};else if(typeof t=="object")t=P({mode:511,fs:OA},t);else if(typeof t=="number")t={mode:t,fs:OA};else if(typeof t=="string")t={mode:parseInt(t,8),fs:OA};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||OA.mkdir,t.mkdirAsync=WV(t.mkdir),t.stat=t.stat||t.fs.stat||OA.stat,t.statAsync=WV(t.stat),t.statSync=t.statSync||t.fs.statSync||OA.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||OA.mkdirSync,t};JV.exports=lLe});var _V=E((Wlt,VV)=>{var cLe=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:uLe,parse:gLe}=require("path"),fLe=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=uLe(t),cLe==="win32"){let e=/[*|"<>?:]/,{root:r}=gLe(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};VV.exports=fLe});var t7=E((zlt,XV)=>{var{dirname:ZV}=require("path"),$V=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?$V(t,ZV(e),e):void 0),e7=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?e7(t,ZV(e),e):void 0}};XV.exports={findMade:$V,findMadeSync:e7}});var eR=E((Vlt,r7)=>{var{dirname:i7}=require("path"),ZD=(t,e,r)=>{e.recursive=!1;let i=i7(t);return i===t?e.mkdirAsync(t,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(t,e).then(()=>r||t,n=>{if(n.code==="ENOENT")return ZD(i,e).then(s=>ZD(t,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},$D=(t,e,r)=>{let i=i7(t);if(e.recursive=!1,i===t)try{return e.mkdirSync(t,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(t,e),r||t}catch(n){if(n.code==="ENOENT")return $D(t,e,$D(i,e,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(t).isDirectory())throw n}catch(s){throw n}}};r7.exports={mkdirpManual:ZD,mkdirpManualSync:$D}});var o7=E((_lt,n7)=>{var{dirname:s7}=require("path"),{findMade:hLe,findMadeSync:pLe}=t7(),{mkdirpManual:dLe,mkdirpManualSync:CLe}=eR(),mLe=(t,e)=>(e.recursive=!0,s7(t)===t?e.mkdirAsync(t,e):hLe(e,t).then(i=>e.mkdirAsync(t,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return dLe(t,e);throw n}))),ELe=(t,e)=>{if(e.recursive=!0,s7(t)===t)return e.mkdirSync(t,e);let i=pLe(e,t);try{return e.mkdirSync(t,e),i}catch(n){if(n.code==="ENOENT")return CLe(t,e);throw n}};n7.exports={mkdirpNative:mLe,mkdirpNativeSync:ELe}});var c7=E((Xlt,a7)=>{var A7=require("fs"),ILe=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,tR=ILe.replace(/^v/,"").split("."),l7=+tR[0]>10||+tR[0]==10&&+tR[1]>=12,yLe=l7?t=>t.mkdir===A7.mkdir:()=>!1,wLe=l7?t=>t.mkdirSync===A7.mkdirSync:()=>!1;a7.exports={useNative:yLe,useNativeSync:wLe}});var d7=E((Zlt,u7)=>{var Sg=zV(),xg=_V(),{mkdirpNative:g7,mkdirpNativeSync:f7}=o7(),{mkdirpManual:h7,mkdirpManualSync:p7}=eR(),{useNative:BLe,useNativeSync:QLe}=c7(),kg=(t,e)=>(t=xg(t),e=Sg(e),BLe(e)?g7(t,e):h7(t,e)),bLe=(t,e)=>(t=xg(t),e=Sg(e),QLe(e)?f7(t,e):p7(t,e));kg.sync=bLe;kg.native=(t,e)=>g7(xg(t),Sg(e));kg.manual=(t,e)=>h7(xg(t),Sg(e));kg.nativeSync=(t,e)=>f7(xg(t),Sg(e));kg.manualSync=(t,e)=>p7(xg(t),Sg(e));u7.exports=kg});var B7=E(($lt,C7)=>{"use strict";var fs=require("fs"),Qc=require("path"),vLe=fs.lchown?"lchown":"chown",SLe=fs.lchownSync?"lchownSync":"chownSync",m7=fs.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),E7=(t,e,r)=>{try{return fs[SLe](t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},xLe=(t,e,r)=>{try{return fs.chownSync(t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},kLe=m7?(t,e,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):fs.chown(t,e,r,i)}:(t,e,r,i)=>i,rR=m7?(t,e,r)=>{try{return E7(t,e,r)}catch(i){if(i.code!=="EISDIR")throw i;xLe(t,e,r)}}:(t,e,r)=>E7(t,e,r),PLe=process.version,I7=(t,e,r)=>fs.readdir(t,e,r),DLe=(t,e)=>fs.readdirSync(t,e);/^v4\./.test(PLe)&&(I7=(t,e,r)=>fs.readdir(t,r));var wB=(t,e,r,i)=>{fs[vLe](t,e,r,kLe(t,e,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},y7=(t,e,r,i,n)=>{if(typeof e=="string")return fs.lstat(Qc.resolve(t,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,y7(t,o,r,i,n)});if(e.isDirectory())iR(Qc.resolve(t,e.name),r,i,s=>{if(s)return n(s);let o=Qc.resolve(t,e.name);wB(o,r,i,n)});else{let s=Qc.resolve(t,e.name);wB(s,r,i,n)}},iR=(t,e,r,i)=>{I7(t,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return wB(t,e,r,i);let o=s.length,a=null,l=c=>{if(!a){if(c)return i(a=c);if(--o==0)return wB(t,e,r,i)}};s.forEach(c=>y7(t,c,e,r,l))})},RLe=(t,e,r,i)=>{if(typeof e=="string")try{let n=fs.lstatSync(Qc.resolve(t,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&w7(Qc.resolve(t,e.name),r,i),rR(Qc.resolve(t,e.name),r,i)},w7=(t,e,r)=>{let i;try{i=DLe(t,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return rR(t,e,r);throw n}return i&&i.length&&i.forEach(n=>RLe(t,n,e,r)),rR(t,e,r)};C7.exports=iR;iR.sync=w7});var S7=E((rct,nR)=>{"use strict";var Q7=d7(),hs=require("fs"),BB=require("path"),b7=B7(),sR=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},cd=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}},ect=nR.exports=(t,e,r)=>{let i=e.umask,n=e.mode|448,s=(n&i)!=0,o=e.uid,a=e.gid,l=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,u=e.unlink,g=e.cache,f=e.cwd,h=(m,I)=>{m?r(m):(g.set(t,!0),I&&l?b7(I,o,a,B=>h(B)):s?hs.chmod(t,n,r):r())};if(g&&g.get(t)===!0)return h();if(t===f)return hs.stat(t,(m,I)=>{(m||!I.isDirectory())&&(m=new cd(t,m&&m.code||"ENOTDIR")),h(m)});if(c)return Q7(t,{mode:n}).then(m=>h(null,m),h);let d=BB.relative(f,t).split(/\/|\\/);QB(f,d,n,g,u,f,null,h)},QB=(t,e,r,i,n,s,o,a)=>{if(!e.length)return a(null,o);let l=e.shift(),c=t+"/"+l;if(i.get(c))return QB(c,e,r,i,n,s,o,a);hs.mkdir(c,r,v7(c,e,r,i,n,s,o,a))},v7=(t,e,r,i,n,s,o,a)=>l=>{if(l){if(l.path&&BB.dirname(l.path)===s&&(l.code==="ENOTDIR"||l.code==="ENOENT"))return a(new cd(s,l.code));hs.lstat(t,(c,u)=>{if(c)a(c);else if(u.isDirectory())QB(t,e,r,i,n,s,o,a);else if(n)hs.unlink(t,g=>{if(g)return a(g);hs.mkdir(t,r,v7(t,e,r,i,n,s,o,a))});else{if(u.isSymbolicLink())return a(new sR(t,t+"/"+e.join("/")));a(l)}})}else o=o||t,QB(t,e,r,i,n,s,o,a)},tct=nR.exports.sync=(t,e)=>{let r=e.umask,i=e.mode|448,n=(i&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),l=e.preserve,c=e.unlink,u=e.cache,g=e.cwd,f=m=>{u.set(t,!0),m&&a&&b7.sync(m,s,o),n&&hs.chmodSync(t,i)};if(u&&u.get(t)===!0)return f();if(t===g){let m=!1,I="ENOTDIR";try{m=hs.statSync(t).isDirectory()}catch(B){I=B.code}finally{if(!m)throw new cd(t,I)}f();return}if(l)return f(Q7.sync(t,i));let p=BB.relative(g,t).split(/\/|\\/),d=null;for(let m=p.shift(),I=g;m&&(I+="/"+m);m=p.shift())if(!u.get(I))try{hs.mkdirSync(I,i),d=d||I,u.set(I,!0)}catch(B){if(B.path&&BB.dirname(B.path)===g&&(B.code==="ENOTDIR"||B.code==="ENOENT"))return new cd(g,B.code);let b=hs.lstatSync(I);if(b.isDirectory()){u.set(I,!0);continue}else if(c){hs.unlinkSync(I),hs.mkdirSync(I,i),d=d||I,u.set(I,!0);continue}else if(b.isSymbolicLink())return new sR(I,I+"/"+p.join("/"))}return f(d)}});var P7=E((ict,x7)=>{var k7=require("assert");x7.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\\/]/).slice(0,-1).reduce((g,f)=>g.length?g.concat(r(g[g.length-1],f)):[f],[]),n=new Set,s=u=>{let g=e.get(u);if(!g)throw new Error("function does not have any path reservations");return{paths:g.paths.map(f=>t.get(f)),dirs:[...g.dirs].map(f=>t.get(f))}},o=u=>{let{paths:g,dirs:f}=s(u);return g.every(h=>h[0]===u)&&f.every(h=>h[0]instanceof Set&&h[0].has(u))},a=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>l(u)),!0),l=u=>{if(!n.has(u))return!1;let{paths:g,dirs:f}=e.get(u),h=new Set;return g.forEach(p=>{let d=t.get(p);k7.equal(d[0],u),d.length===1?t.delete(p):(d.shift(),typeof d[0]=="function"?h.add(d[0]):d[0].forEach(m=>h.add(m)))}),f.forEach(p=>{let d=t.get(p);k7(d[0]instanceof Set),d[0].size===1&&d.length===1?t.delete(p):d[0].size===1?(d.shift(),h.add(d[0])):d[0].delete(u)}),n.delete(u),h.forEach(p=>a(p)),!0};return{check:o,reserve:(u,g)=>{let f=new Set(u.map(h=>i(h)).reduce((h,p)=>h.concat(p)));return e.set(g,{dirs:f,paths:u}),u.forEach(h=>{let p=t.get(h);p?p.push(g):t.set(h,[g])}),f.forEach(h=>{let p=t.get(h);p?p[p.length-1]instanceof Set?p[p.length-1].add(g):p.push(new Set([g])):t.set(h,[new Set([g])])}),a(g)}}}});var F7=E((nct,D7)=>{var FLe=process.env.__FAKE_PLATFORM__||process.platform,NLe=FLe==="win32",LLe=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:TLe,O_TRUNC:MLe,O_WRONLY:OLe,UV_FS_O_FILEMAP:R7=0}=LLe.constants,KLe=NLe&&!!R7,ULe=512*1024,HLe=R7|MLe|TLe|OLe;D7.exports=KLe?t=>t"w"});var hR=E((Act,N7)=>{"use strict";var GLe=require("assert"),sct=require("events").EventEmitter,jLe=ld(),Ut=require("fs"),YLe=bg(),Pa=require("path"),oR=S7(),oct=oR.sync,L7=yD(),qLe=P7(),T7=Symbol("onEntry"),aR=Symbol("checkFs"),M7=Symbol("checkFs2"),AR=Symbol("isReusable"),Da=Symbol("makeFs"),lR=Symbol("file"),cR=Symbol("directory"),bB=Symbol("link"),O7=Symbol("symlink"),K7=Symbol("hardlink"),U7=Symbol("unsupported"),act=Symbol("unknown"),H7=Symbol("checkPath"),Pg=Symbol("mkdir"),nn=Symbol("onError"),vB=Symbol("pending"),G7=Symbol("pend"),Dg=Symbol("unpend"),uR=Symbol("ended"),gR=Symbol("maybeClose"),fR=Symbol("skip"),ud=Symbol("doChown"),gd=Symbol("uid"),fd=Symbol("gid"),j7=require("crypto"),Y7=F7(),SB=()=>{throw new Error("sync function called cb somehow?!?")},JLe=(t,e)=>{if(process.platform!=="win32")return Ut.unlink(t,e);let r=t+".DELETE."+j7.randomBytes(16).toString("hex");Ut.rename(t,r,i=>{if(i)return e(i);Ut.unlink(r,e)})},WLe=t=>{if(process.platform!=="win32")return Ut.unlinkSync(t);let e=t+".DELETE."+j7.randomBytes(16).toString("hex");Ut.renameSync(t,e),Ut.unlinkSync(e)},q7=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,xB=class extends jLe{constructor(e){if(e||(e={}),e.ondone=r=>{this[uR]=!0,this[gR]()},super(e),this.reservations=qLe(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[vB]=0,this[uR]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Pa.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[T7](r))}warn(e,r,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,r,i)}[gR](){this[uR]&&this[vB]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[H7](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(Pa.win32.isAbsolute(r)){let i=Pa.win32.parse(r);e.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=Pa.win32.parse(e.path);e.path=r.root===""?L7.encode(e.path):r.root+L7.encode(e.path.substr(r.root.length))}return Pa.isAbsolute(e.path)?e.absolute=e.path:e.absolute=Pa.resolve(this.cwd,e.path),!0}[T7](e){if(!this[H7](e))return e.resume();switch(GLe.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[aR](e);case"CharacterDevice":case"BlockDevice":case"FIFO":return this[U7](e)}}[nn](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[Dg](),r.resume())}[Pg](e,r,i){oR(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r},i)}[ud](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[gd](e){return q7(this.uid,e.uid,this.processUid)}[fd](e){return q7(this.gid,e.gid,this.processGid)}[lR](e,r){let i=e.mode&4095||this.fmode,n=new YLe.WriteStream(e.absolute,{flags:Y7(e.size),mode:i,autoClose:!1});n.on("error",l=>this[nn](l,e));let s=1,o=l=>{if(l)return this[nn](l,e);--s==0&&Ut.close(n.fd,c=>{r(),c?this[nn](c,e):this[Dg]()})};n.on("finish",l=>{let c=e.absolute,u=n.fd;if(e.mtime&&!this.noMtime){s++;let g=e.atime||new Date,f=e.mtime;Ut.futimes(u,g,f,h=>h?Ut.utimes(c,g,f,p=>o(p&&h)):o())}if(this[ud](e)){s++;let g=this[gd](e),f=this[fd](e);Ut.fchown(u,g,f,h=>h?Ut.chown(c,g,f,p=>o(p&&h)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.pipe(n)}[cR](e,r){let i=e.mode&4095||this.dmode;this[Pg](e.absolute,i,n=>{if(n)return r(),this[nn](n,e);let s=1,o=a=>{--s==0&&(r(),this[Dg](),e.resume())};e.mtime&&!this.noMtime&&(s++,Ut.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[ud](e)&&(s++,Ut.chown(e.absolute,this[gd](e),this[fd](e),o)),o()})}[U7](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[O7](e,r){this[bB](e,e.linkpath,"symlink",r)}[K7](e,r){this[bB](e,Pa.resolve(this.cwd,e.linkpath),"link",r)}[G7](){this[vB]++}[Dg](){this[vB]--,this[gR]()}[fR](e){this[Dg](),e.resume()}[AR](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[aR](e){this[G7]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,i=>this[M7](e,i))}[M7](e,r){this[Pg](Pa.dirname(e.absolute),this.dmode,i=>{if(i)return r(),this[nn](i,e);Ut.lstat(e.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[fR](e),r()):n||this[AR](e,s)?this[Da](null,e,r):s.isDirectory()?e.type==="Directory"?!e.mode||(s.mode&4095)===e.mode?this[Da](null,e,r):Ut.chmod(e.absolute,e.mode,o=>this[Da](o,e,r)):Ut.rmdir(e.absolute,o=>this[Da](o,e,r)):JLe(e.absolute,o=>this[Da](o,e,r))})})}[Da](e,r,i){if(e)return this[nn](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[lR](r,i);case"Link":return this[K7](r,i);case"SymbolicLink":return this[O7](r,i);case"Directory":case"GNUDumpDir":return this[cR](r,i)}}[bB](e,r,i,n){Ut[i](r,e.absolute,s=>{if(s)return this[nn](s,e);n(),this[Dg](),e.resume()})}},J7=class extends xB{constructor(e){super(e)}[aR](e){let r=this[Pg](Pa.dirname(e.absolute),this.dmode,SB);if(r)return this[nn](r,e);try{let i=Ut.lstatSync(e.absolute);if(this.keep||this.newer&&i.mtime>e.mtime)return this[fR](e);if(this[AR](e,i))return this[Da](null,e,SB);try{return i.isDirectory()?e.type==="Directory"?e.mode&&(i.mode&4095)!==e.mode&&Ut.chmodSync(e.absolute,e.mode):Ut.rmdirSync(e.absolute):WLe(e.absolute),this[Da](null,e,SB)}catch(n){return this[nn](n,e)}}catch(i){return this[Da](null,e,SB)}}[lR](e,r){let i=e.mode&4095||this.fmode,n=l=>{let c;try{Ut.closeSync(o)}catch(u){c=u}(l||c)&&this[nn](l||c,e)},s,o;try{o=Ut.openSync(e.absolute,Y7(e.size),i)}catch(l){return n(l)}let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.on("data",l=>{try{Ut.writeSync(o,l,0,l.length)}catch(c){n(c)}}),a.on("end",l=>{let c=null;if(e.mtime&&!this.noMtime){let u=e.atime||new Date,g=e.mtime;try{Ut.futimesSync(o,u,g)}catch(f){try{Ut.utimesSync(e.absolute,u,g)}catch(h){c=f}}}if(this[ud](e)){let u=this[gd](e),g=this[fd](e);try{Ut.fchownSync(o,u,g)}catch(f){try{Ut.chownSync(e.absolute,u,g)}catch(h){c=c||f}}}n(c)})}[cR](e,r){let i=e.mode&4095||this.dmode,n=this[Pg](e.absolute,i);if(n)return this[nn](n,e);if(e.mtime&&!this.noMtime)try{Ut.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[ud](e))try{Ut.chownSync(e.absolute,this[gd](e),this[fd](e))}catch(s){}e.resume()}[Pg](e,r){try{return oR.sync(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[bB](e,r,i,n){try{Ut[i+"Sync"](r,e.absolute),e.resume()}catch(s){return this[nn](s,e)}}};xB.Sync=J7;N7.exports=xB});var X7=E((cct,W7)=>{"use strict";var zLe=fg(),kB=hR(),z7=require("fs"),V7=bg(),_7=require("path"),lct=W7.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=zLe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&VLe(i,e),i.file&&i.sync?_Le(i):i.file?XLe(i,r):i.sync?ZLe(i):$Le(i)},VLe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||_7.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(_7.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},_Le=t=>{let e=new kB.Sync(t),r=t.file,i=!0,n,s=z7.statSync(r),o=t.maxReadSize||16*1024*1024;new V7.ReadStreamSync(r,{readSize:o,size:s.size}).pipe(e)},XLe=(t,e)=>{let r=new kB(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),z7.stat(n,(l,c)=>{if(l)a(l);else{let u=new V7.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},ZLe=t=>new kB.Sync(t),$Le=t=>new kB(t)});var Z7=E($r=>{"use strict";$r.c=$r.create=TV();$r.r=$r.replace=XD();$r.t=$r.list=IB();$r.u=$r.update=qV();$r.x=$r.extract=X7();$r.Pack=AB();$r.Unpack=hR();$r.Parse=ld();$r.ReadEntry=id();$r.WriteEntry=xD();$r.Header=Cg();$r.Pax=zw();$r.types=rd()});var e_=E((gct,pR)=>{"use strict";var eTe=Object.prototype.hasOwnProperty,sn="~";function hd(){}Object.create&&(hd.prototype=Object.create(null),new hd().__proto__||(sn=!1));function tTe(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function $7(t,e,r,i,n){if(typeof r!="function")throw new TypeError("The listener must be a function");var s=new tTe(r,i||t,n),o=sn?sn+e:e;return t._events[o]?t._events[o].fn?t._events[o]=[t._events[o],s]:t._events[o].push(s):(t._events[o]=s,t._eventsCount++),t}function PB(t,e){--t._eventsCount==0?t._events=new hd:delete t._events[e]}function Ti(){this._events=new hd,this._eventsCount=0}Ti.prototype.eventNames=function(){var e=[],r,i;if(this._eventsCount===0)return e;for(i in r=this._events)eTe.call(r,i)&&e.push(sn?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(r)):e};Ti.prototype.listeners=function(e){var r=sn?sn+e:e,i=this._events[r];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,s=i.length,o=new Array(s);n{"use strict";t_.exports=(t,e)=>(e=e||(()=>{}),t.then(r=>new Promise(i=>{i(e())}).then(()=>r),r=>new Promise(i=>{i(e())}).then(()=>{throw r})))});var n_=E((hct,DB)=>{"use strict";var rTe=r_(),dR=class extends Error{constructor(e){super(e);this.name="TimeoutError"}},i_=(t,e,r)=>new Promise((i,n)=>{if(typeof e!="number"||e<0)throw new TypeError("Expected `milliseconds` to be a positive number");if(e===Infinity){i(t);return}let s=setTimeout(()=>{if(typeof r=="function"){try{i(r())}catch(l){n(l)}return}let o=typeof r=="string"?r:`Promise timed out after ${e} milliseconds`,a=r instanceof Error?r:new dR(o);typeof t.cancel=="function"&&t.cancel(),n(a)},e);rTe(t.then(i,n),()=>{clearTimeout(s)})});DB.exports=i_;DB.exports.default=i_;DB.exports.TimeoutError=dR});var s_=E(CR=>{"use strict";Object.defineProperty(CR,"__esModule",{value:!0});function iTe(t,e,r){let i=0,n=t.length;for(;n>0;){let s=n/2|0,o=i+s;r(t[o],e)<=0?(i=++o,n-=s+1):n=s}return i}CR.default=iTe});var a_=E(mR=>{"use strict";Object.defineProperty(mR,"__esModule",{value:!0});var nTe=s_(),o_=class{constructor(){this._queue=[]}enqueue(e,r){r=Object.assign({priority:0},r);let i={priority:r.priority,run:e};if(this.size&&this._queue[this.size-1].priority>=r.priority){this._queue.push(i);return}let n=nTe.default(this._queue,i,(s,o)=>o.priority-s.priority);this._queue.splice(n,0,i)}dequeue(){let e=this._queue.shift();return e==null?void 0:e.run}filter(e){return this._queue.filter(r=>r.priority===e.priority).map(r=>r.run)}get size(){return this._queue.length}};mR.default=o_});var c_=E(ER=>{"use strict";Object.defineProperty(ER,"__esModule",{value:!0});var sTe=e_(),A_=n_(),oTe=a_(),RB=()=>{},aTe=new A_.TimeoutError,l_=class extends sTe{constructor(e){var r,i,n,s;super();if(this._intervalCount=0,this._intervalEnd=0,this._pendingCount=0,this._resolveEmpty=RB,this._resolveIdle=RB,e=Object.assign({carryoverConcurrencyCount:!1,intervalCap:Infinity,interval:0,concurrency:Infinity,autoStart:!0,queueClass:oTe.default},e),!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(i=(r=e.intervalCap)===null||r===void 0?void 0:r.toString())!==null&&i!==void 0?i:""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(s=(n=e.interval)===null||n===void 0?void 0:n.toString())!==null&&s!==void 0?s:""}\` (${typeof e.interval})`);this._carryoverConcurrencyCount=e.carryoverConcurrencyCount,this._isIntervalIgnored=e.intervalCap===Infinity||e.interval===0,this._intervalCap=e.intervalCap,this._interval=e.interval,this._queue=new e.queueClass,this._queueClass=e.queueClass,this.concurrency=e.concurrency,this._timeout=e.timeout,this._throwOnTimeout=e.throwOnTimeout===!0,this._isPaused=e.autoStart===!1}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()},r)),!0}return!1}_tryToStartAnother(){if(this._queue.size===0)return this._intervalId&&clearInterval(this._intervalId),this._intervalId=void 0,this._resolvePromises(),!1;if(!this._isPaused){let e=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother){let r=this._queue.dequeue();return r?(this.emit("active"),r(),e&&this._initializeIntervalIfNeeded(),!0):!1}}return!1}_initializeIntervalIfNeeded(){this._isIntervalIgnored||this._intervalId!==void 0||(this._intervalId=setInterval(()=>{this._onInterval()},this._interval),this._intervalEnd=Date.now()+this._interval)}_onInterval(){this._intervalCount===0&&this._pendingCount===0&&this._intervalId&&(clearInterval(this._intervalId),this._intervalId=void 0),this._intervalCount=this._carryoverConcurrencyCount?this._pendingCount:0,this._processQueue()}_processQueue(){for(;this._tryToStartAnother(););}get concurrency(){return this._concurrency}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this._concurrency=e,this._processQueue()}async add(e,r={}){return new Promise((i,n)=>{let s=async()=>{this._pendingCount++,this._intervalCount++;try{let o=this._timeout===void 0&&r.timeout===void 0?e():A_.default(Promise.resolve(e()),r.timeout===void 0?this._timeout:r.timeout,()=>{(r.throwOnTimeout===void 0?this._throwOnTimeout:r.throwOnTimeout)&&n(aTe)});i(await o)}catch(o){n(o)}this._next()};this._queue.enqueue(s,r),this._tryToStartAnother(),this.emit("add")})}async addAll(e,r){return Promise.all(e.map(async i=>this.add(i,r)))}start(){return this._isPaused?(this._isPaused=!1,this._processQueue(),this):this}pause(){this._isPaused=!0}clear(){this._queue=new this._queueClass}async onEmpty(){if(this._queue.size!==0)return new Promise(e=>{let r=this._resolveEmpty;this._resolveEmpty=()=>{r(),e()}})}async onIdle(){if(!(this._pendingCount===0&&this._queue.size===0))return new Promise(e=>{let r=this._resolveIdle;this._resolveIdle=()=>{r(),e()}})}get size(){return this._queue.size}sizeBy(e){return this._queue.filter(e).length}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}get timeout(){return this._timeout}set timeout(e){this._timeout=e}};ER.default=l_});var p_=E((Ect,h_)=>{var yR;h_.exports.getContent=()=>(typeof yR=="undefined"&&(yR=require("zlib").brotliDecompressSync(Buffer.from("W4IvekBxw2bzwtWbVf5fyX2AzAPMISJEY/fbMcKtepRTQlBXjG63eijJbQN4ALzvTBt+EVRVTTsqQ1wCS1oAYPuvqgWZIinRemQXGoWk4C5BOebq1CAsym3ILBoVZ6LpLswKQ4VNE6OQ3IoPxtM31ikJr/0aapiJOVzKMZJvVs7xyhEPb7LomEWn5rAew20WdiSC78J8645T+pzTZd2xBeNUftH3D/KCqIvf9WM4TH9KLFd/FFfbC9KDCMMr8adqt8u9KMdA74EW1Fz9lq72Fjds/1MKj113I0V5rYqPiha9B2QgN/UDYBFRw5RY5xhbddceetpc4haPeL+qeP+HTa1/Pq/ByyJE0UgpHdi9UprGorlUjHtupQT+VS2rl031EBiQOP5mroPRuipsZVWUW16j8M/7N+4KHWj7S2plWoCBPv+/38++//x8bZ2sRVXnUHS884T7MhrTmVHjqPfJZSGBA9aVWAxVdDc9Xf/vTf3++/NlPBnDmKNYctqelsOFLOtk2d/mNhagxTxLQhWSlVZ2r6Xa/z4vkq5xSelcxWaxOaNFx4IjJdnZ+Erp8j+b5umKtUkoCoPelwSsxzIp9VzqNhmsiVywXNlJmPWlWr9O1wIvqPm8JC82ja2IDr1iR/Fe8z/fZv0/P1+3V3CNoJcd5i006W2GbMubVIrYElLcSMfKvdfYoV4apEfBp/E11b/nciLpskmBtKqU1gftJEwEDG/ZtYz+9//7pf3nx7wFo/SUT5iokUamoOLyl2UKjdeEU1d8r9Zn1W/R7eZWhxGyeSNAH9CMnYsUVXwp3/n8cvE+dWlKucsjjWYs/4LsTBKzAwNjYyCAAy5NETCxge3maAgT8APsh/XO/peL90kHuBm2p0rV3fIPykIDzo74hlK1bAwxM20ZHt9U63ily5vo+kHRMSdKgaYfOwhz5Sn2hqLhvy9fteViPqI/k9DL+xoFskEQUkGCbXnH0EfVtM4EEiG74fjy7dV+uXg/8mlfsjxHVxeEgUS4uHF2DpkKxpM4LZ4hrh81tj8eOkhmfTq+2R1gENABqeimmItRoeJvJQub2vPpdo2nSCEiTvrJ3v1pZnEV7gg7+7bWHw9/T2fj2NRHgBmZD0gTueleIeisWP3ve1NzaagBiQ4pLZZ5N4QEOcfVAv/cc94VfugWOqDJboCoAcO4FCukye+935B/g2QZAKUpkJMoTaLkkNJqZmXnnXc7l7cb+//v+6WVmwJgtkaxRwjhjeEBiQSrmq21P8vHP+JuIv7/8ZsZGRnNlFNAElxFoAprKLv12efc974EEPEzi5UCNUWCZAuWw+oRylPKm/H8nrGE4Y3nRYI1a3G1VWss5Vjjjd+396ukveuZPAOC3hGow6czI949qilzduyanpH3yOaNG5FZ5le1k3dYAlQAg/erZHpX8khigvo/nVn7RzOS7603SEV3TaEB/xB2h01p0OjvbgwHYahSHZHHkmPJIYCiT5WibQ7Q5f3/ptrb3jczIEFxpU9wE/Wjdp1TO6D2O6UqxNK9K7x337zVvPcGR8CA/AIGoA8whM6SIHWWAMgNoBYAfwDwE7VRcqQc6Uw5bugEUCH+xB/1HVKqfoidQypzaAofF6XLzp3b3m2XqsZFaf/73tT6n55z04FGEFVPpo3z40SSVUWZZ5yP+Wvds/dZobzn3BsFpIkiMhPRZAKMEAEyukiQbSjVOTcT1LlJlCoBUdUJUNUNUKr3KHVVBKWu/u3+9zLPSd/5mRtMfsydGVk/mqm/1TfGgDpnFwZZVYV1P89TV//q/HPhVV/6WdbylQI4FYpghN+zaesKrSABi8VSH1Nx2kmj0XQsFUaHkK5/KcdyY0sswnPfvPCw6crGIMn8huUTkuWHrVKmTlHf3ABu+/6mxDupC4NeFbEgR25IDpQB4ogctIDx4v+eB7f1bx5MDkR+GMAGLIiNEQsiJSUNwgKLUEklUrj4vxfQGoroZy0UMgi9QYq78h+Wnfr7F+lh0AFzmEPAAXMIGCRIwBwiFuxiD8NuYXPo4e3383TBv//uCTN3WSoqEBWICkQFooItZEEgEAhEk3Xb1q0Pvpvd+6uX3GeSQyAqEAhEBQKBQCAQiApERXOpqKhArP/bnn8+zr2hfHjhBGEMOxhkMBgMMhgMBsMJMpwBg2EHww47LAbD3TYqqpm5T717dy0QiAgEAoFAIBARiAgEAoFAIBBUHSIiAohKp9p/A3DA5pMBLw4ATR+lx+ldZfjflmXc9VqyBAuwAKu3c1Vfv68x5vlt/h8sdkFuJKUjDCJNEAvxbubEJrZ+8fOz+QTu28Bv8/+fM3h36Lx1jmIgYYLOYGJg4uyFKBbqpK3Fex9/CCemR7f6iQJ6QOTu/q6mASmUbiAgoQhJoAeQLk2kiAJi393bfzczsyUv2TLwbvv/O8pzGcgLYwmLgiFuYFAGYTVSJqAIvY0bv2veuxPoVg0uEBdEvrkbQguhhdoFAkhIqCnUJq1ldxXvvssKEhYpfyGy6RbAv2zkGaunLESfoON74WHk+D2YOHbOwKOPCESrJ9S5BC7ZgBmPDoObI8dX5FkU4JQzYIGh+6zg9rbnz2QgZohZ3pEbHQ6sjViSgPTQij7Dxutes69hv+5XpysLHkb2cPjYxDOuImDZiaoy4Ysya3+5FPzE5FKHw06eJGnB0LQq0xyqR/1KeqUM8LspwsGd9PmHhrBBt+Rui33l3rZi+li7ZMcC8qelNCM+/KAvzkzPSyerciwLTg0KtrZmCWSr3aqAsSz8V6qB4mYiE6ag9wGCYqPgDqI267Rlxkb01wEJabYuUGhDWCL3ZOJtkhcF6ks3DJeL59x/rmExNtaU8Q8Kziwegm+LLjYrJXAPICERn8O4BPB6BSh8Kg9in4VbjjsaYtsAnLv7evkj3Q78A5v85T70kFfT6zcx7GaA6IVcN8jz9+3M4HzI8ZP8HklBF2bRuyuOnq3B17cPjzClHQgFwSXCmOgEQSY3xoTZFE0mJ8aEa1BiKTImOil6KrkwJtwAKSuBxkRrULrZU2U1nsOiC3k25pUg4NLu9emwkx81TFYucs3wxqTHHS3F/IzT4iFZ9UNDSGyevtDZ8c+SsOKnnc4/yzSjPj319W1EB9Q3YVDtn1sc3+yR1d9LNvyrOh/Ux4FZwNng+ukRPmqhNgH8bAzaGyCyAQ27E8Mlhdberrd1cTapgYerB6kFZOZnVd3F00FZ2X+2/enV06tbrcXkHkFqQu1kt6fF9Hzt6dosWOgP8DTHLX1Pq2E8SEttHRIqej5AnU3SSPSxhYloDWtmwUwe39LycG2LNyIhuSGGgBh5PTww6r6pfYVEbz6R+Gn1uPeUHhB+P6snLuKVEevjYfw9Esz+XTnYXlitNg/mdW3rquMQ9nxowHwWoK84fhOekXLSB2LNjiLJPLsEj8hbsJV5rHYhr9XAtadrtZwHu1m59oNrP3gtB3WA518JFHRCGRQeIXmwkXzYXJkRbA0+d2MmoCwYzfOvNJxCz3Fmdh8uRz78yjyYApcrP4aVuZ8RGJIz/crsNXQ8SbNuQWVDjLKYNHr1vSXqYljW4iaK8giYyU5vzdrBbM2HJpe7D88wqq37wv1n7yBPKjjqDwmUhLIvUUkGahBADYS20ow/S0Sdh3IZX+q49d89tUZiaKr67GoxsI5YDu13YaOg4ZBdFPpIRew7I/qMqqWwO94DJC4pG9BEcosloEHhmPMutLeOpja8dj73sJp7xz8GR2a4L2McYRSJ5bBWxxrwyoSDQ8YgwaKyLfb0aP9iWsq++f1HK/m7OSH6Kqev2H6VLT8yhUeNEKkW4KHkfkYxu+vvMPNPWENrXc4L4fQOkHN994aFLAUEMAYo8JCHhAaQXfvdLAR/JPqN3U7fXLVU3s5S2OoA5r/dSfv94iDXgDTwxTVMA9JAVKY7lMhTGqJ61AMqPJYhswoAhPBRgOblvaPB/TQCL/8B+HUaQAUPB9wUHPzYBzT2lkdoKoEhaffyQTk9csTGEuuJdPDBwo4OZ9ybYXNc4A71bdBm8ofUSrt0z0FhqIc9PdCQ+weKl/D9fisBR7BOudFyHbNB4yWVI3EvCyJKllFC0Wp9T5gsjT6YI2Zz4QQf9dvS1e93LndKH3HIakf4I69vKPEfxsYbhF7kXhaEwtU3zLI6lxudczrc3EVbB7fNqNfA28oCwfqobwYRw6U2D8RYtUNX1YNrorqYMJrqJU6mPT7t1I07laNu31cOST9Ok7DVL4b/orKbf93o+J7A556CD6hTR//2c6J1KJcFuJvVcwooEyW+AE5p0XllGdyFPsvNxzLspyC6nVqm5zsY+ntzzYtDRDZQlX5Dwqs+9YojNnoZ9dOFjMdrGP+UztqB5Vk/qaKlff+NW0cPd4uo++bXvznQOx4BRurVOAfYObmXxvxbbXO5rS6R2YK9nIDgQHJ4N6kRhj1hlt+Ey7+epBAgXI2cdypHEwJm4woBdjttQ6Q4Xywp8KLJxck0CiS5gpT1EoKepra4m9Qex1GfJIZlzuC2EmBRUnnGPiSsdYPShT6lfynnwanlJwJAe/lnNKGux1+W4yv+OCO+YPCP6xWngmCLVhdCEuvb+R5CCW/80/LtRpHoonAuHlG++hUSI+ve8XsDWMmSyAS/8uIh9GNbJfG7x2fhG/1KQk2y7m2pqGHbF3h4ww7lzlNIi/ngyCUaudEaRWXwsguWRYT1pLu0rJyNdmIuxAUJlnG8HfMt5BT7o8jIiviDqYCJq9dg12ifg84sB3UBD8KAhC8T4rRkY73q+kCBWHqCuU5IYnIdltwE/8UNJL1DlJ/DrkEDfy6Ck4xpqW+G4BVpn0ZXCVrcSCGYR44KDDd1/FymdTShe0OdNrpjZVcx2GgPccNtWxmYKnlrKGyROZJQzllGqNzTS2Z/5G06anFD79lXZxB9/25mjU1q922hHaq1kS+vubGXo4v5fFSdmsajepSTGYjMkyOL3Fiw+e7u9KRyUVBVu8gNVC/VGYziP87jv2vKOKDmjRXF+y0hxJvtummPy11OqHRX3cScswDP1jOVdAyg1WCK3nSdF0BVDdfcR4h36sh6wwcwGR6+nm1xZgxx8riXlXIPJL2Yh9sShtbC2jSNPN1QPr78CKMGYiIMB1H71ThPEUUoDELCv29I60pzh6SLt5OMdHGxWN+SYbgs8VmLaNoz0h7DnV6dvpn8tOFUzhtvp0somkWMTq9p7lom++gnyMDywdA4gOTPBMEwE4SoUv3ecxpbkQpWKdlXKXzI5C71nInrLMDxh7yQdp+SzjPoMvlqLCPAqghJC69oUUMIvkklZJFAwLMBFGCGWnP6pmkdlUvjlwSiAL9pWRvLRpIImrQBHgOirgNND5ZeehVPkEi/AcKuwgVFcA5zdmSqlfs+NFLu2yyEA9JsdzVfpiwEOEmn1uWPVbQ7O3yPsmXs6WpI5jJjMo2ZKm4j05By1ttSIw5bk2iiC22ECCroJ5mdO+hGCenkC+lE+ySJqqfqIkJ+9sZpV6/Rr2h8/+HPj4P+Rd9Xpgw9Rm4tcdVCPvnowzH3dheRNkB+GVHWBEXCQZOvDuRkpw2h7DeM4thaBLy+rHUV5T2DzNKu1KoiC0GcqZ+Epj8NyxIaRcmmXjLEtGGDsq2bKGSQ9VGGGKXsFuXP0unthiGWClGYWYWVuW99znc+iYTVi9jUZ38Us6r887Yt8pskyjWp7hDiMejui7KPyhrRH5cC5E91bXQNoFohtkBJuTINLPlEAAzjLTQxBTPPrww3pssM8CKSjsNVBBSPKerxFRJyoF4dE9CuZ1Bxgs0EUkqCDcOvzC3WtyCngt+sBavayVEScdnclhcakhs8fL0W9+MpyR/01tZriT8Y3qB+s9IUFmS4m9xbLTHUixxh2Loepl++OSFehJNMn0QNvVqrYdV17kKDySfzFHUtaWbGkJovdKPGupUY2nVKqWashiAdpxzIGRLn1qXW4/tamTKjhGPH2Nsic1aBxHwBhuU2RKMSLydB2obLQp/+BMuWptwGzwIOpk6XTmOKMugnJB8955oMMAmoeCNfDPAo2d/WsLsdsVBbdvOVhNm+2cqiM9iQsS5w7JocWUr51gb5KYqHTUkNEJ8Te98u869DGa8WbS6socqKGCSkkJF9VCe5jQlHARI5LdFIw3OouobAvaKi/Vdl/FYMYmm0ynq1SICNOdJMhX4eeFklpGWCMn615qWkUVR5h0UBUZQqZr7hd8Tc0LIAXPRWTW9srtKUFO4ra7PkrvEbZlVbC1vP4Ek1GKcp1TBHGrfz7HAgYqWyxnOxYjHvL1GLJ/6rEbZ3ezhjL0HttDpdVv3CBt7tIXtdYKi4IGcnlon8Om3jUBhF8EBJx94lIK3+rBfqhlPXY4+1mc5dSbeZ1WfvWVUV8i0ozU81l3uUgtLwAj19PjYuGPmtrTFsV2/5GFx/XELQHwOAjMKmq8kl92+E4fc+c09jIRvh4whvz4BkI1KyXi0EY+kum36fuCxAaCSQyMtH2QkF1wOjABebibpZeCrxsjmoPzNT+9aS4ygZEPXEG72kBA20mGMXH9bB1XR4JkBmPG3YS21XaAWHvoVy4fHDQa7h43ipZJ4yr2x/H2eTQt0uvoSm6sFf59aVwqRqEmy1WXNwIcQMXIydmNVH5UY4p/lB6g/B49KEXQL0B2A0x/IIYUniRTF9IhNjnclAcDNp0L46SMZnL4rrN4MRMJvpD7Zh58WWSW7qeJHpxa2fSLY+mRWItg9foXC91igcpgmHSQaz/OzWh8fMjpHDAPQHwLil5am4cMWi1k/EbQRgILCDQJkuNQOSWm5l8biwMzcfxupgcPh3h2ALdiyKc2yrTn9Ty+Z+YfPvz8D7BBbm2vO8Onv9p2Be7Pc0GHB72yOXNd0VtnvI2qIkyFmRz7l5U33RGa6W/OXd7BhJL0VQXIUyxjYmda/pNLgKrwTrmBwJdE6+1TIy1KG7VzRyuZlbLEUT9dpgmAShbfCopN5FMnkTYNJPTGh0NIUa3Y4DEL5hiT1RhGr/FPVqHs2f/T33S6IijqG4k8HzsZtWjKoVjaf6n3qvAcNnzTy7hjOCadOZ7bPdJFw1/is/1MKTt4MZi8hToV/F1Qf94c2j1rFCbSqgmeeLxHIbWRRVGi0l+2TbyA46UAjGHhzmoUTEXQtHpqGYtAlcq5hEdOGPORFwmO7eK3cMjwWIMwo2KPMkScsYUklaCMQmCEQ6imeZIe0PYcYOR40HCfRH1V7cWUsJOeEtGRsE63kxZ+POnnlfFwUFHd9Uksn8QF9daRYOm4auFWbvoCxGNlGWpQaheddqwOWMI9S3MykEH4P2xwAar7XaZpHQbvipit0fZppZC6XToDVKLzT6tVfgkZZeWc/ZoZCBXTJPlbebD86p2vxOUYJKlk54oqHaGxLl8xVT4hixfBbq/3JEhpWhB6IVhyuPJS8SaWJdt5cRXgLHxxm6XFKvcTB9OklRnrkNhGKWtfpro0Kr+xJJ873D2OOW9xQQluxVDBywBqEQ+uJlzK4zs11Z6K3pg+QiyZqXsPHMhVJ5SDtdfMJY+UnNsLKfkBYWVAWb6kqA0w23DoXtw2Gn6lM9oUKXV/y5Ev2ewl79JDn+6Jr7kT1coamngUnOGtiFsQJYNUBT4Sk23GhgzRNwVdEWfEG6qPtzmxXiWW4qHPLaqnphlVZeHH9p2vNHC1wwoS8J4mhxudZO775R2VFp8dcR4l16C+vQdCZ1X3J7s9c72BOPaNwzXLeGFKsAlFNNaW8eRMg1H7YIzxNOa1zF+fL8hAYH7QDmE0Dg+EMzAphRsrtRVadiWLIiwEvnv9Xt3gEvtGXXOCfptJ2qmNmgKEzqtKIsZcSIMiGWBIbjE9YJS/Wanu0e4gYBlXfg8DjZGAUPeMokpvhFsELuQxcagL7AvEFGCCcxfNglIViNatlBF0N2VQygBi84vtricEfs6i9uDDdDeEOI10Wu+ikyFfKN7fMG/w4eDKI+lcbHOsgdn6sZWR7UpoS9K5auqJD7yPtkNfVtbR3KWceADDKgmOTBLEC1HNnIuit1EbN8hQJmNH201yg7yDArSAYcEU+ZmmWpDMi7BGjBchzqTaZg4t6jY+/PRIoTNXvzoR5Cpo5MjOSDeTjtoKHpPrKHS4miUdbKPKtKCvxVAmconEDwye+M+RIhHd1JGRyQz0leRDZUUgOd/WwuP+uhWuTpWnXf5mwY2OqROiE9b2ge5c/S7sOnRgDgPlezoNItdGqJUqOFmTU6I9NwEIVEWUIR5oZVzMrt8YVRdxqYFGBIsLsw8DEGtazt+Cif84u6wTU2gwl5WgLormxO30wbrKMWlzrqml8OuVEHK0StdwcPD3TK+ocEIp5i4vDcv8ip4CKmlhjDkK8WB/K8lfYoA8RMnTXamvew+mYhLHBhrLCBEEYFFFLqyAeFnqedPF9c8K2V2AT1vAS839sDkDNJSXMiVPRl5/xBCEeZniL3pLda2ZXXwTbi+vPhT0Kzt/d9/VX1jB7uYxl+fbnE8qtqOotZIBpfSHGDn55gFqrM0rjHSEmU3LYLHdIDmYc0Ur4uUuf0wcj6ZLZbcxEYaSRpXwkYLXgXUW6KDYEtB2cYZOFwD6TKR8MXzXA35j/RXAwy7XluDeBxIwlB87YrCHuYhm6T57v/i8xzUiH3epdM0TIkaiAHOjlQZo5+ri+GbSNub9nteGyQIL+1ccU/UPLvWnzU+p9f8bGYkL1YKM08DKcgwd5YMnaw022W74fsHh6hzZ/GSI5fockxxCh1QnksQZ7vOceC5DInoGadmpJd5lFIG4S655ypy+J0lpQczRdCNIqXFUYtqPs/H+r4IET5opH6BLpxjpPSCIccVMDKrD2HCSTT22f/ZGthaWKy3LR5y0cLFTlewWIcsTtftPHa36C65UVE/EHg1U7dNBA8UarmQk4gnSAmC042oG3QZK3ptkUQP8UZuGpQZVQgwbjlY+LesqoHbmuwHYChlr9tFPAZ3nWJLn8elh8X6Q7c9QJb4T/OwhMxk7gj89jLkI8Udcd3r+WSSSVvpI9bsur6n/z3ZLTo+k2HlfJqDMlpgjC+x/EJgFoyh7ns5PNuflOQIyETrHM6CmsmT7PE5xfywmMa/FPRKUGIZ6LHwfxS4PuNz/snkYla7ybDM5jR4TFOLTTJdqG3Cq7ayzYZofOZWffGRZHIpYi3PsNAEaCveXWIrAWbLAYyT3Z9/0Q/dA1c8ZEz2zFlL6kVWbtx/DPyLqJemzd+bk9voKE+O+hAY9XqJEr2NwIdzMI+p/ZPaz+KP9mm5eUbvIbE3WMowbxYESPXgEgPZBspc4h1iSsVCl0Uh0WRT5ynDpKJzQstJhNufx+nTqBSfVnu9S1cv5v6M3g3Wj+5Z/sDL+lF3COqCGcvs7RTq2v3StgQb11a2XZS7m5DaGezTaRWdkZS3lD2A07+9HxOG7U30OAClU5VM5yHF+GlD43dNcGjKxq6WR+iA/+2CSCsLzHN8DwHkYMhvWfZAwyQjA7uYbuxUF8RBKG77PsDLvuegLCL8PCJmbHONKUSADEpnUonQgt9dxxvxAdn6HE9l4nUNFOwgc/7K+G5BG1YJAawZwZJ8qB1mxdVbN+RT++SUx8RXnwTzxVPhFj7w+iDjJNhx/craHf7j+5sMz46+PU6WGpI7B5R32IYc/h2E9vaCwX/KS3Ok65TEcZVp0o9RbtDcR0HR5VY5H6EAEeka0qMpQCtJVosILm5dR6PN6ibt20D0/a0KarGYiEkYIzemrFJCGi95HKKY02Obn3s7pOL2SLJq1iWFVm1N6pjhmOSAUh/GZDsVpqroj9kiTyP1fkG8/OVnmQeiV2SgkYw3AucrWgRwfox/T/SB2GtGwSVw6pJrSVzstFveXPthgLDeTInls12z0nFglaDyUjZotY7VROkvbXhY+NMcPR8x0kiJOdi8eViiV+mYmYg6UxcVxFzoq2EQdiEnCSAGZEPEdMIGBPoVCKkEZLexbhIfCzNHXoi8wpBO2NZV0c+ScioFpZQMJGwx207RXkf/8JccsHqbVib/0+TmKkfOJHhPSae6ra0c5CNW7D22trw8ObHNOV9xWHi4iVzK/DJGHsppNAqGc4x3zFD5GHaKcfiZyB69rMVju2yiU9A+HaJ/cG2hvz/ERCoUqUxpdjZWBnYOKNnjMfm98+OZekXYEH+U8ODnCL3mB4YA/kLjGqIish0mMZUDle2NJuHNrJTS76ObhdFnWO2GpI1f1DKZaLdWVfO2aXbbMyaP/NLO242TkwRdYHmLGkK+ClgPlQdDv00FWptnPiq4qHj6LbZdQjMwANrMTb4BhRb+6QVfNs+OlF2NJjbUGUyvJFS7K0yOK2vVULELGzEnJGA1b4LyeMxg4q8DeXKSSQLNWovZYUTSle9v1WDlxw0UBp6aZNrhJj/KONBCNzRlkcahhXw8uG9xoXvg/Em23NcNwxpu8MMBWI7XTZLTVWH/6xDN9INEm521aoxYknHqiaN8VqmGBEjFV5FIkL3326eWwhuyLdGwd5bJ3Xnuoob3XkkRMURHXeAVuENV8gLMehK+CRDMwC7TxGdAZBen/BMZl0sn9dmUDzPxsjqMaoR6YT77Cry7mdRNL+q0fz0WvOrFc1PI5q3cVgo0/6HQC6/dXzJGyM+H8Cw30QomC6AlmiLdUSfM13H5Umni/E/JJdzdpxZGxiY7+z43AbYWSfAyzRGoguGg/3ALla7lwGvyO7KcGZsnYbHIeO50zZfpINulwyluBrAV9EeZkq9bOPpkfls143cusV2wn1nIOVwhrKuzii6uKfHhTNkjhkCiKMEiOujFSUTfRTv9JiChTG0HZnFVmptzA0a4qu1hqbaxK4/socwXhkxgXCuK7Pnk19lM2xIEzKp9sZ3YVEWUKmvVUNgDerD5MiVB0MmRgh3fgPie7wBqfviBiwuvAHi2TcYXbertj3DlLTPr8oMS62zBcEmAfEAI9eJsZEw++CTEc0CzMZ8kbF+j44UU4jAU6iMOCmGWmgmUNAc/GUAfQ+hE4LAalQVRhL6orqPdex7q+u1+ElQmiHODfIJ1kc8K3qPK2LYUdtifGO4/tOWkvlSay7zHVcx7+FR8R+OPcYBEVwkznCWzau0HtHBHOz4lra36DjG0heJUAi6ypqOSFQwAHYc7VOdhiMA4Nwj0EnVYgxszQeoMt72crevZ/5sxQwq9vfUj2o5H1FmHQhWsh+JPZqz3r6Yxpt12djbieCdbMblbNDq7J+KfcTXSEUOdqN6fpzQAgZ5LkThApzdhS1KKjHJYjue+D3RgtKvrtUzNyIyP/FohoYQy67CqDMCMZSJqErOXVY6ciHk5qu9J6HGdNtTR+7x5LTmX78zZB9Gt766Ak1zHa8nI/66eJwO91Cswpy8cCwSsM4wwDtX1Ny8XYt1gx+n0D0+5zqhrOMY9VWczQUA4OWBqIptifsnUBZaivcRZTsR/UYuCXQK5he9TgqACElEGwJX6APOfnzLRggHPkrYDCyHxdGRreexKi6AzsH3/ADrwQbAdeHqkrnKxxlj7iN8z2jGVFRNYMs/MfI3p6ChVB1HJE8ziSYdNMcOIpp8Mzdy8sH4Yr+hPIxE1QLFFHnHhWJo2dqfeEwJ82nbUPNae5MwFrgtaGKjB9l0m8egiL/hW+xZbwAsK29nHLocshjlFV0MYjbec1tgUEdapGefcyO8YQFpT5bZWEHpdftM6ebbbYhApPplTFXD66EOYmjoUggPnu2LkVu9iCzbGxijyfYlCQ6Nb7Kdhdqnpvq9PSapY74xSOlaCbNhV1fV4vv17KZD4aVv86qJF31b2rELMN9kPpKYb8tKcA95TDqWY4BnpVgQ2a33dX3VFYTJrqLH+xFyNDJEBptb2JHVbaQoi6nsQl/x/LdIFvFSojTmIjTjR7IBCPkGvRbMWWJJjQmzTqbuhPOC1Jko8cf2gIwaloRsHNXsNBgQybhZ1mkfrJNW2TFTnzYnicf0YVrMPS4HSfstMZl7EE23w4uW0KFY8KVY5YaOmltAcOLdHEZ4U4Epe5yWEf5qbDvFTjEHKuTAWpyldvYz3zlXtB3sr0OW3EUeP24/bE96RH/qALHGXqxq28/tjPxaGoWJx+yltI2grmRLWcFg7ei7MHP6pNyQ7IGNyG0guFiWnKx16QWoINyZj7opcK6afGqfK4zlkXkN+5JekfxdsHvfpFr07OVpu5zH+qICOBabW6RQPSz3SlcFy0LUoOwoKxZdoxjYLEghIVHtG8Ku00oGkAa6aumr6X95KMbTA16Hg99NcgvczS872jF+r8TyMfPYLaBsE6v8N4jiKjHbLnfT2fbD+J8V7GefIaxBQktW7LCbsspPkMhtPkrgdxdg/xaVkT0h8bAwWyTa80SBE8gdUN9zVeSOfZjHrfdue4+nGK6hoHVlB2xA48nuQhnAQ6Pa7ZAU2h+LZ+41tUeWuFucYpciSeMTYxMjM9kuDFaR98T41SLdgsKJ+8DVjknm4l5F6QumtsJ95YDpwFO5vWD9WjR2P8GJPyko04MWORbf2Vr5GbzyusZwxa+VflilV3NGc2ZSSkX6eu1dW/dzkKKx7ZO66hYNGjPM2ovCYaR6FQgNK99WhlP7tnRgVBQqPS2AwR0QHBFoI5Dtz286QA0E5JefpDXJbF3CYVL5PlS1hd2AlUjqmLR2GntSIQhlWdTMBGbPF7mE4dFbGnlBwt+ax+73uZifu1jn6kqfowlZ/mjvS7XrUpOk86HImVx2gIn98yRYOLa2GemxHZrXu9p2Pw1W2HcoEPTuS7S55JDw/zo8ywPkNM/gBmL73l6ZRdDeL4GH9M8Rg3rA0RPy0qLtm3QinoIUSgy6cThM9+DFDBznG4//mYSQH0TU3DVm7RDv9vUMxGSPdWvmWKwLmFySfqrbvOavXV1QQxMxm67K0aKEg1pKxhvBLKevvq6/fYQdpM46sQ0usycSWIPuu/vS+BSjJbNjWXkPISdqth9BHKQ5fojtqbxTbNEc3l6rt8Sjw8lpGfE9tGNAEuVPsXEfpezIxueqn3EY4lnvUJ1PfTb+2m7sdaWEB9DKuHl2vS39OA991MuEHszmhezvh3IaoJLj2Kx+SFZng65550Mg2dnhqbb9t3I/Ifomiv6JF3h96fasYerqrz259s+3df9EfWvdP/zv1iT+/l98/1sFstmK1tfxnzfZmFTC4boS21u3xu0BjOQqOkj9uP1d3atY/7H2LCssGKa+ANuCDesSb1zt4Ns2XkeDHr5833Kl11ncoNtWvva75j2UWX7ZhWJ9bD30PwYFEKh7zee8qUB2ZEWCEbYkiwe2cDeH7NYWSN15Sx+g+SIYiDo2trE4sPnJXg/ShIjh4A4gQLBb7pO6yJ2NWiYgGDJZQSjvjuQjAeXDveXKY85vF7SMJCbu0izwgnLWbhqGpWylhbUcVYHHZPBnDiCr2Kv233xOVt4CvDFp2egXmxfs13eprh+z5A2VNgG4urKnPEyWet9bnHaJEhZDvmHL0IN/fCP/zMc3j25/JqeCU5/O5kBJg5jqJnY92XeE7igrecVzYI+XcQHf5BtR0r2UnOHAJDdPqp7eXcQpqgd3aFL+oEL5HCesNt9FwUAyD4yAvG2pI23ku5iuHl1wDi+UTI2FQk97AFpAeLDhZyQiwptvuIucsdGYrKKeKq+rhyzN/kyBSCNNjngqJ071+bs40O1A/ZWwTHhyFAo5RCZItLChAzseh8G5NuQwBETcOMhxtdnXHEwTkhtjnFHPzER0emkddH0Dmo0Q0QfbnB4bGxC7zytPa6RebC+EF9oIXZxXPTyrQYdVxuwGYvP2d8R5fhzaOwd0qmttfB0bvycLTJYcEsj0iETbkPVdCXX0TSgJe4eVXW4iuilE/z+SszWU2Lz6VhkXt9e9e5+TswNIiA9SQQqo04zavT/LhFmMmDsQdDPV/3ivYSl85P0sG0oe6siK8P7EP8rZAp0m8z4XV1m0ua/QrBRUurpFTDdIWwjLiU1pbM+VqEXMF6YKjlY+dyHJP4WVnaqtz6YfX1BLE8n+4ZCFTxFhOC5D1kKLoVpRB3bhVwYxyA6JAdc3/q632VcX0jqQ88lSc4K7h2ilxP0O6yz/feveNdSUY4yS9iExw5mHRZPzhqgCwXpNCuSa7jlo0d2WAXryYWtdlhHtXMLW2w4R6b5ktZbg9c5bH9xaYfuuVgSBnJPUfqH1uZqTLktK4I326YPfB3OExX43qLfS307HPW5K5lGR9kfAT9pnDTZQfOWYGxF1xS2/CC1TwSmBYNgSeChdqJRashU0FCxbvYyBZVADHKZ42DaMrj+GcL25bYR/If//P3oKsBBASzPytZ8FooIm5yDqjWWD9InF0f+LE+TfPGfXrSsVWbKBuwUGc90rqLiKb29eaOcysiyaWtGg2r5KWC27EyAsiUksu1WQQojnzWp9OI3wjDPUfaiMcIFHidguJ9ivUchJsQkhROnizsT5Q3+Cacr5d1iiv5ybc9Gde0DNtTbTyAAka9DXVic6VnMAyQBly7m4/5mrDly38bHWOHkc8eMTsNjmu4iad6Y3+7CI+ndPnvy1mThRWcvZo1A2dtik12MVdRINeBziTHN6Uny/wNytRPKrR3VX5wPLZ+5yyDrPnCRCmenE5avXSphmGxdC3TXMUgSDLqP2xiAbOjkMzYrJQBGipA6FSuADCSMGyhPDDTwKsWpTxZEqXQDVeJq6KKwbHdx0+/Fb1ULQbuTs9y+GDwFhaTEWTkNZNhnrrGoWSpDhtUcKrUNjEdb4B2/d0N/SXspmDsZaz8oJw1dWQOb5jVnAa42zu3e9IKI1MaONm4Z3aaILxLtEojlyKiSD2OTi8WK3rzaUA8fII2Q5auytGRRdZfC/ezuAaiN8T6Z9breHDomKPsnNH9C2xQxa8kH2oniwphwwTBe7TqX2p9RPUjxbp3tO3r/1rYzPGCWPBoDYTmExK9gdWb8t9KZ97EIJgeHhWWYuSCPolOODJZj8oEu806R0H0887yZLoUfAj2AQieJoS/MBY++GCEuaz3/8RfwBZ9BaDO7+QG1QMF/Cr9dm4H0aoRD/RhWKl3Hut3ehD9/t21r1xeOWy487TYEIWLSKRape8kLHonCYiJIdFclKGcMAnaYcdK2mhI9IXa9tZ4Ra4bVr+Y6ns7hjssndY9DYYQnGhhH+0URuJfQHV7EH2BECVoTKMDoOz7975yjzsG2tB+q4kMBTcuOIfa9hoNcdAK7SdOCV6xZMhHYsWUsf+GB8y0ALVFp5gTmnVzsgd0cTWRDxEYGlFRjOh/kFaJyd5xPODmVBViqlG0JldObfQlDtDdFY/oQ6EvzcnBga3Sab9HKGL4TXNyn3T4sVuD2r3HnHOW3xjAoQExzwz2jj3N8xR6aahE/gSbw+G3dEZi0EvoyRhd4pH1+gbxGCjGmNQffRfqmut9TEWMgIi4892u5XjpoMiH31zdoWrGyUgqM1KuyO2EvmEKz1WvXVOvNryWqeaYGziuww1Bof9dzAT87ssuMamvpG39bno19i2gEXezaAWu76Gj3nr5Dv5l8hkyW3jNKFqDpqRW8Ci/0dtCUDToVYr8pUq1noMSeGv8j97eowwCI6yaoK5GZfYqAI8A/QJX6/01K2cJ5BoO9vIB4K45NbwkMkaJRGzx7qIdS56DDsBgQoGq3GNCKL5IIlmO0DbgzkGHT2nrgijuVp3jwms67M1OfUbpz+OOyMPxASEE3buoYPk8N8InerulVHtIhEQUcAXXoqXm5bD5mAE6FOJspp3TmZBM5riURTDF5Fn2Qx9QiTKvvye4StR7Jkmrzej8EXqw9ltyV6k+CSq+Nxev9Kv0tc5Dcjcwy2kHiq87xh6xH+cicfvpQqgyZ0l36DIWjHdddb6HYq949HscEUqVDPfAtP729FezPotxArrNCsCZsQbJ/PNRIFyIDnM7cCMkCsc5PdPmffz4pgIGg4vj90B91B/zJOpOfOJua7KLL6YdEsPK5stODY5Duuv+w/Fu9mZf5qWAGCfXBi0ZMh8i24ib7l3Z2C6SqonMOkY0iieMRQ4K4+Rw2kn6wljFY1SpqOivg5zy8iQa9dEDT26U6YJMBV8wth0NAg5pCeuEcieAfxc+mFiCq8VehTPol69Yv0eTfyA8s6jiQ6nEHJIhYuGLoLYexgE4Bss3n0kQTtFeU4Eu+4iFtnkPdhrvIzg7YzDFaY06BwlwffaK62t8GuWr761k8bnhd8efI4lG/a6voA6dEZNHW3YD8RcIE3Z2WSvqyCj1IwGsIpXv8K1cDHtjG9MC5HKEKwerVkeplsKYiNmTXCt1Yc1AviQ1at0s6dRVxZdkzDRbUmB0sUibYAG2jpJwLzTDw3kt4WbLe4t3vrxgC+pxQEsNuH5tYLpa/GKWFsTXOemwfGzWaNwH40khfBRHhlNrEVlB6GY7tkSkHRua+SZrocOSDM5Uy8mOVrge/GBPwKy3u4yEC2RPb94Ciz3L8wwxyl2537Kdxbt8nQy0XFnF/8/kt57kvUO/qM3aYktw/bM3z0n7ER4njEqNi/S1vDva8P3H3mG/2AXVFTWW7BJQae2NECYoaUZvqH4/nnr9QN0GtIW/0unN7382JDHcmP1xUcYIvETfXWEm0QlU3dcsbeiSJu4wk9tGOwA4shK6yyutsoDO60YHRgyWggTMiQtduN+1s1mKAOY73cxFjaXGwGsw9OY1sUrg/KeUnGg4ioEN9MGWzSaoJbF9X5EcKzwyMBdbQomkpiIQ4s9nKrRZxxSqhHSM5Tzn5AjYw0RwqxwHYRalzXn7TYLaib1maCjKMXIwCJDpHI5OqpHl05e+4FYagBNFIidQKa4ObBKaMNfSiPpXx1vIsdiFqkfaCnaPfaPq8SvvqIVXqrXjLwwfBFR/2MlwagB5A2zYSzlN4pDB/BvDfBleRqvUApoNYRAsj9MWMF0ESW7D/5IGrQZAYFBmRScfBKNHkuVoVgRDMcY9KjEz7GcmmBE4OVzyii4ZCWlkJKh8wALKWTjB09I62FRWSTkmIoNNOgFyTsbNj6mdbxB+DtI+z0943CUiNcyCOGs3WRAVWoseHLOih4ATg60CJbNis5pSYqFPtkC+iQGR29U6rnzy1sDBE8p2zmiql9fFWbkDQqPtDnu1e+BnQaZCsOFQ1pJX/XPj8d7PMSOD8zz4iCoqKFLJJ+TYwpXcFOIlk+53Yb6RZ/GOoFYJPL+qy0DXwcZOuIeIbaKgvo+qEVy1wL/QWvb+D++dw0KjXFChOr/CbFcMfRVTniApLgYkALNDfFqC/7BNILZ1BszTQWgeCSunMPL5MxtK6vHrv1jElRcKiCeGsS2igii8qY6AbZ5UPamASQ1I1ViHxhmEOnEPpxiNEQjXItezWXg5i5t77ulxfsFVsctoat5i5KhZSieRcpZ74KDMoYxer2YfHSal9uyRqdKcRID8x6Q8Mv0o70FuAQu9tab5joGmsNfqELEpeQftw8rryAdafj0mGUDEsLbvHnqrW9+zxDI6xheX4G8JuwlNKbtfzgesFM2RmwfsSCC4stlTqnHsn40cqGpEE89vxln3R/CB34pZ+bVseGHvInm6D9ETPQzwUauXHzXRhJVF/IKL//P1k3clN+JFdKnwna6P91rrfaRafknnfl+Q1egr35nYzAeYngSH9ChpcBlXjoRe/DIt5b0uZX/7wkUd/666ZWMUD1MHGWeRSMVNzpI5DlT5YSBzf0c17JT7QgNQPYead3/jV6l514lU5oxnd/ZZ+/LA/VQOCYNyeFrnJb4oelRRv4nhKwLGthQPN5sDYjBaW1lP95AxjXzkLVtF2dpmDRCzckxq6nMzOjZDWP7W5mwYtXZGb+LJ+ZefxKbuELCFykeq5hZytrl8Jx6gopme4r3u8aFomMSkUiDpj1lRrxB3xBkPgSa/hs6D/IJ+h2wekNBrWlX36WRm1Pb7qTosxV0EaO/GqBgVqFu/ANIEUlpAYJ8oTdUoKqYu2j8ZASyiFmsqk0xCCcnqbM12JTQRpL9SvddJx/gJ5ob+rwl9vNzsRpVh1ZYOtw22UioSMwYUAkoMdAvQ8KxOaPxs3Ptffk5TWd9l6shs98OXzNsnYKXrCEPelu6uj7sdpU2lp/CR/IBBUPnm4NksP8ORP4fSOSalyHI9sE03V4PQwxq+KeD9n6/8y/hSheYM0+BpER10cOqu1JaO604/qOg0Cl3sUPAO15AVDfq0/UmdZLxE0b0m+3qYaD9v5kiWjTsGFuGMecwanb3DBVVWnmQZNolmA17GR3z1VBziHZzv4wZl6HZ6/zwAG4lPHWkMAGE+l33p6BjjAxKjFx74m7xA24JlZmLRE/UDeX33z/AUF+v2MK9ORPBV5MMapc2NP6gjP7AhlPrnBiLl05nHKv7QxEsnlSzASoqtYSLVfmajKBCSfnZ3Jj+klXxRZAlMmMLl8t+4kMkxw5EJshVUl7VcwuYYwNaTvFDdAi089BxPxxaH8r1Ji+3Dy806CRzoORgG0v49MAvDJztFRquRfmwuYAhZaX5+5ZavEYfz5UbCbtoQOs/SThf0Nc3/rFdRRKLOWSdA5j2W2fCFkMJwpKgdZozabLgnJMitHGYNLcLh9MCmNqHv5xA2Fr5w/U4ejlo5934UKbOBFfuLUNzr4XTj9MnYT92pwwjrQ4LdGZ46hisempe7lC/WeLqW3ktTXJIVvims/5JTmaesejR6CXBTnJGcc+9NIHT0h+vr39G6P5Az3UtwMpMG/FLf7UapON2ZvVe8oG4l1Q2A5csOZ3MIIFKGbX5y52MZd33lLW4rgGB8QtuXlj8/xlqwg6nSNa7krrYZPhUuntQZiqos6tSkZKxbtauO2a+vPRuAWb3WzKu8HEgl5LKsy5i2wmvs2Zletv3sqoaZAu0pJZTLB+W1fviTnuRrQ9ULzT9lRugoO2U46oxA1RC22sUaAu7HN7OwwYlV4cMWPCLKEqHKjBpALX946mzzenj3A2K+UZrPkOuNY70ozV40k/Udabk5oWI01D/AF4pbFqv2v9OrmrtOqx0ybGu6FdAjA0ABQqn2jvsKu7Wqtz7LbR/Eq05ldmZUbfxFTBaRBErp7dHKy6JISJBex++m6u3pAMJwyLs9tT8f0s7h91JaekMsmx/PLCJ+yrHot4M13j6mPxOPon6odoc8IHreffZo+nQ9XWXpy9u5zJUeylJXleTxCPT9p3Gp9PKLFSwKys1UnNtwOVrF5WLZUlO7sU2/VCUWxgTt4tHN5uUqcJgwmglA7qSfZ1d30t89AFOBMpZlaigxkAR7Mwe5IbITIc/SJAi9OXwnFUNRhQkr8RU1KTKd0TPztp5/dw4uHR1VHbA7Gw1bynwXJ6hi/okf6SdTykdPOyYmd5hj+1V7v6Qe7AKXoL7/NqroCADvqGxm+qB7STzOtDzRV2PTdRCTnC5rAbhGZu1ZGDvr55UsJXr6Z0NTSPK7e3WhaDOyvdLx0W4mjLwDlZ4Od0/AAgydEhqy163HZbtPYOo4PxsZKG10AjITQasF/IexfKxxmrCz/aqoty+6yaw8OAB2TnkZZOQmnv3oR5lDviO2Z+aDEsjiwjr+mxr+7sW6a12/9KOPs24Md4l5XEEO9xtT4hgULLbngsbU3fqyEyfareD5+rDL/+V1kV2yuB/PEBoGY+AOzTjm541U0bVs5EfILtFku4yZ2/XS5veXaqb+Oy5HzhdljFm5QUd2yoCxj6u85OEEQK2b+oSS6fJKstmkEv91W4isocfZIFgXhmQdtCcUzGV8HGvabM0VwVEThC2Y7k0cv8TIsI5/Zbj/t1xCjDpTWE/WsXmJHpw3PrurkQ3LXujTD7fiNvCjcWAwz3OeFcaoCjDyX5EImzXFLtKUHyukzwnz6spTz4V253X9oKb3jBHNjBXfg6A/zasb8O8Euy8GG+YIU1xoC9eKWJXPJKa4AYqBxtu8Xr4u2dzvy2xrEvH8hWP5ieQ/7BOUd2mUO81aFBlcxoS2n3cKA1d8xOhGL+/F9gHITE+pXF3XiuZwjXytEx06GmkqH09VnjH/9px8XVe5pT5cd3j62eIk8mov8EpPaGIdCkcLXAS6tg3aLFLPEdjKVzC0h9dzODn1JNdcLVLBzHH8nvMTfMwEpV6sGluJYvABhxH0T/xwPw40HANQa+mcAeKbX4WLWxVEhd8W63kxMsm0AgwD9zFs2OsZqaln1V/18nD0W9CaVZ7nE6blw7N16ZSqvUEUvs2dmhducprvPCmg8H6yqFBnpFXFG3n3g81wWtrpj6vqx56s+VENthhUKTcbpA/IqATcJ1tM+GVCxAIyZkqTp2zWBOe5qd8baq1RW2HBmKGI4qS2RN7yWVC1BAG+X02ycfhIIH31VVAxjyY5piNJBIMnPmWF1dtcz1AqIwjgZE0bZCdrqUfgpOB/mj3pgfikrbJbCAVDLxr8YZgB/O5bnP/fMTjyO9znakvhJIZowg8ZZsP3cek6YZdH5IL3gYblDwjvPAgTOJSfVoeaGpdSO6aDwpHMdOyt6dD36bONTdJco2zaSCMdYMjMPtnLsYy/GQKLvXx4jCPTrxlEjXYKbKewf90qHz7SxtTSy1Bpb6R74VMfMy9wTvzWdH4EvpgN/KPelMnv0JKSu5+TjNZoLigShn4E6H2ierDCHUI0rOsFrEq0imZEDRTyvCHe0Lp8fO4zU2dg0MOLuzHYhfGadffohAfY7Y2u4ZjDUhcnLQoMEqW0qhMrsZr4Vp340O4+klLYxP0TZNFs8dHjli0lpwyMjTlDKb8EXxVU7rwonn6ibEmzlE6U4OUvcT0nl/33M204WY4Gc4JZ5RgmrT+82ftTGbhuBkuEbkNxMtRh2PnQBYEfXvL9+phSNvpoeCP13rIW+JZZJ6R1CFK0jHGfla4YhNGd6lP19UU2zPbI8r8k3HDYtq/C92GTwR0sCrGXGeJ9SexhwxHZiZt2FzKaS+C+ZPVD4FpHx099dKaDr35szXATIQiV5O7vJcj0VVIatzl2VTJhNpUTaSKk/ONpJeQxbGHXBdp9Jos+JZ55eQejTtY6HD4R+2+pYI+c5ByNfBDyn1C490HfpRK8mFo2vdvSEn53jItsu/8JT3yfzFkgeUMP4xWBS+EBa+bYpFPJc34AkXh3BGLEbCp15TTPkemGSfSbev1ggmaDbec52EcGqzT/HTnoasdfic24uHx76YY7YovwuYOGqVOUozYoySXQF3hbC3PcLAy0Y1k9RupiNCboXdlsDMGtu7A7Mgregl5hFZGtnK1ibauSG46hjlZpabA5XIj7TTJPTkyYvCcIpn2PFE3xYMDcan4qNm/fUCXDomWOG4ytdd7aUwjp1VM4ZSsRs3jK/QhF/F9dDYn42jSH9eguHq4IxnHX1+5s4xV4Qi6jm2p/Vphl7O5P5SZmuhJqbFD2UPacSiCkEUCsdrXSTlHPH46PQMO9lzfy0MhdpF9lPVVfuAlKEIno708xinPCRXpBAdKwTU/7Cm6XQtAPP3unATuYS5fuPN4bWEadnnj2zuadJ0pV1ysxWyPFC0Sl3a1a4vQeDHOow+OzN8+7uveMRjGmeBi1yy6pIX3/LB7am//QyYDpa90LPYy86NKG/8O/5ZWkYZ0cIJnEVwMmNhfeQX/G2FI9DW82x7SpQqZ7+AL78KDBHaNf0sIEEGRFFdm3g49UNB0bMBUUJnSppf7qYvciJn3EfRhnso36OUYMeWbHQKcRD7d77mebL1MgWeevkzvPunC0rIVHsOxdLenWSZcBWBosiKabQelZY+3RYpT6qyRVTtQxfT/pHhl2Tt2/Jy/eJX9o06IXDheLlr6Yqwp5w4QCOaX7FORmDa8KnokryAMeTHiXef33NK+bD28/DoF2hRxfEuS1TP7jNMoNPAzZ3E8uW71MMHF3U3YnXqs8oE3iR+J/NGRr004zvuNsScglU5FVjcEPAA3xcWgy3mXyZOEo8j5f6+PIJXCQEQ79Hy/Siq6Kr7rpNkmXow15+hSYum7fNr26JfZMZ3vKB7H3Tx/FYvImh9slHbgQQTxmbwzRdtcQiwIm9ULnDstCXPxDpv3sSLqDRWaJqTckrwRwCtNAlNLUdz/REpxxid3zD4MLz9XIKMOkCxSny165NVSo+zddRbmduOqq5Ma+VwH3jbzm664zuDXMQ/ue4W8Ziy6rz67LYF1XWO56Y3y2Z0qB2CUdu2KN4Niw5TeIDIPiyofeHTpd6S1hf4hNYiCxzaSrgVmlKEy/xtzu3oqmkuihhw1c3RsgZnxRG6G454dg0uP1GEclPGK0drpwcI7Yr6xpid8iKZuMhKvLFoS7HUeX20rUGC6MSf3qSnPfUXAO+NTb675yp846vsZB8SFEUaP+TJUzqNhtCzdd4FskpmOJmGhoPnJkkB0/wY00wf6qdaRaXhKdAcM2QiicVy3SdmBUZA1SWSzJM3Qe7ZBJqlhj8qVlVYEkZJ/zuW/n6jFvJySqU6d3HbZ5RUbjXgkaFmRAWsjhiiOgSfafkSce2FSMJ2jqIKBcVBxbIqaqMe9UWep/tkihUnk1b3wVgoEZDoKoW8OOtDyDdWCqjvRg1UpTbI4HkpRcaQEaV8gcLIiwu3vHvHW8J7leXdMmt3BeEFoiqAmd+XycTtBlW7FjvFBLZ6yJ2+RHIZV96lQM9Um+7nL8bLGrX0ppnpeUPe5vvtbTXVnQFytxm8tRqYERC9+9QzoKNr+ed+yuKx/HEUwqPx/nvx3BO9d6KDz8J1t1KtEVjG9flj08PoQdiRRxBj9yX//vlHOnDm6SmbF+EzyfHVth8r0H59EcxPSldYTBq3ukmPhdFhdruj3pr+Z5NBTMDJpNl4L7JtjgvaPu9IeR0BP8xv9PPKOYGWXqT2K9LqQRemsS5mB12Ysa6LzMCZyw/dvIsj+bxT6kECfL+/M+mCXToeU/pl82wSpIInduO4tzf26LNFHPk44tE/pEUGY36Xkwzxetnc4tUyDZZKgxzQ/HUc6LDKAwktqQ/6WEsFI15Mx0Vo3nHVC3aec//+AZfSmb/yxD/R7zudzmJyxgp+Jlld9nfqwaOIDpH5zau/v/v3mmdPzUcf4jCo4Scdnzmbu7X2qZohxF1i1y951hFD7rHfBpB+G1ywwV1tg/dumwEcfPxkQtplG0tCGyhEiXpbtT1mcV9AkiSEHQnRb0cE4QK9JXkt297MWHKBtjuMcsT7TOTI1c7TnVWOHyIdrzGJjtU9QtGGGC0ZJtu5GmUU/9LoG/ZgQXIGAZsqzqLfxaYdD2fWtuI874BhzeMhW0i0jo1MW+1pcjLUgb1BPSRZsz3rZB+QIJZetq9A+yfuMOt6SIVv/cllPiWIG39lJl9FvSgxIMxMP/ccAXm3hBTEidsT8M40DA1w7+rl80GZDFoAmUEvGa5xM0rjlx4bDnoF/H95LF4ngpR9RLov4zvfmE6eNv35CEx6thtVOlCXXJT5Bjoh29Wdfg9/2D5QCDdL04+//oY27VrHGh5jJ95Scc9HrqFVk72OkN860e68rzfrUzFZ9vWrySpre2PQ/l6TS4j+dsoAQF+QnwbRjONz4OHTzVMXzfY/OcAcHkId5tuvocHLTNeTcucANpGj5Plf7SZqV3JG6O3gu8diPOp/9eAeflghyQEM+W/YJsK90Gk+RumnPcpEgD2ofxXvEc3a0uL0GM8UaAvlS5fYdaKG4xDZIWJ8Ew9dFI+88Lb5rwNw9O3RGXXw53b6Nlw/0iHPp1+kj1Kp0agDZAtHA/Bp5NAbDXwZDN8G9E8NBgP61NbnErlERrgagP9GDb8Ga7/o2x4mA5E/omsr+L+9JhcbIEZBOOAsCGwIvqI3xrQ2shYAin3G2gKjBMIfWMtYDQgFfQxEtdEhACsIYQgdyIHA8A3OCVPLWIeeXURwFyPaHdwJHKAfKAYOXIyAUXHRrTFSwccdPAc1t1jREyCy7gFnlL54yXNBAhrj22CxAivGFC0R4gBlIc0Jawv6sUIYY/6wNT6MvR5FewDYAAYqSnJDT8qJ3H6gUrbknOAMwGpyIOAWcH40ChL1NWsPAMm4E+HiAIDQgPWo8AHSBYCjkkYe2/BAbYk9xBmE3JFva6ZgaQmxVP+G3eOpFiDPYSCeWtTV6INwg0aPaEPC08DVhao2g0cG7SAYWlxcWCIJPIrQtsSwxzGMSi9bRI6wW4PhiB/KrFxyNMrwoMSw4lGjAg8ghlv8y8W08ek/8EjxKMSO8S8fUx3pDRpt0C0IO8WNMl/UttDoFQ8tYdfixiu9Im3R6B1dT+wGbqB88+kFzkc8nARvuWDhibe6YNMQ3rqCTU289QUbJbztCgLL+7fiq1d+nzNKX5++qF3B09NeKcXbx4RNTng7T9gI8fY5YXDy67ugUJbdm+IrVHbXigIqbSn4ApX2u2A24/ZN8S+wtNeKe6+8LwX3Tnn/XfDFK+/fFF+c8v5a8UVZPu4FJerHRrHD+8cERa3KcOUmGVdWLAucBvnEMsOvPR11KTh9lxKbHidlt24Yp8QOqxkOt5ypHGJ3ucIPp9BXM34P/OeqL/xu5PN1bxqIQnm4tPCSLmatITTGGiSBXiMi0MCFMzG0A7aqGqQlrBW0AxbXCBhaSDBIS5h2zkT8P22AVoe1hoGRVQRE7dAtCEgUjycYnJwX7Tbi4NrjCENWtt7BkAk3UWSVAw1hCYNF/mPW0VSfuYRhqwEJEHgeChhJ28sLkhPoqGpAPdxxoyUM7YDFDIdUi7lET7gpaZGOfK371wwLtJBghKXr4bv5BblcfK96wkiHGfJ6o9cIrLEuAYcKZ2uBBqY9G6zCE8ISthdvjBokQTtg64w8qhqkJcwszPDUGGtAgV0jooWPogZJy/JsZicMLihg6IjLweEmENGkRBCmhTYoEPA0CvxI1uHgxksYLHwDAbWks6kEkhMR0aRoBK9EagywBOuwgacwtA4tZDQiqmmgH/6K58HJTqB7dgM16DUCBg1Id5cX5DKkFMevEquqluroJiJIZXf+CbtYHjrEEkgoC2c7WtGCgvWgWmKBtIMpmjo4RddbelOTs4jubKLAQOwf06ypHSSVvoC38gsJ6JzBMARyvmvLnSGDJCDhSa4RbmCkrQOdMyS/BBr6jS/QAazkDqjFhPdVxAjmSmm8wgMxKUhHRrRzBOlWn6ntVsg6AQ5uWNDeKsr2z1ZpGzoUCd7WzGpGq3y3CneZYEd/4lNJEZJC6mCjg1wBrQqGYfD1OSmonwELZ6lmqAt2gyzsK5o17WcT1yLQj/gLz6dyOMKkyFrcs7Mu+Uz/ce/lbwvHcf/Z+w3DGoH49wwmJ4PhEiXNhADtfB6JUa1nI6LtTOurdjwYFNpP/le8e8OAHLCf98vkMXmO82dmsA37kQdpJlGOM3TijfmChgiJljKB+vbIu5fITUEv79mAawRWAtLMJxtiBEQqG60aClDPNF8Z0Xtw4EWPvOgmKRcb6r/bei1YyROwgZlMygIErns2BqJhzRpogJ0j7TXcZVqGHZygDreYYJBqNgMp2Q/7SCZpSLpYY+/WyIlSvZNJeEY75DDtdpVB8D4hDL3RIEXx/pMiY0n2oXFIkHaGjG/LjKzcC2DIFL2erl2j23jU/WFWNhMCJ1h3XJX3Og5n78+mLIoaOJJ+uTBv9d9C9hKrdsjqLNWckVGxAAB16+MWS/6gk6D6LKgJT+8XQ01J0OxeRUSgJwwFWsCgs7ATYkOUeldI81rfmg4JohoF4hJkULW8HWYbtaQzalo3mshmJ1dZRBkOxGCBrJEdMjUkZ4ESWgMdAjHeMTiQh4iBbKN7N++pmh8ufB9nSJ4J8NKZQfxZ4NFMPInLcUZSGDRoKNVSSwzNw2ACxAbZUnjjeoK5RjrWK4Sdmcxwihpo1EdSzioENMEVK0aDQTukVQuDmzCOgd8w1dtPuTAIauJyqMDf3piuAbn1CBG+RGDdVhnADx43zTpNZC1REW22lWmD67UeJovRU6xvJKJKcRxl357/xCwa6nM5I270SK6GZc2f8qVNrOxhGDyguMrNHjiNGnO+E3QPrkVlKSlLxxOECjBl6M1osgcQ+rQpA4+scgasHU+I3srQX9ybjQYkUHXUcJXAuzuiMPAyziBBHbTbCFcEhuuna3Qxg0G03R9V222U/Wyk+jJX7T7NYHg3QwJqJCVlmk2g9NionJgIK3QqEl399E544pkRdoG304yO014i/MNpoZckO41CMDZn3BCY2YTszShuA7PBCWh7bjOA8ZS4s4vawRUGdyIkQckEhiglCqZAFoaPJagVak5JDTZidOQAnnEdg+RVE1a83wWzUpADiXzpFf8ApSawGn0ObRBjmZBQCVznIEHHzLij6koLBkxERMyUEorMlch+tCwbnwmCcrvL2p+JAdfbtZd0EztDb9Y+kSG89PvSNfIm0X7TOOrcWpmb7q/MCevp4yghwzihgcQlKWoY7ESBI4O6gSxhgwV7q9wIAMnNcPNXB7p+RoGiqeiOpJQLYbep7JNhcJnnRgOz1peYpIGslZl54KBRO3gQbSoHA/NII9iXtB0USwKf0PJD6vCDOSrmO5QmNhihIwoqgAsxiRNGEn1QQCaMqhB6B8af+XbRaCD93txnVg3leiRu7j5NO8f5f+VIWwE7dA3GS7/fV87vDaTSAGWvb4aJ375eZxYaO3AwiNrrbDCQ3OPdbDuo7o8atddSu/EBP4gM80bDI+EavKo87o1y78nA6XAx+O+eiIDobnvW/w2MJt/efkqzPvyQLqk7YIU5WviVEIZh8nBkN7Rz+S3k8rhKCDXewRjowgICEVfHZiFgt00Cm4A18QQBl7hLw/hhCVlfx1I0o1xk/8uA4GWZwOCoqPNAKyB+CTB0xP8gItgFEvzPI3DYWcgLz8jQ4QKrXsMH8d7TUxrQ1kMgDJmAXgOStJ1ikEpVxdLbv4HjSYMAQd4RQUJjWs58zft7+EoCG0A91dNsYaKjc6mSDNdH7scYFrVhR31hlYPsZDCcBe7IsQC8UGUglQC35CI+Ah0amEg4TW325fcK40KJdqTVRZqdZTLsF5Pg/tZapyDrS0j/FUw4wuDEQzfSktbEJG/fzGfJ36aI1olbAmzZdINoS2hqa6zkIMm91oTwU6i7boBJW5kPza4EnYn4azNraDtaVmTro9wR4pNgne7noyoV7Bh3oSZ/6TKljokq1fijGd93NR9cNJ1pag7wZ6FHWEc2dyxu3/fy4feYKuulj9swwhi0DdBXSC2Jttua53EYm/P5+ydfQsHYqb5PK96bn9PFD4UTNBL502xHEHDbbWy3UQRTF/TE+3Qh0ayLO8sPldHABt66kaArrFG8orr1RWOCJPgJ/QJIlHBH6hjDgdtCySIsQBcqJNNMc8O61O8cxYPBwul1eTTzd1ETMDT5GTnPyqYoNeJmOhwz1fGgahjyjfI7ibcNxM6ug26un4dZezOhn+w2JxbvTvpl6qv5XSXo4R/+x9qQjF2VoQsKGujXZ1bbJmLw9c/LnxOr3BoswYRy2zG225j18H8XnK18kbuKPGpMT59KPYaJIfGySIdir2DMfLMNdoVVou/6nmijmiTk7fZjwQ07nZlUp2oAw2rAFnf69pw4SQqZxLUIMEG9ccAw7C4a/CFhaASgDE+VhWcAr9WaMDaqAErRJXgfq9LoYfubvP74CdPi5FC/Pr///wCfexOUAwX34hGBuBNHLJnkbLldiwmQM0lZFbmMTxXZLJLMLC4YnwffvTf+VCBH1a+2gCL8djjoNbI4pCqtU3TnyKZbGKTnJRGItNh/FYOb8hoQrImSQGpZqUKsET7huG/4uI2l0offj9HqfmFmq++9qQ7IigyKmJGXmGyfOgQcVZdRp3tzjCAnSgPKVpSM4AIbz1pdY0cfEdwGrdpBYMhk4hPpgV/M+GcAyWHgbhGyrSYpVvVUFN9vT03abVEEpgZwgMRqUX2hdezGOBS8doGkK2ohEOSHIKHSNxe8uZIeIoKgUu1+uu4/y2Y4uNm8uz3MDRZcLCbg0KOnzXD8cj89uWtET/fpSN2Klo5EhXgCriAvqnrF5aaw7CfLejBCb/Zk1CdzbgVNW/jNQ0EW1pgJaBStavfZa0AmYHFoVCLBISs6GebwUoRixhdiAds81w1rekr1S2bIa291mG0hmJS4tOY7QX2h/dPrikDVeKg6tv3XT7PBhFFv3YZtVxYMwa5h50q/VzVOe4ZW/LZmuu1sGrUGn04HX6KENijvvxw+TlYOl+vQRnhTXPbQ9qN8HGXiXCMIisCLETJ90wD8ve5qRV9OgRaEvSEGitjh6slhiETswUg8C6A/iVjbYm7W0MkJxwyK4lc7WzNZJiuMZXWFN9duYP2E/TGJfkEdmvmWBTUnLJeDRniXaoNZTBSPDpkQew0QwmHs7Gx4yrCaEwYoeN5qRL+U7Je47t7RS6LIwDBWYBfH8wFGVUC3nI9rTEELpAwyzNXT8VyMpU16iu7Q2xgZIDr3Dd4MhQkieDVZZ4Vp4vwCpa2OOYPBtCaCsVnjEW8myRg3AiIvpkUY8BQLTgBz/1Q67O15qEoc8A/bY0sotupPnQFy+6kzAC/ApLBBkglTQCYlAQwm3lBWQ+dNBeTlflRisdER2Inj+ICa+09DRyJ1hEMExPuTaEQgDdHCMxBoSnZgacAoWXva3uEqvWGsPabUIEg4MC7R09eLBTc9Cc/xtDrX2EkwZAewyQfRwM2JS5vlqrZnx6B+poPlFH039FJmX/9QPBVPzxcbYAG8YbsdZ1T9NZStyYGVLkb3N92lWDZ64z30DoYeO1z+UPljzD1pHxSYj+NBVSGJ/lILuksNB0Q1Ds5rUI60QzjjQidZwLeI0WATb8aZegZRzkZSEqDSUBhHl08zyf/MDeUIzMWNDCph7N52wqKJDkwM5QpxEPFwl15zZeXJ5iZGFc8XsH8/at4nk9uiQ+MxkAdy3BwPQpuVBAyokUukli0NE9DqKYlWi8LLPpBSb8t29kdfztsKQhCPPm0gieqd5b2Lvr7OSnvxpN12IshESXQ2S+yBBlAnjKkJDAir3UxvXMUYUe9eq0yr9FqZTpSq2DWFLWCwvk4yuoxnQKsCM6/D1Q0NHBk7zkbTGDCRooCKYS8YpmxG20eGvwccJ6Z2gVqeINalcc+2me5CdklX+GbFBKxiA9dHViFqoHpuXMcsVokRRiFhu8S7ZJJFRD2zjXUK37QjVh3y7V1G2e8iis3hmHzFxBjCE8Ra4pCGecFAgjP0XZe5Jmnps331GCmKBKRyO4YGGGJzE8NcC4GKfdaRFan7fM6NWSeQD2L6VRtKU62selWXkx58l4ziA99F4sbtmimafawlBqXUcgQiRFnqtv5Sdyf6dVhCbNpxGxJAFBJLBQn7tAQRzGNBuPaJsq4gWg24dv8Ms0bA2hOU6yNSI1l487xDQwZZaMGLrI4R+yvR8Fxk8BWEL2EsQB5mkBF27p/jyGH9UV37NNAERduyTh97Y5ujMc1pnLy4FuS8NWhYSAxJtMV4f5cYdm8Iwn1+F0MNNpUhYDyASFDWfvJlsjTchPrM3K8MA7LIGV7MBDU5bNcSbRCY83SKyom5Z2XCXMPqZVH+ZYizd1qLSWUDJtMPVSMBSxYJNlX3p6Q+BUAaCMBoT2NVyTcGZwLKclR8vmT/KGy3Ub0FthpAz0TJOLj1lS9CQ7M9YoSntL6PS09LyB89WteInOKdnL07RpM4neFoZXlLmo3VmY1Fpuifwd3cY7iSSeOx9ril5sUsnQtKSOTIXQEv5hMg5aHSkFDQp6EOhbWC+KhqEmc6oI1oeXlo/WpFxP8QZ0C/AnqfTCGrAPfI7+d/wTKKvWYCQzqDpHAAtwW5NSioqaILTih9KtsSf+9LaM2xzCsYWn3sIefdIcmzeOE7thUYFocCp0CjMpSQi8eHKBwUriGjBiepvl+4E6g9LT+TSBkRUbLke8NsdWIUm2pgCqBs/AZGAihmDhgAmCukw02YBggqqtLAJOypIe7Mo/c7CtHwxDvS/2LBT3Ev0VEVw69YpoCh/vO3O7aDyF4HjbIpGwHJ2es7wm4DvThSZEpgykyobjAQmAWvSCYSb03URPEQgzCtOhPVVeZi/Ivd749Y1Pvz1Te8RerZ0PP7GcgClrxk3+Ad5zSJJE5S7a6nmmmO15Hqv4yAS+3YJNDdvnsvPRHfMX5zts6qRFMHdBiuquACA0qOF7/7mCV1J0JtlukkcoJJ3h/zr69TFX/jbx3d0hPFo/YSCkfcEOGOnv7NMpKGwCiOqGUEhczbs1YspZ5tcqCOocRIcZqfGpJkw4M9QE2zMP54PiTHxSuNvcPD447OyrydPgNL/M+Ji2tXHLzPJ56035enOQL5ehQIe/QzyvQMMjAi6JhV0ajmeKFHmB3yxcFIima0UkBjKwCBtAXRcpXFf7BS+aV/TrzJfDc2QsnpEqe/5fve7ehubYHSNi5pM3bmcKsqXEg9vZeONx2pPcGIxDCVo+1DNM0SgNgiQZd261d1czIi4yt5/Re81X/Ys8bh956jQJZZRPp/p+Wvw694ot+15tNIqV+BEpXja6dYV5cw4LpvtLxIHbUcFo0o3ND6a+PksMYYLJxr1NJRx6uG5h+MeL/7E6K+7UYpUPtncDylzPLQ4aiyYQlbzyp8hdTEgXA9jdVp5ZgJgOGoZ2XhzHobfF0OT85nOnBwyGEu2wZpo3GywipmilNATCVtT7EcbJoxkouKMBeZmApfWqta4eT3C6ZxWD+1KePmdbWVDxwg1/6piVX25QmEOKmaQ0QAj0uN2QwOF7esVGxjiSFCrHVesMb4hdbZPwk1uNYu/UDoGOAo9FmAxv5B/qyr3yBQHmIU0SyrufQJRITlNFb4P00NbCGQEOktkzTUoHDFhFiK+GwUX89ZN+VlEwtHoi1sz4QPFDKCBi7AxYM4bZqGPPAEiOwfuwN4d4bj8U3Sa/cOn59BMeI08FyVZywHhifskDmIpzWG4lJmE+ZCVsIGMTI3ZEIaGZzp8+H8F4CLp7FL2mt5uoMvMoH+A10IwCrrgH8+oGexyarIFPOtvtcPXFCQbBWM3BvKeoPPys2x9TAA9IzMmM5rrsZNwWcycJ+kun0P2s/3icXKu4nWIu9fXXGkzO9Vw2iXhEcH9smd0PTpWj0EbtsOpYGR9HqGex8mAT1OVdYZDEGhJCjACadlVDVhvmC7k50Z4WrVoXBoWdQAEQuyrjrTFg9X5Fb2D7R5ginPSeZ1cEDxIUCAXUhqmZOiAdPQk2UR0qnQcNOkwSVKnA03mjvX5HPPxzliimE3VvM3Y40tRCuTHVA5vsWeTII+rExcqZKWbgZRZ8k/Yzgwi9R8aP16OBhGtzCp1yZq75nVstiYBu6sTgqvPW40b9SdII7ql/PYXUGb9Kbx6r69EcRg6M3h95iWae+ID7gS8QgPYNaklaBPQ6tj6Df41jrcYq0kmiHNAzLwilGguKyVLt642MI4IeINUpsYy+AgZsOw9sARs2pZtXcFIPfpyfb7DTBhkFHMXFVleLCVaD1afGLPCmVGcxdT/xmH4Naaa4SlyYx9/IQ5bnCJ5rO6xQRHfCOPeVueIHUqXTB3MRbewoBWcojz2U+tWE47Vxyd1NVTbxChjLJ4s+B91WOezi1NZ3Ye+vn+QFubDZ1vUaZM98kKVmgu3/vBMpDOpfUDs7y7lsG20DMU0KDGQ9onGK9At6HuBDdfaO14Zo39CV3+teaAILLGs+f8d4PD4mI2VD5qenIttKC+1QKdhyyzDbNG7c04o5Y4i18BUlXC+IZmyJHtrjbsyCG6dOh8jQalrvITDvymmEsswVwCb6cj8E8P37LRWmmvBVrBt3Z2lwm+21Isn8FdtqlO+hbOMS+v5YIkeTJHaO4Yf3Lb+jCjaxRb5ZxKqQ4E4PYjqeyka2XVQdCe0DYcBBqYOQnisTJj60M1jUKq2mxMAMUg01PUqdnpc0su6rips7XwrcG6yGrIqBjO0qoDWIJ4Kj3LyVb8yWj776nNnJRCWhKLYq4yLmHLaKwfYb9azBdiI9FskWY/4VYHvOydxuw3AP/5mLKFfdILNLfcmqJn+vOHlZ2V9341tDXpiZ/+sINuNJIQcDW3WSJN1rCKTaj/SNNboZXfXYGxGL/YRwlchilLgQ4yEw+KqyEBmMMUOmvvSj6kYN6VQUCLb+0+JlXOEQGZR2LuGkOkU0Hfw/qG4FKrV73o5mzj2MPmKr/Vw7boz5poVGZ5fIXPd9PsjvfOFJRUQ9m2Y/pN90X8Fasmac4OUv8ZX6Tq9eJzDw6+fZn1geJIKUeiMRTrLiKLAeM3HupUo5Va95fLlF5R6QjA1GG8Mkn28ZHJarYcpm6FpVqM3kbnk2T+nLLFWfmHIuMna9QhEmOwYpRyO6umppgxEP7HPuvb3OnVrZCJq9QMP+calDeY66LBeKY+8JkMCBZP/OCDAK/2FuS2Pg8bUifOKQ62dal4bNShb1jFtGBkdqKnszOIg+2v+2puqqWELmaSP6qFbZRwPRhImNzSWIpd97I0VH636SvIekduZoSGst1X+rk5/1j0GbPGWKj/qACtPZH9+YBseV7c/JAtRHjKYEVDN8AVkzQdOGo5l2h5XDGgGfMNeKvOtczWxtMAeDdgmTH7MRsu9ktG5k857aY/3MUbgW8oUYalKQTk/d+UmU1dOVnnC/KEEF5exoRuwLveyumW5t6SbYUwWJgASGHfn8lvrEOCPjnsv1n9aseN2zCzwlg89S69DTObE5fwdQOO/dpsRLb1y/rE9WvIKzh4LFrgaoHaTA91/kx8vGFS1Or5Fi+vp1ViH1Y8v7mJv96SuXT9/sCkE7Cl+fyzRRKur0M6XPV6rbK6TDmEVLpNjiW8/CTf96oVwqBYafq2EzSZWlUVtkB51lZGy7atXfYuRSCm8ZDUI4u3LlSGn4zugKokHzOtpybTqLxalrFOsKxc79MIZ63eSiC8LMqnezx0auEEMOwEk10RxF8pb+Dj5QPKP4rvj8QDQm7MicB+BQyITKq1g5ymZyzB23wswVkMgIlgLwiTXCvqEeBHoJEDZWhGehyS23+jBQgJfBJtnZc7FRaKbYLcLSQGz+bTQdFjlhpqZRViP433tAG2FqCZ9Cobdu3WRWorQ/dxkLsg2URKEE67pJQ9LTGZ/V+v78iKZL8IXKEitt3SJe0Syl0kUAZJstjJypLUrnO5EGg7g+YnE2R6Ug7tMAPT6LYXL6IzRfwS0mxsgJdf6B6hjNXrsQWuGxcThT4vb+wC+zI0WLbRRiIr/9w0Y6TYn6IcuuY8bOP51ysTsNndvINicxJ7x1Zz55hRb7dET2+5qb3uC1BMDgH7aJG8AxWj05qn+bzSkTceaPSiF3KS6f4EwWplGJ3dEQJf9KmhxsHd2rS8pg0jHFF4jJwS2Bvtn0hCPG67G4euwPxTFLmYw8xbWURoq0D9MmKmQcUX8apc3SOxnSSTTVe7i8axthHCVKH5dpt4FBC4DldJGMJr06uRuxC/RchVKG1k8sdCtV1n2CzqGfwXOlxWCqOOAIkD6IwpB2DNXX4DgqlitddGXNuw6X8exy1/i5ni+oDHYKy0hf6D4T5teIInxftDfogUcRvls9oYC9X1N1QKblc1ZJLynCpz1WKejKSIWWUIzjdFvo/x9lXRJVyABpX0u1JkVfCucfbWGAozJVUMs1+tFx+veztrPUGb2HSU63kakB5Lfjj6yCoqQSMMvmIlMYx3YMrUlzFi03s1197WIdkCfR26pAsj25oFWIgks+mEDU3v3Sh6No/sLISZiWcEJSbezIQECSG5Qf2nr/9T2b+UmPCQd0veEUOqG61LJM/Q363cP5VJpt7Ju4iNjOmHT90aIDRi958HUTum1QxtHgIFr3SXDG/wXSeNpO7UIN7/mR6DjnWrNN8hNkIppWzz5ybKo1aqRVpybOdP3Er7/mgq0JYVJqDke8buJjE0dQKXNFtLlyvW/d78xm8siS1rz02IEDpVigjJOuqPynwmR9fNinY8jWhv0jPhJaa+j5/tB76j9d4R2lCB6dzI/LTO2A2nJuQHqNHiAvKDzpIaVd/fpUzEUDMizgul3L92VHwH5PdCizFbDrG6hlY+uwa7gU01dGwNuq6tCFbMTa/LQA1HEDMoTKg1TiNB3eTY9JQPQpLXv1JmIrCxNMyChnJRfno2f4+471hNj5ykgaaIT7uxycbfs6/iIOPN+LOjQofa/k8OSFIW8cZ9moBkYT1pauKCJViHj8/K/DLFTbl8SQjX8neFDuIA2m7SUm7C4bPyBbqrTzEcEoC4uD6K93iGEE2X1H7Fowb//N+Yo+Bj9nNpyaSGRchRiquyJ8c70x7l6copkogXZzSSyEVba3HGxS9yFWaBORFGym4aTaKNqWXzXzcSwFH1tlo2RRL7qpIqFLXkq2KZ+bLV8LI4iWvSqcMYYTwEtZBq4aiVqE/6AgLd1LYHF4WnYYJV953LCr3lMb6tL34tSn04INv4nu2YyGUU9d3xHPuL7YtqUrjqcS8Tx9nJQ+LIf9jU85BwzOThJmaDicc4Vfm3a4fNJT+FOHUMu4nRPW0qS7YJVMgScWhnXGwvpZ+yKjdvu993+qWORNCr8TEtyeW/mZQv6gw+UHbJMR1/iShI8FXDcknatQ035Yqk08kKy+iw2tv981XqfyHGpNe8tOTErlPWU2VO6DjlQlnEqrU/g9ePIrEF6SwBAdSiKAHeyyqWcVTUJhDLlLpJmc1yOiE6tXguOhs0x9vG5L6iw9zKIEUxjpq79BsEvQXuYO7Li1BdFd1qA+E9iALWy67qMEGSXeLFX2TDtGPtJAKzy+VHSEreD3viy54mhqUqbyTVeH50ozf93ypmjMJRVSoNMdSPgqVI2JERevTFcQwjHfHxVyX9sPqjf37AAVXLhEihROXgFEY6Vl+muZiONKIguBQeIBLeecwyRrvI6rRLp0m441XP31C/hEKoDTrZlvdJzRBptSqmvy458E7xLaVWEiXLaBR1qTzstOqcr0YlhW1U7M8VBp2lDYfrY+8xSa0SMkp62uK6SdUoeys7Cpvzhowtcf8KzVWdPcPlfNdpX0o9r1Cw/Erx4LymtOEssvYF4GuAVT/fsXBZMAMzHF36WHGNfAWOqG96biuAo7SKGwYviiOTJs9sqmAEMrHjcPKLdlpGbJQ5F3XjmqfufHRHiVWt48/MstYNK0T7siPUCm7/561xA2+h/M0P10lHjCp78vVl4xICujEFouN+Y31JqARM1QnegEEDzP59beZNdn7TKrtP1FsPQDyh1zQV8mbxcAVEjj619xHNNVv3hUMxC+bVJuNk4OjRE0XpcHmEjDhi6Ccs8DcfoLbq6lvzbfg3CusfPoyn6K7+Uf4DM4mSNmRRoOlxN0A43WU1hcWahVbYfUKDUHKDtAtqGiiI6J1poQOedeLgdNwkEr+YnQM0OyloqzuIdOlX1MRCwS6cdcBVKj0rLsbcxZEwn9e93FSLxOrciKkjCo3aNK8Uu0XrD0WE6q6DBdEmKGWOYveEX3ZIF7ObsLyodEIZ7BS3Se2FO/4iOXvuqe2ny+eIoxDwuvTwqPo9FX/YSVUn48Nmp1+3Nu+eANPi7Mfbmq17z6ol3F2qG8fNuPYizk/1y4Rd4UHQvhEu477Mv+lsNjezv8JD/flEys4vQCSnfPbrrjuK49sqGoWzX3JJADk/G9c9G+1gASfTTw1lNlKbQDZctKBtcTfAo8bepETvGN8HUy/Q8nx3dpVneq3sqiq4rMdLGLc3LxBaq0xUpIWp+FgwMNgg84xNsAJQS4zES/EGdjpbR7rU81uUd8Yw2I9VkJDksHDPen/+jPZrKvyHD7S3ULIna4yYXaKoaZ3/hUE9Jr3Z5I0fAVFqP8YcZNXLVkz79FpfTFFX9h5HBeUmdK1lMVnWqQfLhE3/7N2rhdbo93zWj9KZC2nO/6iRT2SefPmiKx9T30hUPYY4JxqYuGDv9CNC2/a74oRFaUTd+NiiYXQEQWfgZ2Cq2rcBflV+u/HifHRdr4f9DxyW60cNYHLhds+qV0BH5MtXXT1tm+3WsgWumwclL6cS3bnDeFiE9JQTLPNRNGz3baGgIdWbGU4ZSuBmMtvHSl/tEaV87qz7S6nEmN8Kecedqis7ITv9YWRDNKbzpCHRvJZm7rStT8GZrHJROqi1qzRaMdQ9dcTvoVgpeG51PfJuaRcNr152ZBA9Yo83ISrevOz4iFjhrcvOVYhbpKuLWGzDVEw2LuJcR5aKI6zcitRyDXfbfex0GB/S6Rtt0dkTHiMSni47fCMKYsQ7IuaICa9CLBEXPIPYHMcNGtJUDRfnSuTXrFlXq8TjSNvkGcOvRdvwvu1wDqjaS+2QFP82nubAYiMITUhDHUUuRlrR4cXS9xexfSDUn3JK321j1frSm17Kb4Is9cZO84hqW4qtiP9JY0a6WbuM6bnW6p33v3ht/D+rdPSko0VlvzLspvi4txosgUcyL66aFH2LFjn8bxw6Z92lzP0lXFNiOiZOtqnoGgMxBbrRHqTEGzpR2QvgBFHXIQG+HhEOgrb+iNtEPxqFlcrDYtUun3bSlEc/s9QomfKGdQR1uZG4iGxcquWEHPVwHSbvOgfF8RJbSTFwFBqTnlUXWSXD8AGdN4dOXSQLysBThfVeI2HLzVlR+0ZVLTu2H8k4COcEK2tMGGgNfwKWPlVjPKRPos7rjMuMJEKxwuzXbT8LEZW/HwnR0iX16l7+dbj8UJ3IJUCC4r/beW0PYpLUMRSqGtw4/GTLC59tb8sJfKT9o/j+eKGzcrc7g9+r2qKaTBR1hyMMySHzr6Z+HRWumhRFcjJtwtTsoYnI50K50UT8QZ+o3SxH3P3CVbfNPklHAN6KxMIQyMzcuzr0l0XJnjZCPMcLW8DiAtKdSdxd0gpAD7LzOXX5FfwVjmyOirAJBPDH8cFvkcBmf2P9ZUGDKISwysV4o0SioMRM1bVfxOfnDEtr4xHkp6rGpoJmkxyuUQejnfdOEnQ+MkORHMYAB53h8bQiRP+ithrnCTNSy1DkkLdQ19CKQKIVhMkSySlu5ATxgIHDUGtACpnkm4IJRa1SjBFp00qmtegWQSApPZGzNFVLHZ3IvHbKsCIU+3/gsycdfUUbyASfoQniLISlrox1DtVqa7AsMLn+ylDtk/TMkvoh4tYHggcNgSL8rLmUFK0RnBc15rUM6Zi5un9t1bnlhxdZZFW2xlqWE9bOBqGXNLnncxTTc5nHQxFcLj2EJwuhjbY9Mpg5r3M6KsVx5sTVX3t8UDQpzyLvB/1qzCCpRUcg9NdJb5tAU91RaGgNLJcQYcxnzIX9lW/naQSOg+qB/47Y5nn1HtT+mEEHUhV0DHvtgMQ2k7JxPqVT5YFCqZR4U/r5RuuHlhz9xFP6GVd/tNWQjyzjaEBO7Ppu/2xjO40+OiqTX2b85xQ5qiP5CjOBtNZKLYDBd2JEjbJI2VYO11e9gt8/eqzIEAHWro0CZAS2O4g10nQcHZB6GhVMT5+wjFDqY2Pjh1dMkXEPHGubN6aBj5MeVXe8eDmmssK/SiKpuDp2+cC8mwVqpuWSBDMmw2MsMtbUPSv9rhl2vVmPq2zRm+qbeMyUp+5/p2vjux86I5Gtx2VKzFrUNL4hzYgp7KNq1aWFVvovbYqkeQfMzwPG2cS7thCVdxLXxpri5mL/ow5v6gakN6nGEzHRXdA2mYkqyiD0tWHbc2illmOXxVM3Xp3cUi34MCa9KIgdVXgyWHVzTB2rtV6Q54qZc4BrfZLt30ZPmjcDJnrBs3DkpNeO7OnGLXjLnkM7khdGhxK1ZYFsUkKnzQ5Kxw6ciHkqg/FLhisbQ6VB2iQKgWRCMu5TFDuLqe1htHuqgMGEcqEgCxbgdhaNHjirNoM3jwRmVsUonE2WVW/EhkumLQzGbyEjTjW9NcaJrlHVnDQs195U+VmaRt5qa8zmg3quvq+7fflyl8yOBCBiMOgW4h2MX8GFjH/zauo3oygG38XkVCpy7kMYvy8K+xzoTDG7OTpFEeJloXPUJRZcaManDAb+LbkJODBPi0+QwnDKiulb5DwNJ5mbGFV4CCc/SUNY/dhamzSo2fIbS+/gCVp/iG+KQu09Qvts3G3wa2/YwpsaERdgb7ZPzoaPwIQTrAh2RxJ5bCn2yhVk4uGFJ4jJXSRGMRY3A8CAmx4iYFpeKsx2hMeCNSjo4+iT0Uzzu2EW3/gZH4FQnWS/vzDuVCe0Huy2EnCmxKfNZ49lre4dRmbGdwDsQewwZJC7q+OJ9C8rrbCtsSQ1vBcNFtIofvWxKQ08OivUluzUGfS9TMlABMKRgc8zjeZjZ3dpAdYUqgvKcTe2ie8IUHDkYUlrlB9apKmkWA1ZFdCFbIXBnTu/a7YvxBlJz1Lhp0NisXLZwnjJYZAbjaJ4qB2V4MwXz9EtriroUHNRAYXJ3u9Cqx9HIwcokFX132ehRYBvosOQtzsIolVsLriOpOglnu61aZJ+GcQhuHGsCBzJN8qMmrfOc+u4tk8I4VfBcfwR0qIIkFyubU5xOiLPY4lrN5KtyrKChNZMsqjLeT8GS+pVt8aPzy1Z+Y01Hqqr2r/qWS7XrA0ErkJKAqnB5r4axbEqziHdaqWYoZkTlwu7xmhm+CHMBX8KCi/IU5yeNNGWt6sjiLGokFvc5bnsHFg2qmETS4Ipn8QK9RSlBShqNPV6FkjNpCpEUbBX5DpDsAHhH9kU6yixrGAjpd8LirbRkBcbpbADzCZkL0QmjmyHwJot1alrKMhFyx0jmA55dZWoVoRPqlTITLlsCIAw3jBA33KplJ/Mw3P4BZ3WK1oxFaey5+SxGV4UZmZk4y8rQQJzMaXAdRIo1EwqdF2F9k6NPqA+pq8GuRl2+77h7EiSkq3EWnrlqTI9VNOlwc/IyxJT1CrBp8y+O4dGVe4DyPyfBlRFIghgTSR1ajY/ppXEZ7FV0d+jPhUcfzOKcEz+jnK5z0MDRNs6jc830SoxXP1VH/9gLviqcrXakrmrODpHCiRXMxFIl+F71DeFU0w/NAYFhy+4K6xZvzQ+/1gC0jA9PYy9KdOzrIzAo1qbjtODYN2zV0E5Iv0Kguf5PMqfkTNj9jCT+KLCO7TQVR8eD0tg5UeJG7a8Oe0v+WYJegeKQLgc3KGHpaCjUCdqWTWNufjghZ6M8tNJPb85/14uG0SVGPuYNXgEQwiKCnXh00lhQsm5cjuvrG08K9f3uHarTn5pvSmHNW+ph6+JVBqzkWG53pbE2KEJIs2qNs7yFw8LGpGZJZUBVx+AV9ugHH+AZQ09nx+pBI4T3aVDbFh1VCpcpwFVyTWmz4rJ91nntVfeq2yLnRph6pzCd10hjTsYzFDFSIZf/J3C8xEd+fNmTISfqNF0O9uajS5B//rOEPtH4ciXaN+M/7Cd6MnxsXqPsvTjD6H1ldgT1UImMGofTpRqxtz9UOW8v3xyXsRWcRsqh87zVplvO21yU7q3P4moUruD9oZpp9fTPlYvJ77GnJc0rU4FmuBS014FMec1i2S7uGC9AbeuhXSKny9rY5jX32hiqVQQP1Qt4jEVecMND8OrKjPaMtTcmWJgbzLkErojI0ZC6+Hh8cWFTmGYL4SlGO5Bv2/K8+0Nj5s5qcknh5v2OV7m1Y0oKJjS8Z11SLKTTjAwWc52hPPdl6tE1gnu6QmtbVoB73qnJ6PapJSXRDhUTBLNZJZzo7yP4m5PHXgDZK9isfSZFlKpY3XSdqSpdW/VI7DnC05NBZbdH4vafGSMmrSpV3GLe6vMGYPRffJZJ2ieyV5KdONDi7hvkS8/7/qRg1HWq4sII2+vj/+ORR4X/LFQ8v2dLG4UjCHEht5mxGNVH1k+LNncxBPVRizPUmKn9a7hE9aMqeEVRmA+Y/V9T1xi2L8GDaCzT3tfVoLGdbUAa1n+UdZVV2NKzyUPwS+9uO0yExEEMDitWqsux6XHjZ01OZdCGZwxmzTkJh+1cn+P/FmZ1pX1dZh0Kx1L4hjIC7ZmCidpLVMTOQrpIr/IpqKJr0rFN7OEab804Cd6ott98DxsZdvWNNLNXedTHme2eCx9dqsfgLyV0fBdo2gUr/DR8ATO9XNWhQlyDntmnKz+zCrk20kG+Dc/EYvJqfXQ44q9YuYvAjM83I3WXi3bAuv6Frqc/6NGteKPKnL7J4eXa7+0Lsmv41JNtGmAiyvLZrmnPUWwVlSHel20bYuP9pmTqTrSJeom+nNH52ZuNec35os4oFiC21qDb/iLDEuqPlKwj+/UuydSSP6gT9gpFiLcPdpouu4gnHMqj8uYQzD4DA1Ll3cKpjuv1QSNUeaOQEfwrMWbWtChp5iMi4oWT6InHzhUjoeTawnWIQuljg30aK2MOA58kJZ+gHOBaM/z5M8O5i2QOW5vUZebTY6tiYBhBDy/iYBNbbHc/Gau6EmorL/IFZyGKKoJ18prR4yLjGUw0usERIze0F/+h3b4qtVqu2o0NzIQMXJ1ElvZY+sJRDIQGCeG3f2LVN5en2eLW/onhIrtKHY9d9kvW3fYtozD40jSpVgqNMNCNS+tcIfY5DiWZ4TcrGfMODS0SkLFJEwkGToHeEkxW1fGIwkIEjGwdBe0i3Tbzre9LtQA+zlY83unXJ+cxiQjXHP1ucrDVJPVY54zutzg/r4D83NFQ7dsIB40MB+WT3SJYqsyRrdDiKhjuHiyRO6ISQm88GhGTAEnRrUVNw1LxmshNWjxnRzeCQZ/KRZiQXAuSM5STA9OGhYUQUZ29bYatomvaul69LmIQFY5GIJwnRRNCmbDsUwYOX7/QHEnUd2zvSIVrnHxoBiDjc2S7fp3pkr+UTWm0eNV8QtVg8d6r96Ck2JUtJ0q+Xua3DK8weJLB+8cBs8JeSajtOgzVrkIzOxhLOIMZP45w9gffoOlNEUrtR1b2d69wA7YNPmEuva423O7j+W1jIWJcRY8WpcmYNsex3w+jDM/hFzlPOzkkpv3eXYEoNgrFS7bOISeqT6X+VgkEgeFHbhqcWP4UsWv/xlNoitzBG+VnynvCOO1pscEXvqjlfiDurGDPPoHF9awq/3PZBXbd40fTUvhtW/TpRGxf84GZUuhqrQksePPC6Jl5+9WVVs4NqWRfxPL4TR/zaGVWuI3a7yVJBkwFpU/sV65XMojHQ1rQcsAMOOSC66LtA1AVGSZba+ZgBZr0x0nSN35lq+vr9aqzI813fGetiCxrppKhQrKNe5eplYOTWg3vM/deRxXo1oOau1l4eiykebDoQoQbed08I6OFjiFoOfDd5/DULVhzsIZemYOuf7+miTTZWC09QRkIjDQaqD4CAm87obD4DBzyZedO5l0UppuB7XmG3xWqnTfaibKeU9vscozjAYhdzaZ2cLk++dr5kcCK7ySNpUo/0WYa69OoLaZKnlC+vWM+YBCxTh3l3kGGTQOA1qtVZkfa7jTp2Qz9wlNiteQeqI48e3H1BFwLdmo5yBYNza6FFZhKijk6pqxoUQvF+HSJsXl441SJ0e+TQLk/JqoMqT6S3yDuZjVAASoHrFr11RO1l+l+vMJH1K9JdH4BUyPoV+shRFlFMq5kGJvcqnXF0np14RVMKhGOZOCQm/WTgB5y5yoBzKV0n3JJRRyMA1GG5E0tV3zRIFYDLLCDF98V2MMFJSZg4dMUAvzaum0kH2nCKRUdZoSmrWWnB/BVRBt3R2kS6RdJ34+jQik2C0pIuw9wDuN2UX6GjYmIM0EvojefcI+3rmg9Om79j+FECNLJGQ/lTd/pz7T9l+7fNwvvp7t8an7HC0gQ2LWl35hFeSiHJpG81gPffX/nBar6LzB0pcx1vv3FCxBZ7RKvDWw7LODLOXSQ0R2RMPf1JpJ501rgOic2ZCf3mn/uDz9LW2TYrG2LOsjLhssMOQVpJLFzq7oktYHniOi+fl3fKwECdKmkA0eSvBGhR0edbvCkKO1C+CU7LQgCpAN2u4yeEpEG1uUaRecpiazQMYAj2ZnLkX3E19TDxg9HofYFWfhRIe0IRmKE9FMyZTbfTGQaMvlKWS0i9SS5r/0zmWKL7Ysz26TbMj2ErRIZ0x4nZqBxLGrQg8Za5V06BfOQKYlF3bOE5HYZC8SjxYb+6rj0mfeW3QmJQ7oS/cZQmunWQ3bgwYBPjqvHQ4oglN/JaO5NDBv9lNwwJs5xHh5e/VKi3nFswCEzRZkjcsyFtk0fhj1pzgNQA+Ff8f3u/qFYP3YaKlvJw3G7tqQMgpPxlSaCUiOXDhj0/bMsTxbuDGPbBZXAcu8v8mAPfCBIx/Yejd9qZcF1MK91sB/i5ArK3bTSuzbVf380ENYsoYXgnqghReoYDblZVC/HxIUM6nBOKO8lz+5nilCD6xWg5hNG4keq9vCr1fxSxm3qKPYkVOkANry6HdH85aWOTT0RItkfDOSR5vv5QW7DHzmnH4+wbHrHEjBc+aPn+Wu2Lz2svSyhgvmNgM4uY7GhJIljjxB9zzd7PfN7XI8i4y8+2ZmWSYc0PCYifNMAPBA4utlc/5gmRlSMed5evzrFhlRw2psastjialyHQq8FDWNSie2tYIKIt9QFAaTlp/l4plD1tewMLi8Wtj4jYggqvzkkbroCkrCLGSG9f00ZhsYYObMV+lbWbvqqTVko0FSf00Zb/jAbOpAg2ooraTLOBjMS2xJmy6E0na74QrnX71H+H4YTBUpM7Xxh/GoXK8KBi8vhZra7dR4sEL1mjEzeQpXeG5zCks5JL/gz2sRgAbVIEHbPMcgG+kGmcTQyZUaVVn36+Xu8HlPfBM5lSSTWmsKCtaKXK4zhVj1zy1BUtENukEakHL1IBecQRQV63J1rl2VQxna/64rhaKsbXi/fyH2n97jbEajyo01SQOuec4SG9uzavaPdPhwpP0Kqm7N7Y1syY4MX48ryK2DRZpUIqRXic+3DH9QWR14UtnuE+HWK5kCt9aEZwbunLAAlQqN9FRioZR+21ylrdYFHNYZVoN97OBi5iTT+Kv2hA8LEr3Uooq/cyyhR/og24tIXHmTFaIOv6MMvPJvV5zTs6fR8C0FUFKCy/ithyoiknVLJB9Vlr4b/K3faA+4wKj1rxsMrjFZHsLsIJNYtUgmelYx1aJKnLFWogeWr3NWNPDpi5o6r+wvtCMIxQpH7Te0lHC9rav3CLZq7UPu13cvl2q0F2fsZ0dmNL1IpQ+3CcSbRfjjHEm5I8GemiwFcLImu5xJ7Dg5BdQMdHuLvT4eql3dfsJsdx+Vrhqr/rg6Ffy668w4CVsZI2FccvCsZYpHs35XUcKGM1+okdVTYVcj9GhxCQKbLr1neY28i92csizFs33EjLBENj7h4ocTVSecBLNiMj5qDKx0IvD3TosKOZWrant/Go9K4fNkNZ4ho4sPtCLTolAaxetj6vxo694SmfsCMuGSJDWoaiZHIRyhxeKIpoerM/Jhr5tX9JVgFu2qnVIdaaiAxiBjliEUU68m3IUTdb9TIHyaHnyB994l4ShorboqixEufLo8ZDh5m4l1tyqnSV554YzUob8h0ecjuuqEBL2u+LN+WqSR9kb+EBPuZqHekApaBMiSOOGjrwOk1XPY35Utqm0IFi7judDQ5wI8mijuN1BXz69DEArIG0PPG3NFGC+RVUaEAJVUkQYyI43548ZMsgjeak+43PWM6PIuejo36g62E0JUNLHVNWqpBRTpJSXfN1snAJJKFTIFgyabS0jTZZW28OD1u/pZHJUQbZLa8REI7chHyFRzZkEdMtHLCKbJyCUtlMkXkobUAXKrfGYT5CNUin+3puSQKB7HIkwUaj50SNpc9BsS59Y+c1rkuc4o3oH2LmTDfj8WSu63kWDslzTFoZUJG2yvnGElUiJcZARW41KbqPDDWgjp/SUGWwHaGHi5JA/NNGjLBGU8BLB4ebBFzcggkNFGPN31RuLXqYhnWQQoJcQ1babwRC4G1kiHIkePvP/USilx57Fl5cj+WjLRsbRhKzt1HJXCZIO6GFIPX1xEDzaERyytn4tAeEWCac5HqPfvL8Pcg8qlpBsI2h5qhOF0NJEj/qFrPOLAcB/5ac8oXgtk+AMaA5EH7RYBB4TAqB2XLmLTak7anpTTWvfO3VvuLlehLQGsNcoKHCd+Nv0Y3rpkEdMmsfHzkkFkv2fYAhFJ8nJDw34XRtxiJiPTKG5k1Ry+/pxPsbIK3e9iA+pkiNZVuJPwdnGVxWfCW6ijSvny5G2pw7v5Y0Ya8MLBN6yVIWQr20JdrtgYSYzRr5raQZT9ZWh5v51WtPH3QKxsrFoq7mD35ydTUT19LmTmGwWaJhVlfTRjW0GSgp7Dk7PIDEH9HVOgEi9j7rz9UMDtxHNCac0uZDjWE5ZwrbH6YCwL0+75qf9cLA1bMi58NMKfKdXktmaxcvbziQ0r+/T05+3gpKRo7jtkFK/urjJq3cgk4uQfX8QoCsRjnZGTPeJEvZuYw35F44dTrzGIUYO7FxEwg8+uam1nSGm9vmEmw02PZZ8q/EBf4IMuHnMbRSaM7e63aZB7t5wBbvJD6pv1IvSyGAC2iPUnxBq25WzLkVJruZwrjX4Bpebu6VGMrK2FjTe5fv2b8p/6gZ+FzSHOph9TB2LCXO4j2w8ijdnHL/GLFmIKSwMmuPNeYdxoNsh1NiF9ueFNIogQ5Cf532j58M7y9tkHmsHWbWRjX0T3o9LdmbT64kmYuMm7PscTgRXEP0Aqb8sKmbVjFus5G1wSnBNIUTFi+JkpFLXFwf9tV4uLnBZJ+TCFOV4XVvrSZ3n4pdwdLWYXyPOQ5sPXfKBNvWWxAIW003GAzGnApKr/C2fKatqJZQQ1p76uIcCQlPFIAqZ1bFPl5XCrb1Xtn0JUnWar/yqwgu3I6K1rGaTTsSNkO4U7RdplpCwsQ4c3Pg7Lc/0/QXMDvvv1+N3M/pAyg9PTwsUWu3t75Uxxi67aSr172pGJpfcOTtndnt3D59XX4Fd31ejYhO1Ks0nHmjotZwALUBm8bUqomAWpzZ1UXlg2m2ahXwtrCx62T4lRjNa/thirVpLXAE4b1oupJ2yVF1yCDhBRB1JMkZMiMizgCIZWFErqiDWNcJH6kLqUZzgJUKAQqQtyIYk9atY6e3hg+R0cbvE7WOvgwRfo6cfYUctnwebIXz4NIC5DcFXuah2S+DVpPe7jKswer2xpyG2vXmVFMtHmqAWymI++W16oMmUx+jZQxnk0j+f5zNfUlq6ghi40z4q2tvM9FAhrzhj/svLj6qilvBezqm8CGlSaiNPsas4pilBGEtqmTU+cZxvG5rspAbqBYOO8MzON1nWY7TLQhnnpoE9jr2Ai+LqkIEEAxTDDgJfXcpgMTJ6tNtdFvDmAHQHLQW5h3GAzeiSTB2nfosiVMDXtvzIxnWl72IrsLM0kPlZN4QDm/7q3VZbjm8hp6XIwaOTpQXRyByx66mju5SHXITgpo69Wu1lCL/qYR3HfaW18/w0+lKsjgTZmzu50C49RKJ+dsVL7zNUuiAkOuzCFAqbXnfF0LEI2IvQU3V/d7QGrt5s1pyHQ8KoKBqpVJPpNFV2Jfw6YddgL4nQAS8WaKQDntFv2gmZDtT31HTy3sPFdxRmMXt/MiR2nRt6Ua+hPP9+/mO2dIYAKKi0cJGerCZfYrTmH70HTAywbgfcyuoW2VeGV8/VxIR86r+QwwlOktBVtI+E63QMHh6QLTafOmqg8seLbLQOHQKxCAy5VyWBUB9GX55sX6z7Wim6e43/0GmFbdHZCf5bT2L8eGDKvI2/9TKUKCg8RweJynwZOnsXWdoJm5ipVLa7yOUUpgxqO+VtvqwHKI3AlAkucV+UAjRBBUchZzAKfOy4OJQciscEVjUQUwMQ/3zcKBphJfh9D1onmA5vv6czz5QRgso0eRC+PJHl+4beIS2OCsopzBp7IZqlu9j9tmwPg1lf15Ec2WaZzolTAD+O5TxZcXRaykGnKsoLCRTfqqIX0PJR0enzbn4xU4nzJJTQMIpWccTwDmMV6oAiiM1ve7Hlp+FymVZ4prcc7S1f1xqoBMwW1ekms9wB9hlsb1ziuQfcOGHaiZ8Cm5ERzjlT10Lsrvr50xm1XEkDdAIYxsMUcG8hqUIrWf4aHE3VdgEx5fCX3dx0uoEwhWpWJ1dwheWDQ9XDRR1WeNIGqxTnBM7+DrFs8P2LGG3Si40f/B7MRHwMoxBhFVlPClokCQQZtXA4vzNKYaxuxmjN6wnYw8W5MSjf2vpfFaeKAmZQA2PS0BJahDYTejIBVoploWESZXYTqXTJ3UkcNAIvPieb22ou5cvDdXWq5CLTcHfy+h5cTlSwXChviuyFrfIvi5aORU4YOz/Bx+tYQExJKcZ/g95JEf/YmmtZD68sJMvFtCP0Cakr3W8AMWK4m6M++B22DbgpnsBxu1IU8MGxUgSk/UTd7dX3yXVk1EFdMmhXmg2EJYH2a0wkwNF/EOtPJmK/NYKNvz0urEUGw2XZdCiZaC4yzcpL56F8edNZlyxgfhEZHx5JZ58axBdHUU8Cn7HzmvVk8lcSo0ZVr3XLX02NQ9Je2VGq3hZ0clfcCPdQK+H4lf+4ZIQgpoAt3SFvvbl23nqhBTM1wJXJHE8AkdHDYcXqG4mF585VSmSQhd6/ySbydMCG1cpqEXe+TqxzloB+rAgSO96KYaF1x32kVWY2lTqMVobzyYVjQRCtt6VcezBuXmCnYO636Y1d+8K+FcOsFIFKqRhfXrg6KRvBMXDQFZoZSg1hwT9BbdgM13BPe+08f6VxCCsgbjRfA7zAQGXTXV0qNxVB1WuOBKjNv3AD5UxIo1WNTZF44jSQDzbFMiLYuVajOY+e051XszxOrwvzKD9iUGlTcDXLnQfBky2mNu0RuOx77Pp/p7YH3GlNZvz5axPEEEsqLWaY5eEmeRCdL/3LaB4270rrbB439/gMnxBB4sgVoJvwmxgUyeadLsvFBYtm2rx1YArnaQPeFUd/zhH6pBawv6QRrCd/z48WjtKkz4uX4QQAiWsl+GKJzHlR2GtkoNQxzAEvGUrlLjKLO4XqUlNaTRkZG2r49zuIJQMuRYmP1atzT7Hh+OsNfZF5eTHtHjcSxqIeAvCPCoIEW0PYLx9QnNTIMOpgezNefBDbkj0If22HAtObPRgHDl+nBAGNp7H3TJcbgbhutV5cwdwxeH6HDBQMBUtZ3/eLvdEL5afpMmNPKos2WQcJ/6qnXUkuYK3Ksflzvp58oB6FdbObDdZyLSFwpIw2301dCElzw+sush8zbu1LROIkGxcmwcz5cjaoGWR0sj8HxENqkrGw1bqOVtYRWrCHidJuKqeEH7wkVm9gvGmyfjfDScGUmDN2JBt2FXjSBPYMjanAo2L1EA7hiKjHY25bdEpIwDFIKr6PMaUgOzoWWtR3XItR9bCP0xeyVENS8GRlDjW7a/SmeNBpuOzqEaB7HwBYNsXBBDHA9VuGAsd8HhuGDEJQszfUxL0vGaihTsgtjJje9Ix27PC41vXiXp+hdl/Bw/qUGg8VrDsqiBlm1PBtG/wx16RhbIw9JEWxYCPJlOxcwTKR4KMKoBRq8GRx56eBebgzBauG2IB0LPOVkSAWHfPlniLV1SBWTKFkDuEgabfKhH/hCNOTlzRIRLsWZ9SulvlubQb81z0BtLFDlmh5ZihopbGQEkHwhGIZf6BDiLATot+oT9z2yU7wnVY/AjeoEDfwm3kbyNFjYDLszI3EkTzc2Ezujf6iqbbcHwzEk4WFL45yGwYWxEURIPb2YqQmj+ylkPAoWjzPwDQIJZngmZ9DxE0cDKTdoBV8IxJsBwYYHFclAtBlDf7eCPVY9InGzlT1ecfpDI+hnAo9UMRH1TGABD9gec1CNLoZuejAufUYKbKOrSK7j8G/Pa56xd2B0q2RX5suEW2xY2L4EU9NeK6uiYfu0+HHM9kYyi+3JFnf2l0wqlCXgDMyU5pshpyhiSkWgtBwgeKdGiUmCr1w9JdhaYOF+43q+45ZR5PI5O9SgniGEjpOOOkBQA6EY64wb/R2vxioTRAIneArpQFYteDjR9O02SdVYpFuIfOhyQB2hrb4lyEzbJ5K5rKZfWTbd9rTDCuFfHw7tDk//DLjz492Rqz12TZ4eQ05z3f0eE2L5tl4YdDfSwlicqYfx95HYsGio5WqqDpUcV6UeVBzBB5KTpWRrwezkKH5ssLPKSwY0AYkc35aBpZxy07tGaVgCM8M35PzFO3UhIIHxcENX3fNY9G7ZCvwE4wQVCIEtBBM4QiLVLGKgl0YgklYzpyOID1jTtZ5MwgdCLM22SIzRzrXDlXY84kFR3bCRV36FhDmh7VQC8mkmTCiOhOUdiRFGQAY4ydPM0534KAR8KyQ/KjY+rnRXGfOYEF67TKIoUphxpcewTptgvgBbvuf68x+oEZ4aVO7FUPFrjBFV2U7Zsoy+NzBxkGCBeoB1QWoHYZuyc5tjTBdbnC0msp1lGXJBfxqzfXU8UQu/U+hVzKVD7vS7l9cfs4XTxViAwEtqCFoPUPZ59P8yncS82b9IM2a6K1uRDMtLoy75cO3rCYQHfzWae2LN6lF6zQCS/n5NtcA3RsxPWEq5t1Gxmt5oWL/WqUG4QhHlupJhzwat6MB68iRrUXCq0tXm3mmyNO/FuE4t5vsVl52akBFJnrIofZ1Zt1vcLIUhYN+C4glSF4lfLMosKvWducPAKq/NDY9xD40iZ0teBjNGSSg5Z/9kRz22vUvhl0ap1eFsdoJHTP57EdIQZSGsLzAls5hsyi/GlYw4o2U2Y63CTLgUxQf9X9INPBsEVb7E9yGkrfYW87BKE62g0Q9os8eAN90Hr26Cawh1DVuSnLh8rcKhHio96T15NykuMGAi/XuCTCHUY8lNqHhE1jHhiM9EXnXhVFng6qlK5UiwDgRf67TEV0yqLmqN4MVXp8OqyqkCzZt6HnAvFoEgJE0S9Kb3Tf0EH4QwdlAkteMnuFGCddapRFVFr0/oQTKT3qfc4jTvhlE0h9XBhUHjRr1aHYWpZOuNPnBnejb41A506OmTcNSHMwjwe5dX2lqnP1V07iJtnnE6qIPieXkk5bD9v4q8I4ybLqiQrSeGeKITZbUkIqmYoAfgVVyoHbZ5crUPdc9AGBj5Jw/oIgHCgOUPpylM51sdi53Rj6+ipqI2cYAve8Jh3QvavqLNxxvmnmplK+5OYMZ/ozoBOD56VaC6EE5qPSma8U7bqwnZy4B8DJqqV+2P2JilFxqvI3HUpC3AvnsTrzzX1EnxuWYaxRVdPthYU78sC2pn0ntJUF3PKLzfIztt6P3KK8hoPkc3L063mWdNbddowOhB7p3v1y7pMUM1XCsasu5GHRxTM16EejYjOz8MZld/VrcOrScMM118FX0HST3kIxNpdHUTrl2AS7wb49jwqEl8UD2L5cpLbluqmJqP2RnxwsP0Q/shHRRWwNwUbQ632fxq1mACDC3dpSr4Nl7zHe0t59D5AEHjDNFBA+TDwNG3zSaS1G/r9jhOFIjvoYfNnJeNoOeocwt25GkO8LnzQ7YDmQjH/rEvBzj3YXR/b9oNcDtTe9LLPMX6x1gWgZMWgIt86aSDynkxTqNbicapLqKsnaMipcVom750MiY+cFhXS8VhO90R7MdVFFTXOtlJk5367TcEPadeNUNOcq/zVcb2Y+rd+boZ0Hnr404gTtjW64Qt7VCC4GzNyQ7g5uiNuO0vof5gkj1ZC5l2YJ3x+KbYs5kv91B5Gl/o72mcTHAlkNcCzWhA+IB7bUhdWjT9EtpY8kUl8LD+ATKZ16VGtfHO4HX1ZDl1md6b8Y1Vv/J1+guTagIpo7+8RtW5dmu6mWxxcDt787WjHZ4yXBIokLM8pNt39tLKRALUp85hGW7zYUocBN0xaH8sUY2uxAVpxshjg1oi/J+ryp7cW7cfregEU9B4jLQBntAQ9Zwa39VNRQs1hy3PFcO1zaCjETC8PiZkJLnI5OdSHvDU08ahu/SaJVAcCaM1PDoYlU898k9zd8Eo0gM6kueoLXmCmp5uOtuWCGJDMx86uDZK0lBHBpN+YaRl/3jGa/v469nma+eUTU/7RZBIr31mcB3ovvMqSOOfxz7Yie/4vFWL1N4svOXqyUYCV91lUXuvWPVL7+dXNpIJX6UUx6enbmNOjvUSQ13yyeaHjpC0fqcsdbf6LDNEqP/n/IHnQx7usznRj/t9ZU/H5H3+/0kr4iTFWeTroC7UfWpf2HMKrnLeLF158tHO24pP7yJ1SpaYHgsonjFWd5XicP5FHznDndr2ZdZXOdGVDlll5ZCZgyKPydjZESVmQMHyy4yNFMFWzGqbNi1Fk/wyZT9uSV9Nl9aqPI50aU94x0uCsusXAb6+ymqB0Ea5zLCspSeWwZauS1+eGnDJKaOc+g5TMatZ071sssQcTJbn15w5/Shf9eWWwtmHScbqG7OOPEjeQ0uu3yC02fNsmrnwlEq1dFI4IYx00ere+EAUuWJprNvg7muM6SFcN+t+ab3n5jJve9skb6IR6rP2gEzNuf8atVSI1QfW3hoUGanknCusL5anglGqSJ2Xwb9anFidTp+bloT2nQZs1WlYmUP3qO18hpJIniTvmySRVn3LTKHM1ddMIctLb7SZ0ZYskytIPrr0qsVj/Ku0cSNev9ihnvOhjtolndpiqpndSzzzD88tevMQdJSLJW7UPTdhcesHyYVbADdk/VQM+9ROtRH8qpnQ0lOXZLVpo2bO2KR9DFOOai5lqS7VYJlxzs37ElMtpNuoVh1Ox2xL6Wc4duCUXM4YwXH651WQxZH8YbV6V3Z2GT511Hn9wngyMDdEHM04AJr7MSCLOGuB9vqZ4XTWJNa9cLlXWzHl6tacEcwRmrcYGp5UGYHE3Gf7aAAtgKHwxh2MHPjfg2un2ltuztYP1HQmYGq9gKuygRK6WS5Z5/vLjhJZ7irrjXjWIPxIKZxAlhXjE1NYVAQQJXpEUCBCm9e1gY11+cp3UykxwQi+a3oXJ7izkfxDoNreXmH0Z7/tVnXIEYZnSb7YP6Yd3xEphUHJm8XFC54r6zuQzQPHEjAXolghOcXuUOdWUBmnvEpD5whI9FalU4RYaXjzAufG7qr9nl1ki0Y+tWEAwFmftxgKJ4PBShFfl48WRUZlXXoF+YTB9fboZ6RfoVR0jP1lfZ0MidLiQxbWiRXu4gSdXnoPhTSvmVrjyk2k+szzdOwrsiwJ40PzeOWGEabUAK6rQOVKkSBqtCrEh5AcR1fV4H+i1HfqTTTTmTd9WYKdeGl29ixCe46+LJB+TDc4BjUXuJ9l7J7Z2OXjdjWyviZajbFbdHdInQl23jQTkj0rZz395qvW+7RRg2reSh7Fdvk+x6V3dK0WudgY8KX0QgmphX7Y75NNho8R60BAgml3Ot5R5UnULMqA2Y24/CJFwld73Lqk9F4gKK3iJ6WOUEduGJ6DWVrGkd+FiqOp2A6JMye61k5V1kLEBq9CPaQVLhsMtO6CpcEnKclvbyY1EN9rIaF7OQogrGrSVhLc+LDY4ct1rAPFrfEw5/OdI+Kcvnsz06ZdI384XqKMxjiI0XWyXZ5HR1JyvL9dNi7cgg6g/GHmdfo2RBqPzzDY3Xfnxsn91xphFB8vTLRYVbV2SaFgpIerHmva9QNB0dTGcAtfWW3Cj+qsWla1ctXcTNnoYkKkUpYZg5UXtFdeTfFdlbf386W3ZAixIYcZl7SJe2f/ohWEjD3hM29JS/aclHAsxhsYqFjKlQCaIqYOHH6tS2Bt7JFa659+Y76cT06fKXLdlJzSyzo9+Pdm7InmL0KL27eYi5XK8CkvA5wfXtWAqSxv9eVN4+PkDRoXndAgxvn+RUA5PtwoMyFmG3KZwWPcKB3GV/1ijY+EfPmJORbQE1/nP3OnevQSqgTYnPpEkdW4w2rTYY1WJXG8+Dt9ox09zLUSM5QnU64ZCiR+vpxwA0+az4I5hikYqpck8PXcnhklFID3AANiBgBacFDZ2fLDugpZ2pBKQYsWbYLB/uSau2E9Jp6rCfXzA/7lb/nDTjaxJDfEzwVQr6Z5O/3CT9eHoQFyw8JdsETWEgbiOaB89o66Do0byyD1V8+lAaT6c/GwWyK4JVx767/YonLIrbXEjfLFiv9g5gLaA44VgIThqQCVkZb69kRYmEg1hx6gZ940Tp1v+si616YP03Y7pzugS2p63cCEHaC38vyOw6/9cp6ONGjK5lwdeZb8nm5Xe41/SCux89IKEczgYe3UVzcEZ0LepZez1jVFGoU5tVKaGw8U76rf/t0YPx+VJRU5P/+EUU9K9lOcL/cik6NFCoB231lFYB88JUKRUsnwfS065moy45j8aln9DJlbBltP35mPW/clbyzlMzjYgTq1Zw0y0mdst9Q/u5+BdC9EqeSmiK0G3AGyIsSDSBdm3NQwwMzalnX1Q9KwthfX4RZ0sEzAGAENRolfRrUybanPwS7yE5Q/0VFAgYz9CmRNiex7SxF6pKuoUZM4BZjL1NtLBnvCYC9TxYEj8mvrRojt/LmWx73u71css27cxiSVYpRpmQHvaD/yr8QFqcOaEof+rgle5MXvWKVXCXb5EPrA+5+mCr9YPdWWRabwvoQ5I0VttLesjyTww/r7Zeu2HbYwH7FxiWCKuQn7knnWERhGytS0e6Vl+jEAIzqkGQ3D/MuMlbcoFAbkMr/T2+XBweT7oxMF8ncIpzNPVze5lXTs+CVvQhnLdxalQ5f/4GXETwUfK93grGtbQydAIYwpXnzbOIXn5rHNow8HNeUOo8i5eOoB5DaSbnjgLb7GKY743tHZ8nw6AencYFAAfyOKvXQzg5qUj9hRW5DsYTOY0VPfy1u0w9egZEOgYSJDdt7T0siLwL2KJVGG1d0Z7mwABj8qMUr7AhX3Xhfzc1IRJDo7D8WxV0cg5Fwdg86G+Itj1ZkyRP2SukfcyfjtRjVH+uxJPV09p8v9Zia9dFAsgUOVCp/f8CQeIykUYuoqGoi8HtKGHPXECQ4tQ7xuFmQ5uJujqQ++oWQzyh/fNaNKzEVLkwyR8UQrLYWP6+RrgZDmGhAOuuS2fjP2Jac3a/mZ4gy/uFrPk47BS/q1d32a1M+a3ZfKBhze2aRtbAkQEzSpGQLRioe9THFgNrmXTGwXuIbDf8HUt4K27LeKml1etJr5DPHVEnnICpusaH57fl2qvucofYiyvOfkJWpCBwLhqSGkS9V4tCxxsEKLHU6GMS5OtvKlPAPKnYL1A64tXCw101N3N0luYVXjweh8BoXlYE30EygK+X7mqhN9V7tiPGSni5/H1ldfCplJJbkQOA/pMVXHfVjp3Nv4TBAjYHmY7DLp0hd62nsV85wwjE9XTApAB9hr4bsPNoqjrL63P+QM/sKMCEkh3maBer6hTOoTcSAK547/HIC3CCv7HfwZqlNgG/vWwaPuNxHnWwCQMR39miUqay9nIFe/YtKfd3W1UGsrn48XLScMBCB5O5CtLArswv0dAuUg1wbr9PZK68mfBzMzWnBVEceAs+LLaHjerbNPVVWmal6vMyUC4RZv7p2tLGbR/Q5FaLgPTZGYYD09r2ZE+LaC+gniitBYsHKehjmRcTgqUYWGNQcYnT17+IJIUMFEGJnMfakjqqSwwZmHFw6L1VjnX8z56Yra73gJho+UfXmA/sa9knZL52k11czrloQWDx5JjmvloUtw5d0fSfzcwhgFTXq9MuCX1hA3SnHne8SY9ZrfyMXyoD+uX9k2pTk+6cP+2MtoGa9bkipC114MB3aUM6dLmpbBnP6NRC0aeTFFmxxNBWTFb6HOHRmRU9Q5vUp2vb7BVQCsBlJklmNv1pVzk9QgApj4QtwDiUn2ClS7VXUS4d5cEnxvStpVYLoVEbU6+sVAmJsWniyvXbc8oe1B3lE3VrUMv8whmQ1WYimOIM9jmn79G43RABLJtLQOUALSJ8cyhXvu7IWVbm3Dm4yjqAOQKz8nqgY59oZ1K+n6zz9ef8em4S/iKfxGg5XI6pK5CaLHXJClwK1JUkU8zWUhxhZI3fQ7bROnWia4+0Q9OuI4qKLHXw0FBJVB+N3Uuu6zH9h4lnY+212IG+paaqR5N0wp2VCqBq2R9YdidGCqE3sI7Dz0pOsDbpKfajiN7jfyNW9J0DdqsZ46OKU1yqVK5zmZo6d0L5sG/SldpFuYnkCX/uTQ01PKp1M7ymXheWMEaWNNRlW0gi7kdlSNmfr6jyekBPrCwMtPFp37xZO4mvNbKQVekmOZS2aV7nwtiUSWuBOcGV80EfD97DrGS4eV0cWNc9r11iCWUHSLL09T68T4Kmkp7nCN0uBTWxbTg/5oTy76M5+iKJ9Eo+MebfV72n56k5bZgIZMd++P1VQiFTpTokCx2P/jLqcvwud3JWOHAdyIqVpZZD/vv4hyE74UUNsvlYgYUMKAKV7pi/nh3O1H6dMiicNBd8fR0YtydHJ24BTxDKzvtrgPGOB1y2oW3dXMwuYmXVJT/3n4q4iwy6DlluU31NGQ1JwKV9ISRVnqHcP7dUA0ewC7fqgvgmPYs9PRQ0eArIJL6vm9E5igsyKTe81kc3ErpFYi/1MmnYRpumAKe7F5c85rLmL4/G4nJ/Zbq6gSdlEpL2HD0BoK8DQ5ySf6RvmNNsggYrkpiTgLhQseEFoNjAZn9+oG5FMPsJpDEWDzW6UbMONSnOXD9kpDxls1U50vifC7Ql4cSDSGOXUHS9qr2CuTdNkqGzGPvNRjAlhyWZM3onMgGPBoVLWeX/J/gtpFPWkaRZHwdqyOWVZx0Me4fbuDohGsy+yJFWR9BhpV+Vn10JgAey0q1hT75Lu7JOwSDKd8oj55xOL/o12XP8ASsnQWgfJED63SvV/eGFzknx/3jFKTGRDKBxR3v8QZnHeUhHa4REy8JdPnsPWuDsi7lzimb4gLC+88/7rUt9Qjv+jxlF8SGMY0g9z3OPuTp25rhRyB9W16dmAmlxUf5FxCS/Qwe+awY6/Ps5gB7+MSSgsx/QOPFCmAu6BeKGNRVdThHAemNtZdzZU/K43rqKS9xbCSVapqPnje3G0w2sH+k3WeEuzeez9T1arJjsnnT8rCjMFm+1gBxMes0sDES7N8yYOQOmoYaga9F6UwhP0zOMwjjTunDOWox5d3K1z5g87azJ6Q9TOQb12M440fdcO0/ftIuOLt0v2YhR57HdikK0dDpHTs6yU4aoJnBmJk4D46rs+K4qWpcVysrse7+rTn4Cn7fbMNEm0QEJPvOJXKDpdqAcGwlpqeSFi7HAdg0wxP5SGBveLV/+KIxKxvzEPqgI/y087nyMeE7pk+a51I8Ee4WS/8qWYRYkxF+bKpJEOHQDMwkv519TWKOsCDLxaeMKV718pMcnfXxcmjxPBtJtUR2rEEISUtrVvl+3aMbE4vghzp+qlm2YTaeESOB7TEbBEX0yIQTy3YY7cceqf1ekvlWKj1zIp7326SLVaTNW8LP+XFQQ7t8PJq3JRbvuWizm/4/gnkdLjza07aYz2nJuJ/hwsexHnTjy3R4VYBWmi3+XgCz7xJOoEQ3bpSnXZW0RnGaadkvochYTajXzmVSKyFxl1kD1/VnVXCM+Q+OAgAzhqp1DgXY0Ewoe7bsdpcnywuMqXE6UKKIT8LxunaXAE7QMhwJtmEriejN50Ghw2obAV6jmJAoi+MkJOBZ0yVMPOEH9WVEduV0h2Y+ya9Oz9yoAq0o2bZ7GTgvuNOPWNbQ5nZUyeFQwvXyueNyy/rFVuehu0x0yaK/Eg8ovGSWrWH5S3cE5r7ArrR/MltXBy+CwzDsRGG4t2pUG4lwAckklJ0H62IDUUZNEBLBEOIf/6pjAlFfK/Jp2Bhz84E5IADJEgmhT+5ajBSaoyfpmfdr32PcR1LJ+aAvWe9zJCDujl2T3YvnRTsgh47iPPc2Zr97NZpzuE+Xil7Nkico+RQiVmgtYYZpOHHprgF36XAqXx7QZjrHSsJKNk5YdzYLY8eykMxXi5vHfvLCw+el96wz9Whg5sPJrrOJvgaPobjtlY5Vcg6FefkOEzYOpws5hctmInVmWJPWo/U8knZbb+KVaGFQe+mumQ7/NZGfN8T1x4s0JHtUMvNo28gVc6KxFhl3SDWLo3E+qoQxZfA6N98FFnC6Em7+G9xz+N1xbd5mr6Zv/1ydEg17AMcHbWu+hI+e2h1DiPtE2KL40XY/QexIcn39Uz2Oi6XdxFcPgRitX2X+EAmWnSDlJrDz6aVtECyfKNWHSr8AywfEglw3VJByQRdNP3CJVwM/sjQJ0UktmsTmGyi85y1paUZtsaHRIpn+IN/JYu6DDxLm89zA5xzU2PdEoP0LuMK9G42DWP0dn2wH5awD+b2dozf55Ork9v9t0o7FmvFRj+X9e0kfRmhCh4nriloYmWeQKGpmEh8W5msVN3nZk9MUZu/JlQF6S7MijOt0diHHniQ0mFScEoMnti747No+jDkpog59uq7WJZxvZUsNlGCx8qGuek0j5W5I2ITLuM34ISRBe3YqKWSawMENHNs7jpfj0joBQW51sfULwXhDwE42uMwgCtGk4sKn5jp295xkvTm3uwlHNukJ6RdVw3tuLnuf4r+wTBkYm2K9P7xVN1WX9pdYiQ7ujWMto5x7uwp3DGZZLM0hU34RGcodcxnX2KSRqPfkkWsGaShqq/ZCiDWpSuAuUlrO/vhqUlvfL/dIeN7gmveapB/j7+GI6KChm2GiwOHWm4anhHrSUnn8wyl1435Az+helcVqt23yLaYw+aqPBluGj9Ne2oo9MrvMucZ2dHxXmkoVOBp/js3dU8LheORcSfAVXVyL4zmZu+4FPodDjFj5NwWeoURMz97hq4eLmPj72NPYq9pNdetqPdoRWnjsU0itaO2mwhsyDnXtTrmhUHePO9mLhsbx4vtFk34MsdC2A5eRQC1TJjDms2K3sRI5CCWktXUQKoCR8r1tiZPWHbpEpNXpQ4LNB/OWs4PeHUKFlj/SekIXz52/738tt6RrxJ7+WiL5yBM1ZA82mPH1HPrufD5jj24de3LqdSGfSzTOyX7cDy6+9xzO+t7tQ1WCG5AOaoAtGspurBz8HYLw4kuIKa6xIKqNGSBzM4uOd4h2716Uxu4ZwrPf16M/ak1cI5WhCdxlqNZcNgt5Fa3faEmH3Ld/PVp1zaHVkGDnTdhpeOZAMpOFCfThhRHv57P8zeEr0EQLPa6UWswhV6RonSrtDl3XQq67cda2J4qauNvkYYNpOAerHGPrLcnEnC86CuSOlWIZ/rveDkAsH06fD+M5CS92aK9cfwPtUDrGHIxJyxnbaDnD4aL8Fzx0reoA+f4G6WvlKTdQwkhoeFc/h36iH/lL6nCdBPEJFL6doe8qUwaxpN502sOvpeTOreko7u0Gz1b3Htq0ooeGXpUiuZqLIVepIlbc2XkrKgvz5YUddykh0MlQ3q6ebqnJZvmGwnzSGAN6XzBCKekYwZdI0h1EbNXr8uuJW1zn/ZFeEH4cMGY6qpAD+etg21JCGgDlvQNoCL9gd5BnXwqKY9rjQYCAi+FZj7KcGhF8AH7jPjA4uJXtkSSpptMr72PiAFSWuy91Pa1/qM7GpBcv16e67h+HaPxhpyhfUtQpznAPcV1KrieYbltmxoFWDhZzhg3N+BAfksOu/rXtZDcRk3fykzPym8iBfjAKs9F7sTUZA3hPO/QGyI83E9QNGX3JJShX7hyHWhp+bNsoX+PIUuuPZ5oUZKb+7LBiVWC77x2eKZ9+lzgpu7A1USS0bv2aH6VRGaPQiEq2hO5pR2RgOu1HX7x3dck1XeshVEe5n2Q/Fj/OHALmOu9lSCLbTfxchRyfQTjeDEehyc9Md6JNG2L995B//qqq66+oA44J/g15gL0+PDw3Hb72XXQb7lN5UXNXjycnQel5Z/elf7nZfHUSoNB9Kr+AmvWTxtRWFDSMra5NYxOvLKYju5RHRVP5BVHkDQvgYnpnhpqbiFD4HlaIeFrnhdIZlTTHuc5Ds50mtpTqKtT1m54PPTQvLYzJreT72c2XQ3dtTW8CvLhDt3UVAYsyA4lfsvhGNKUG+CG/WOpU+coQZwZvsqljvDe6ENbEaoP+53T4XnROoXejw4ZHprJmeGDFXw8ybqQXEvXhy2ZEqIryvPmA3/hZUm0bntpP6f87ojlkL6BbJgLnu5Apn5X3XQn3WxT9tYlhyI/k2l6oy/zfd5lO1lQI9pvNUPP1CY3vkoTwcjD33OpYVTlmU7TcjIBaLOyjJ8CTFjKJOpaFhCx9Uzb7eEMCGTP+z1YZY2PXaAQyWlm1/ymzlIISke0OtBa3wM0m9y+LOzyniArzJoB0/S1HGrTU2RjeIDKLFrRItsfdEOOfqokazi0ZLwd9Zkq3YUv8uXbbsRatmOlggULvRKVb7cfn4n7FnO3tEpJN5nTPrVvtCjTMuBZdaung+7YgQXLQwc03RvtdTmzGG2rMTjdaEjOD+5MAiROLb3w/PCq7rdYNKp5D6LqpLlXJZ6KWZHieCyKGM4byD/S9K30u25jSkgJ3WLV+JzY7QlHZNNpiUzREs+0usKnsgNf5mIjhwAlnp8fgKxNg8UEqnl2YJgqQQEZzGVMvyxyQMU/ximUYPl/SfXlDeXZ0CGC9uKKaH3RAGX55J41anJbu0j0GgODX9j8czlvwOTLSYY/mf5NnxWRK2Y3xxGhvu7EMTtRG4G0Y+66kKIk0EO2FAmRezp5tfNxzxVdIBujI0plO98PsKPb3CHK38kN6ifxG7LzANbD3eWpdpV8uCIcmtmeKMieEp0Mfqa86Og/0QRcgO1K022cQBqCUUIezUvcgj+OXM4Q0U8yMkClaJhtfedt6JIDuYRWn2e+O74YofnOaJ6HUNvN0TiCuWCofV89tHL5I1J8d33keKCxoxKZJUAVnKqCFLJ3dKkdwka2HXd9jUdoqVp26Th/JAZN5DDRvl7RG+PPjznIh7YTG8/Y0MdJmsCKILZaQSg82RUxCiDLjOHIU7FkcJ+rHWEeNcN5lCE9TSRUT9WWcruGx7ONYtnBVsMQ9hTb0YleeEJ7U0VytWZqtFxt30yiI7E2TUogLe1AfgmXeoAlh75ymficS3Ci6xdZP4D7BBP1DN7qR470Ih15iMwV4FPBfTTfaNby7TwT/BN+XbnUjeAEY7eydoeoCtoDo2XqiGk/JhbRrv8CJk7Hsw3DfQWgM4WLKHagxQWBYGmtUqoaD1KKa83IeoE+sVWsXSnNenz5SzCoeLa0Wp0M/9h02dx9/lG51L8eHhtmA7bup8cDr/KgE6u55JnNdu71wRyXOAsJH/BD7u4XAIT3vPbS+zLVXcQCxNTmzYgDUmY8pLPjG20MUqYFzkpCvM1HHpkyN6V7RSIHX4au9uu3BTYT8X35cn7+QT4lnefc9Zfz1TA21GfysGJYwnVikxYbPUHGQr1lKYGVnk8SZpWpfZv1s1NVbfc5P8iZJ8hjD8KcxabexgUZEOFVRktqdwckh/FSf6sMgm0dkS7IrIXgRSdq7Sc8LIo2NFfV8uTNmdqYA9GbYlCWrvzo1B+4qg6mCZrvzBEsi1dy2cood2TS7VNqAtUmXiVoSrIC3Qhti8Pt63KYQMitfXvl26McdnfBtP+zfobBfKbF6lDyiDfgTosXoN46ZePAn2P7Z9Q7kMRHIDYsqQu0Qp6OsfXpDaBetv1R9X3LikTqf3HvfUelJEQDhnO/SOaD3HMwHucttaE8JLpp/h8+jJWJJBbcsai530/lIEVMFTzVEChtpJ1kZRgte+VLrNQ77Pl4pQfz7ZbDqNdtP+Hg6RFYwmrl/TI/rvusoKOAyW9pT0zsktEyJQz7AukSnszy44NqPW06EzR/iyJwz8hPXX8VzDjiVx3FDD2sHH7MoQyAlEKlCqrIYdMf8A7pu+uE3AXbyAQG7L0rBEWL7wxPy1uaWGIV1U40vC6FHTLazlkWZ0gBkLxDhnzjFjpG0OBUYWREcQPprusrO8pvxVln/3mDwbbMiUcTOfopm2E1DvTxD2QJ6g7Mgcdym08l1ndXtyrDmEUGJ+eA6XhT6hYkbM6zXHhQiy4tV0nv9UDLYRGHgHtGZTwcl6sQfGvTqssuFC5OegOPU8vMV6p6Kvo4wObIxCP7yPdK2tzRG7tfrRa8YyGSed2KXnBUmIIdBTztGImceq7zlsPvQwBFmV2xFclh5zyDTBOIiciI1YW6/oDr6r0hN8+bGbhuTBVfmId/z/zt8UiFXdgPa3moN6moCT6fcEuPQbolbMlltZdzchCTjtaUvwAmuCMcaNeJQY3yr7nAaupDQXgMhiGP5TIhLp8BlPwX4tgvj88ozfAib76GTI+GUuw+olMvo6/hHsE21Ugsd4jSQyKHrgUzNk8JqnNe/lKUbv5OsoVoahm+t7dLRXyd6zWB9KTrKf5/efq6itzAkj+GMaFG/QXO005LkLXBv/lg5zNWEOMbF3u/H71mLoOGfH/15N9x2RS8yLhKEL0r0KVUzfeTkdiCJUlERwv2EPanHXWxFyeTy0ZZegp7F2dAMiLa11sbjjfA7ASS9MCIXWzO93Y092C5lCQInCQq8fp3Lei2f0xv9X/LQP89ETs/FoArW/6Vodi2jwdAGKt7cufMOkzSIhkYaC8RuPocedJfi7Y5Sd0TyVX0pIadhxfZN/QXKXR9qrnl1xIQfGOCyLHUc8rP3LEp2L/dLM3+FgWr4EKXs8vDvX54smbrtmt7Sry83jUkIMY/lqgr3t2ICXmcnn2ZE1tzIgnnKgUtM3mjDqJaoufuV0PQCGzdY/8Hbx8HAaan7/CjO7+kSKDzuGgTQB3wCPoe2lkVKY2vZ7Fy0G8Xli4/H2cCHu3W7C/J7U3zhMRj00HoJ09DMYGYhvgxXj3xJ8FUasJCXlvYrIWU/gm3JCJ3hCtvb+1VnuZsUl5o2MA9Yf+ssHjOE9aF8+WkjQHFWiqr/9toafespnb9xjKd+6HE+cqMTJpYOx8haLX0+8q+95mwj6TcKIbLuDJ3ubyAVf9YGwozA8fbZY89pyv+Eo9CU/tLEjkVw9x8JvoNSK8EoI3t6KZREw0LPXhCTuA2fduB3Kx6l8Qha9Ar4NrfWVr0pK3eFKdRpqWlz6VsaeLcYEfRTZLgAO09C6GKlJo0nv9QmLd6E/A5OUg44IjOZK3nbRfNJyqEcrVA85NdME20Dl6yCe+3OAJLshTUUBQFwGW5co0ZOuCe1CZW0ysoWJMFcjJAgHcCfTqc2Kxj8IopRhbNR1jD8Z4DwQxbeMsgB36qNsSCpQxlHeESXsjY4KW5MCCNIQblVwMXtMz8QQSPiFYRayDwvggzhgcuDbnT5xgsOUybjxnjMYpE3AyC7aNFXxYhrrK8TcBQwwK1bLxF1W0oeMLuHCaNWUxZCgHAqoEgdD4uQfqbGb5qgWCJS82xLD8ctd/GyYiEufokaz3W4OC2NsHwZgTASL6c0IbxHFGegFGgMcLjXGGwqptjTp2JKzCkg2K4D3PEBqAPeBF5dxx9efi+KOxxUVGIMnsyHue+ADZerMkuVGfvL01S7gPRlfaaoE7H0fZZ2WlI9txC2Ryt7R/Csb/3Wc83wR4SUmk7oHN/ytVlPBGMozcwlnmaEwT5ApJNTMq2NUntMwcGf9W/KZ+MBwmW8gTkyDOwsmACrCwaztTx8hkCa71CMIiyMgHwyQFzvrqiFTtZcvNoCOQCKzByUy8Gb5ZqmeSmccFRIISpDAC8sPGqB8JtJqMwkitjcToI+vAD7P9H8x5Kaj28K5YLbaOMh6vZbg+R512SKNwONLKcgUZ9nlyRMPQowEQYu+yCJCnC6AKF3AGXACQoHTFcmcNO4oErDYjRGBYCQMywls17oPHUrsvXzEml12X+2r/zLdIgvrYicICw/T/CN113yPBzvqC/uAyZ4Qonah1vKy3e7pYT6jj2GyMRB2a39MsFLa8CBB/TVKn2men4OV2daIG4X71VwGne+0nPzzKaZ0ZX3ClommxUt41d0pO00p53hq2cgZhx7brkxby+awjvtRylUxiVn8qjH0p5EX+GgvgWF7w1f/t08wSdbXzOu08/aQatXdG0TxFkryoqPUVJU/GeEt/k3LVKw7yY/E6HWFsQ1La/U1GOZK3HHskMDXukoVwz+cvOJpy4ivgCNxgnuyhPJTXfBDI1WdHS3tvSMchXDNU2cr9M9TYpt9N0e5kk1ycz4J1f1V66UqKTd2hbwUfEQ4FirG/6SILWa+J1xZhGsM4JJeywvmmUbyVjFik55uCWHA2FaIrZeYJhzpEwCz39TLt1alMrP6mTnHpp6SPYUZyuWMeR20F3paCcnA9oA8gzeG03ZpRMX04vkVmhEOWA2bUESGGdB1uAT67uzQMKmUFXqBQJMjHeqoBOMbmUoZT76UFvjGgtVac+ulhebFCORLv48eX4bItmVsRazAVyPEoHUWEhi6DtqCQnx8tFc5u99snEkztLTqpLSJcR5hYtR3oLrjxhYImlk7ZBi53B1N3ASRVjLxrBCgOkWrXjqYkeamDeh6VU/88CPk46ZvyU9P6iRoHfZLjKQdaR4vmMZzd4NKdZPHSKNlzn0vmZ1UcaowDjbm72YWe8x7+NZNRyrep8PquaGqZL5b6WoMVdclSGqBatrgRRu5Kju9wEJT1p5xad3VFFXAmc/bMg9hDb3dcnxOIM3YRbErzluE05pAoKuG5G+1jeWNXcUhAHVU9FR4exLJRD4uz3y42OhIgxmbNsl4qYqWFRCAp5Hq+ls1RucVKFp9ahOuU5IHmQe6Khrqan3AWmZAzeYtcMIjomdbb7mIojJarSmd1zoN+mSfpSnsEBIkHsB0QQGkDFw682qKLYT6262HUuVAa4NdshuxCZ10+b+0w3UAGIxRx4awplvnnaOBt0ttEGK1um5bGEgq6Doxs7wl03TpLcF+Eg60IXNEXSZTVKZ01oKDZ61xa4MA/JgmArU18a0TffGNDiz5V0GDM+e2PYDKBWPm8dIFv4cRPvCijO3d25+S+QlZ/JR48UAiBGp3t5WPASR3bH6QyN3XQAawS9auQ/EnPWZ1HW9HSF0pQKSdZ/MOIjVpKbhduuKMzFN4m67JFa5Xpouwbz6aqVyF9p5zAzBN9Qud1EubgZLwyx+r74uDnbmwrUytvjTm3UunrN9YGh/ZsJRyqU6Pa8F16+JuwEaIte+w0vIQSgxQgXUZYvHwiV1X0EsiFni5TLCXrE3exnZQux9HwWbeRBMULBMOHaBfong9gYanyPb+UQOwVqeUN8eRWqAfi2yWv0ko/GvIw+UXu0luuO7PQQzDsLuaA5fYOezI2UT+Vojfmd9boC24wbeqhl0u8QL1ZnF5nm4ivVgNUW14yq48w28SBdLLKq4WeDfcN0f39UL8/M8Gy9LX5/+YyDcMKFQbZ/NPvrxMlu1/NJehuONpfiEayT3gkGzksuxtJLwdczeoNi2o7c0PMUnmsWW5w90h3A9sg9T9TxzgL+v14X3ObWYOZTQ/KnVbTqITIrWxDDgcVGDA9k5ISyFWpV34Wuvm1dWGY+z4m+pSwkoekTomukw5n32nyUTnOzgVHt/yuhCpGIC2kfpkawPPAByf2AD7+J9xfjlb5qjO5DGkq72EqHWhOUjKhXOe7SFkTNSbgx/a96L/yQBCyqwWrh2N1GXs1iacv7rkuwjCkLTwef6NcFEOvH0rnTGWPGIbTGyoZYkqAr/KzrAMwB1OBnTkZhVMg0CVosZwpJQvI8yULRBk6Xgw2s5mkQR7D6BuhDRpsx6xR1wAHSGr9Eb6DSj9h9Wq5YIq1laSF5Ah8bF0TI1gT0tmLsPkiPmwmUlIvDABq+dYttPqeYhFcggrF2UkOIJhH6jIajr34RzITp3cGta11lz74HI8mtZv8TdsmhUK6erV03IRmPWFFfcCWJoVjS6jJ0HAyAmy+VspLuU4Uok2kEyTjcU9oXcNfwkDYpmg5YQkKVa8kN3vyKSEM9hCdRFePO3I5BKxGWTFUKGARq4LXKjz88mFohS0LMRQIrbTW2CiM/GVVj74F72AS+p1cpzKmM+HB6zKbPFnlVa6ymg5EivCkfphW/De3fOz2ANQjrJ9gqeh2tnFozF1k4B7w2Zg4lxUqbG4FcWXVp0/L7RfjFPGITS2pIthGnd7SRlMxcH8ExUHKcR2uVRUolx68ZJdXYKQjBU+hKoW9obxP93iGgfkrDAy7XMADtqOszlkUXl6EEhXxzWICct7lqP9KYB/WV9/z4mxRHfwmObA89tJzfKfaxWTYzvGfvcnKnA7cG4nMcr/QsbrudY1pmUZhHh5gp4UwZ6c/DptmWX5zHD8cnAB+1iJD+d+ne++mgie4hRnqF4TL5i9KPJ3Cu2YbePqw+GQETdiMechFRfLMEe1KZ2x406ZHzPGN0PPJcvWR3lCvg0A6Jk59XU9tftvqDhPnw66nlC6qpDIS8725Z5uWwOMJYYpvTrZSveFhHEHTRypgy4oRt2AA1Nb1eK8tJz3XB+jXPZ3ZtuVSMp7CtN71iCu+IsVluustOMBVhqoovcyeTyvbNpe+jcFV+iGySqUXb4CrKHDfqpzk1xTG24vGv65pm47IBAtrTCsmPJyqywde+ms5iqlXrZdC/XvvpaGM6PozYWDJnbDuZgRCuqU7dWYu4NU3aZHhQLWuMQq52FDDvHtU3qSjBAXEKZycC03Zi2lytZki0Vvt3u7NUyn7O6kRed4yNY+34pbrcw0+bY+fcUgq+udF40yVnhW0uA0+VhOL5c+0fvtzSNDkqNplIss+sCYFMzlDSo0bLa0TOQk4snn1kJY3O81TxakKtSIckoNMnZs980RAwJ9M7eoRjALzkHXpx0kMPKJvx8+Bmii/FbZtap46jO0TSsoAu5PWQ/SteOhBbuPvcXLNIUEI66/ohQykm972gPk3s8l7gthOR9m6xfeV1E/Lqjjrx0FLtq8JxSaSL79cb+hp1fLcvsaa80xDjNyklsEeICsDNlsCmy4FGJ13YlL32hcZNpLI+wuDPGp8daqIveX/uw00XW3F2yHcoInWMfQXLpJMRi8JrC2IBlvsn5calFi3su7h9HYfXm00VPPkqFoASO0vzdb+vqy0BlcftTv4bT6Md89zIgiXfJU+HSbYs7xk6xfHfrt6sYaCJfRP4bmymQk4zqe6qL51uFiwI3ti8Z36hqXBwfJvWkCQ3a6o6xwJI99uUH28GaVEtMaiwkPYmOpbwwf5+nhbQX+sXPIcymsGPkUApgACzTs5NxuWtZ4+OzrlScX8wt2oOhmatmKdjbqKpJx0kvNmDGYEsiQ/gSfx0SrCRNegkfW17jU8Tjr16CI7qk5nuHpxwkcHHRTR08ZW6Q+qKd6ckIOMrWLTynWHzkyqxwLYMi5IpykuGL4fNubwI+BKtYctehjBwjRut5wplQlzkNgJ7kvNGKr8sj6pWaF5Ghge0sOnV+8pgWgpCFiRzWPLZyfe04E4HUTp5taVLYht3cbR0EzVS88ALyeBdz2m63sXx0mXEPDb0RfXIqVyDemAqX/bmX14EfEnX8Iq9TA/6jN3R1oWCq7mlyojkTbRIJNyvsWT7y/26+5/oXNSDgisNzJeuKn40efYHd/1Z5rqW2lCQx1hlXddsUZVIOSWZyziF633lz0ixe+5olpEN8PKDfkKonlFViwui1qrXqHl2eU/aGhmDT3M6Zmloz0eTZk9dDO1hIgNcP+gJp1jqPfQF5CajQTGJB3j4oPf/uvyjL052vHA0UdY03hMTHuDyQTckX7LoPbQmSW1eZWIGOH/QFcchXdX29GnTDtWY4kkOi1B6iY5HlRe73RK72hzlXiHaxlgOu1io0N1VCVmca11KQU8P2T5U06iVfvZTtrW1NlVPQbpapBeL7KnaYEjTZnZSThhkTiheq3ZPiv52drNAVYceidMrncEkq6GggbFC563FUe5yV1qW44pF50roH8tVKd3HCVfW34gzwA7ZwaT4tOdsCLkXz9M09HEraEWDbMz4mCdiReclm2YBUl4pCpxapQrDuaVMdBZdSbcV4//zv9qfj0fGgVxQ9xdFpq/O6eceksO/DufpVwb+zkLZ72Gt77fuYPavYqJrWQaZbCF2T5V1QanlBaaaFuaKVuTE25qD16uadJCt1lUrOYddnd5c68wnXytFgdN0/FxP+Wh2DM+gn/uITJNoNxdKaIuXlw8O9QbUfmutl8fKJLs+08g+bjUxzhtdRXVaI7FU5lKpq7oqV5xcU6UdUj2KXU3R5aXn6lqXuGEVrykDo1ZAuVi7KNqvmICsDUZ7juWjIzkvsET1RV+7gIE7Gol/gOsHPWEUycGSbWcCC3JdYcERT/Dq7+y82C2NN7NrSeWujFPdbVe9qsOTNYyt5/oN1GDcdlAe6tN998jUqe1qlnvYKT26ymqc9g5pl8l/epsqW370Y525KtK4Cmp1Sc5JcN1l5pUDxd+oR0Ub8y03q1nv6G+hrTUktPpG8u3Gku+fd8DLfGVD72ZvNIbXvalyCmEJRl+4jKKVMhMe4PJBNwQvGG1UxjiidQ1zSR9+qrRGe/IEBeQwTsWfqB5oTK3ZqXfG+Uaz1U6d/46nAF0RXA61Trcz3kUId2myfr8SSSW+tfK7+cnRUOkXiMwejgbRDnB80FEqUZDdlrqSXn/9+RnJ5KAV9fZxhCdRPKdzefFajTOrTh0U/VqIqxgFdaRPW8z0Q5OyKBk0I6NuLAJbwsiYIz71OtB1zABi6yQocJ14HEGieIgMbKasHyrug27dNU9jdxnWfw/lhbIzHDx5D05Oj+lpdM7Vmyh4ilI+3cz8JoyWn6bMt69k7cbbY0Gkr+B3i4mFDVQhYxfRqr0v0v5RQHDYZGTp9DISccyXFy5lGbW5+ED/7dm4h4W732aHOgFT6dC6i6w9v/O9FmPCOdKda2/9gvhK3xlydcZ9pca9y5OLATBAuhYzSvt9jkAWCyQnFidH2msoyRvlfWeuxFtkAwvhXHuYIh2PK+CpI81gFchSFE/2MgbNi5tOM5aleChxqwNBLyeAeprn8NpiHCcX3hE0bFFbjFj7uYAgZ8z4bjYxWMdS/L69eoiXZ62KI65aTQRTrCTxkkVgI4ntlqYSO9LgVYCkUuvLQYmdvCmnwCImnpwOEYEaZTducHrGlswMBbNJrfsVEYI/ZXuEIV8wvq4oPz6ttz78fQcZKqK49iXyFC/Y/ssUk9yeTRBeFtZTdHsT3sCpu4cDyBH4PsLP2aLrXs9yqg1dHdUFKy7kEBcnXIyFRXYOz/5z+bpF0pR/0B/Tw4+cQE9fmjBK+OvdhIzJBZuPJ6AFy0TBQSX8HAJRIQkqDlkKBPO4HMG55OgbOhAtk32lBBGMxpBhRz8zM5Ca48XzJBkiPy6kmMdKSEwIIxRmn7W5kEC+f4RROobGLrfuS9iHII9jF2Hu889zkSZgxVn/VbTbwQsGCzxG6Y6mZPBW9l/DNPTpLUGX0XxaUTvdP6GjjRv4ls476MQsUU+vEqwBP1gsN4XBruJUeevdF7XYgIiQ9jlfeH+wkvHfLi0fXzPqX9I7OX4SiA7Lb2Wzgkz8i2befqu9pOAl1vY9g1iJgkyK/rrbpzfjPv9OxdzD7bPaK+TJEbzb3etmVT+RsYfUpTXhmuxvI3u8K7CjE/a8SY5+3+nBGpgqrH4SkYNQAom1ZHW1rQgWb93IBTFpDZnWqda5A1+nwypWt4+jl6c6/uoPu26t7qrh67s5I7bujLlw/VjBa/mojNkVXZq7GRG9nMiqhZxWj9UrqarOv89oCK8uem8LwUHxIBqXQ3DsnX65DPgBRNHiA7UdaCKZxQttzf9jKEh+s7q/MN+972Bmtwa03nM67qoSj8NVKaMlQ7fJXMGG/boiMLmC09RoEQzzihHKuMS5SyF9gFtzvTU9+hgGBSYczTA+bKYtd8/MYAgg3elPusVd+uVQ2bC5Hr9Invu4YJMIZQlWlkrPXFIBg6ZIbQslNaMMOMyGLhn1oE9j7lXpJn57V6Mt5TfnUBmL3z/bYztNDkO2r+QPBl/5vSpv/6hd32eRVOqTb+h4oDz1qLMlrX9Wwf6EGunPjzD1iNN3CfPyfbpL66ryvCmaCN/cP/DN2vVeQpItPTHfmKL2XoX69y/NXYeZM4O8rMqH7bywpA19jo5kzf8R1/Js7rc39WlOyMn529nM3dTjSl7Ibd3nEPmf5uGCh9Hhd3aQnybbWOLEqIJSqWLp0j23ih2bB22UwIT99V5lbwzjBT5gcs+fM7mUFltUSe61L4qppvIJXtwLGJGvbde2MxOHwk+jrnugMSsqT4IyxYxj1yx9XYRZuBKO4t4NlXwRrUtice3siGoxSzmY+t3GCe3ij3X4814s7wWuQvKaJmeqjuZQTnjzhO+vviFTIAcPNiZ/OjhA1x5PipvIOeCV94RIW7p0sSmKWPxqnPVuCd/Wyssv+oXelETpqoV5xhBFvtvW88PKe5TWlEg9OhGvhkr6OL706NbIGEunLTum6fxAcv1FtQdrAyl5epenQREPKUwLWoYRvLfcPjL5dnvLSkJmv/NugLD0oHoRnCay26dXYvcp0jDb7vzcpvrR35JnRkJDZu9k65oqzs7REPQZfeL7ot39b3B6qtjiYWWJUTuszI2ibghjmgc4dqxOQe8cK65wlm5O+eAkpt7+JApuYP6IQJKz2ba3lhh1gydt6znbho9F+xKytmZtYk8D9EFum6k+3TZmOvnKEmLXJ2O21fKPj1DjD8TNAjF3FC8RDEbZAok6CpQheI0JCzQp44hW0TFTkvfnTsf3GgXNTbsJReEQJbKwRZroOD68Z7MQ74jOkd2L8qXEcxzRHEx6Pg7ZgX3a+D1CzoR7nXsDRA5NL/51FPG49Y9S3aSTCYGzoMKhGVmKkkltoQLddsS5lFFMZIbrhkj+iViKPzQ9xIDI/tJE/PKi9FdmbRBUUdLMbLgkQSMZ4O7+7hC+oCS0AxmgyI9lwvAy4o2bV6hQmVnsQZBU0x8lBezDDyw5ivnqS5MyA35sQI5ZDStwF4bewe+xmDVx4sGZIOveI2tyHIDkdLQ2L57wYb9bLWs/tL/tpS09vZLvy46AiQu3qWFerYZv9ZOJXOS/MM3q9UiweFpEeeKYKl2KLeYQI5zq/oLN+LwhlS2FNj0DiHh/QMelxJoSg+Tu9WbDFqqyovrDyFeHRxKQZYA1P99uW+xrXW2mSQ4/kszyDvZBzlc8RCF1euVvkpZHSBiW2j5oAwn+nDsyvZutDIgQpea8yWi7/OsrLHtc1FNcz1W61p99hu/Yz1XEKrvnUdc8CaqHFN0TNX99/cCV5uTEL4f6eKWa4v+Y5yc6g0EM+UtvxXIGekKaFsbND3824XRkt3Dx73HXK9YD1/qKgn4oxgHy94ylrmFExpp2zPSzTtjbaw5u04WhNmDhdhI4DnCInYbbXs0b5/cqes52/MXvQkSjiee7E4B5zm2oq15lHthLQgge6EZUr+S3pu0JEjdlAgxkOBGPm/wp5q6SSkYA0n5PV/fzK6VFZXM84j11zP5QA+wDrzG1NHcWP/4FfJuWWKFXSh6TOwJUUTR5MQ/+vhEyI3a+xjMvVcZ/3CnBsmMORc7W7a37UWnKHqE29lL/lGrNQ+w6y3nPQ4NS9O0xrgoy9ZcCURRadROReeFpzHVyZElnOlt9kwwkbv2m/1puPPNVg7+DgWopU/cp6varAQ+p7yNOePXlH0aV49W1EY4Z62IZC+zPMOIf+Ro7GeS2cfTY5Ctr5IQiNS9rBS3Ki440UZP7EtN1OpEbw+UlIA8SEbOKr3Ves7HPvVB4fq+xVDVH43nLdomxxcuQjkGNYtf8VwiIKYh/6YVEaEYRHJLTV49jZdBnCDbqd6B62Swgig3PbultovbymN76KiuyWSQi/kr5yTxWzpzlt74wjDR6/RgBGBCnYV4BK0kv/NGb605LfZnyzf8RlXgNwee7JHqbImonoplZj4TjIiBaSmpZdDobkHj93kvCYNDlHnyZYiqzJi68p79bwt9JBgnKa8b27FMMnfCZbSTOqXw8r9c2ROqcfH48gbni4uXQnXmzAfz2+dGleD1cM0of9BCxoHGpQqvQkzMmsNpSLHWdYrOhAnnhSlrdw5wrLnvSAEgGddn6kWtkMtLQgF3ZtAivADjH78JLiofmoK1y2iCvg+CqOE8IJI6RQVycZcjj1jzJ13nayCmEZ6E+E9Nq12U3Cc80b9RlsLYJn1swh4aBkcbZUuyo+NjZKq1tK4+OXCWnxQTPDslEuodpk8OP6jFd360zB19H2Q1Jvo1CNY4K+9Og0STqfNXyFRbdlWKV8/yob/xsB8Od6s//Bb53xZPtXHK86zLXPzKM8+2wnLsiet9ki6cQ8UsQH0ADnjykwhBciuW3rFPHOdxGAtFdAKl78FxaK4MoYfhhBxYh4mnHuUbSUB0/Ov0Fiu37psfauk5vSHUkandvI7B0a5HErxcaRfhlHbbytWF4r0N8MhDIYJ6C5KFwiIbJwlAfcPBk+u5R/AzRwKCamnh5DIwGT2wHZI6VmckVwouL7PoqWpSeyxW59SC/yyjUKndyTJbbwWDY72v9RK/HqG918eUVnerbHcSFTEbVb01IzgaKSTDEm9cmcyWh9366m6r35bs96eTnssrHqkg9ZGReWekxEVmLANdJPLxmqSrgYxwn7JSi5lJpG9egQErA8odUaRpFl99PlXkqVnZfLPk3EMkWm+KxXp4hhEokXCJW7cUvffXuZSBvhAz7tU6teR/bLN6m/r9U8+g9wnJ+nMagn/gocMZN5LheTtahLvyqoCxI2wh/CQNRLtlXqYMsKTZLs4+zOd2+pAnRuaiudzNGnu/GzYd8YHfdFyI+xEVDemWBg/FwJFKKDrqa8nxypfPYBls/UOERl/e+gLCo530e5/AEZ742sdinATgdVq3V9QElfMxYiGYCc11c7ibKgvOc5ZlFeJk1GCHme2j8ECY0y4HVy5ELq9n075yIpxMibjTNZbU0g8ZivuO0wTeMWTuDpKXGz0JTl+XtOeo+eHgrs8A4fOdJoLmwhOUviGH4SiVoSx0JB+8QCXa3tHNup7n1IS41CFKmUM5pk0Tb40T0JlKXyqt34ZJAOIClafVPD3dN/ScbKuywwVGOTNpL2J/tAEpf+eABVmf/AVL/POPiojoOEG3xNQfOhwdPtPNc858bQcRpY/BD3k2KXkKcUfFLaa5cOIVjZsY7oKFeQukCQnZfxhq8JG5gggM3ViXYw5G7hxD9Zetl3Gv83SZ/I6mteZwWA/eK7T7tVjwcOk3KN43kEtoOJm8y0ZYJhAp5JjytKL9nTyJnRhtu7f0r6/CAPlcTTI0f1AjT4LYySwnq4htoL2Q4letsYx169Y9gDV9FtcUTL9JekHzyPDrt901gZeHxGnX+PW5AV4zhqmEvu0R/uypyGKxg79CVlQtDLBgTFBHtlnN5uKoq8XmxnCKqfofk+fR15AxoJYTb9kwB47LAoqOfNoiudlvA/qw+rxVNqemwRFLeEXS1w8CT8uCB/WJJagIy/+ItRw5f5uWQDA9G6M7j6Y9eEfnRkjBBYfEeGu1BxsvW7Z1aEaA23Ddf1GmdkrRfSF5XmBUqtyczHu2cECPt/t4sNhs9RPtdl8AY8NDg8XruGIzBq+AJr8YLSpgVmWg/RIfVkUySAMMg0MhCiY+LbZ/GqCUPCxZX1gKJiEUg5Vm2esdN+Bg6+NTNLfoxQRInvIbwLeJkjxLHMRhUT2SyDgGpzE3GOcR+hFwrMryPcWnaneZOltabNRBvfczyHRHGI7eIj786UsZSrtXERB8F2HRPgfW2AeE/4bO6t7V5tDLlu/26Asm4Uha034ua+8/JWijIonD3ZPUSg6ZNvVPVTr7VeFHoPoOQYbkROoMdtlSIfgSmMCdAjbGjUOynFauoHkDzh9+fwilkubbVMa9Yt9zYJcftstm6r3iskPQi+DnaA6CGWN7Qvglkj+MGsCLbi02PDo1a6k9ZaImYB522Bf4cSsI+WWHUxMp/1sHhCjn2HWrG44UsDopHZhZny36i98cDuFqg/LV6SlRn2t+zTqiwpedcsSTkfpRcUk0HWSHoRhGnBa7I0hAHiz4toBrL36uHcbP1OQEtUmY/nMIoso+cRMVgX+qJHD/i5mVklj3TglUNS0Ge9J2GQps+s0bQV8DIU6yyBCRYrF9jbV4M9ST/Flite69lF0AKou1oz7pGXWhVr4EldTTXHcABXFJu2T0daAEZ1wIdVBIA4IjpNLtaCXizeYLKr7NtEwuE9yORh8kIgYA1mKPTI7jEPwpzblmfJSZUb5hnCUfPUdJytvf4OYPWNbjgSBZyaYUAwArRx04fLKXS4uk+Wk6qwPhUfrCs96OfkxKLvErnSDBIsu2jnxTZbx3I0C4jpmmt05R9Zq662xd9yxbobE5CXyjTTXCaxQIhM4T3pkuGl6oj9ATeUnqJIhAneHVBkFQvDye/fO5OjP7zXIXjh/gD44KN2SHQEOjqM4l9Kz0v+yMcPAxN6yqFu5D3gZSeBwp/DfEBWELo/pJlfYHll/12mRmeUNlpXYmXdUby/95Wv3x8eo6nbos9WMByteb/TTUXkbvtyWUlnm71NDtIJCe/xB9tZVzxZSVETVtavcCHxDfZ1viIdgVOzEszQceY3TIq6HcKvUfZhVCTsEjwpi9ug0MXmdkYEb45BtBwL0ILU75r9E/j2ESuzc6IEMx/Dw/d3CihWsB+f0J4jk5JI2pMnGLOlfo9GNPkkShacgI1oyvm+HcabWpTKUFicUpPKj0C0kd8K+exdGCYf4unM0NmtE4qdshz4No5R9zrXruk8LO+tHydHTQfX3zp/ZFRdA+mjMJQ+QXm9TRW6BZEfmYmjgeSLcBjT2B0blC1vNqtlTu3kT/7NVj2hcfQon1sEFNNM400IPE2CRl+tvd3Qht+n2qyBwuXKE2bRkBTSaMGfIIk37Gdor5jwhNBljRxuHm6O9MTapklnrD3hY1jT/OBbn0yCXMxBEJjmk01r5lURtwIoTN2CAd0K+SWh4gaV5ifQauM4FrYzMoO0jPPuqFJxAsK6/DUe1ZlCoakytmRKUwtNHR6FPn1LB8hZ7JQ5FJENek9nnWVaN1FoJuihirMHZ1qg6v1H6VqJ5D5TxqXffelWM3IidQr2M3bnXEEEC2iMyJ3t8b3GegrqfcW6toswf1rGKIGSQsoi1+UaBUG3YrYqvkQR9AWp7zDw4CWJDb/uo8gdbQUIqnDFeYnZ47oWaNuOSeDexs6YBFT6GQOZ7TfzRNku9VgYjiMT0bl29NTyjqNhvGSS4LMyzUkjVrtqmJhL96ojteja5tDyUFI/uut7V+2bymb2epuzSoxeThA3bOUYEXYOgyTa3psuqwe9ty7Wv9jEwdwIp1JzZVLK8dD8rmqH7PzYqGNPhVvS6qR5817X/yhRuxvoiNCDTH8k30zIB0d1j+SWg5T8uvM17Hqt3WrcyPXt5TSuj+bmb2dG6kSvdLQeq+Q+eNeb2JEt9cXF89Nqlhk0OtJ59Ir7VUTkpR1Uz+3sOZnFzFcEBbogqr5H4m7HhY54wpf9IQNrWbBkKMu6zRQ/60qBGWXRANzUqDXHvsAqt6GTGBKQop6oz6+936zOAEFznAKaGx+FwHdh4VN2rFb4LaeneXjipFrdBOmwpuPQamm9v0AONGrHKACXQdDb+R7CGtgSo/kc6Hqye/gfVwvsUjYHz2NrTyMbGL1MDGwUZwEs+zv267dGvssmWd1IVeNldoCG5KJSdzX2GvD65oVb5GgFubgoZQugQYf7LbH4ikLFSV8C9L+oVi6biZnT3NI7JEtOaOZRVO9sz+iFTCxm6lRGFWgmo72MjylFTrT/BOqvfcYjeWIEkxkSVc028OVIj3751E2OFXrAuxSLcJqPl5cMLEloSv4mjBwa7Oz7xhVoAGzz+MbzXxrYs1MoRoyaT5m8SjjEYctaHz4hO9DkJm8ZMVG2c+0og5bu/Es0W8vGl3d+sgOKL5elqZNq4o1VI20lVvGwWyU64+6yXPyZFc/7fxBBt7dJRCynM4f2ECC+3cJm9P4PMAaHh296Noj+W5lGxCbwylJrHfwRyA7g8PGDxw2H9PH2DHZO9LDnjJw8Hjj03xr9lunzwZuN/OxggxJlaLGgvv+kiqBYHMv1ANWFgA0fqrwel+ffMYTHeJ1BaErDLQ7Uk9YDAzdoMqq+E3A+af7em3ejVzExOS4RuvP6b8QjH/aVU/ZxI/zqsO5i+ysW1foh/4U6GbGxhWVxx+Osou/m/NLViNj43LopnSU0IwrAL4oyfE7KWe5EqH/z02eL7Mqa/DQdJeOWL3QLw4RJBqD5B2j11wJmlYWWVo5/juGIhlUYdp4bNhP8hOXSJSNJ9vSKKUzcB62t6FKGTVGd8DhaJIiH+fbfwhnwLVYror6PyrRMq8SU0ZBcVJSnLz0lLRAZzR7tpP6v+tSFXlarrqo3/Jf0b9AVYe/QleK1uzI+Fgf79df/1+RNn2fIIIjgbynocPgJMLYrQ9NeZH73+KoPes1/Zf1FMWDot3vz5+ShMRLQ3oa9Y6nIyurVXV8ErdeuoOfF6gR9XvWcv4YhdTjZJGUEOVwnra8TyeR6OHu4jJwN7oHsk2s9rRJDT1oFUTuoeu/RXz6tK2FOtw53gn5fF5dWgjVhD7qK3Sfh731o5OmNDjDz8PaelN73444fKrxIYESCHZP0hGwnbvzjARmGlMkZ1HIYI/IV/Bj3q4k9s5R6U4K3TJ4SV3Q2Xq0rczQFPn5b+vpnDI8ZBNfIMDHL8w1xcKKUW6g2eEGLD8/+3pCkP2UIKlSQQTMljMjwMiZd9zIOhPuUtWNNJWERZHKbfRAWXVGj2/tOACjdpKMHOq5LMow4r4Kl/WmakiJiU7Bq7NsE/A2C0jpZYE44w+hQeFViSOjuDOUhxIeYLDsE7yfur/1KrvXbPx0a/lhhRu6Mo3GHH2fyItNNl2B5V8wNdUjBh9coVdf7rNhdACcOGbuKxxrQ15jeUUmZejdwsujOrcyVUchno1EqNkmQbjhiY+ifHAX8MEcdml+92pI0QtmgCVv9xnmV261MrpNrcsb+XhX5rOItZGtm1QJw9KwI9yeUVglkcmQ1j43IQhELGth8nXQMNNkhWLglZyc6lV637B0J/Iw20IZsU4ezqBHzkFlfFskwYDfoLFhvHHxILt0LnbtzIp5U39iXGCe4OCE8ADwzk3DfCy6/NJ9805fE8MTt+WKJ73EpcPRQb5A13f444TXLeb3ElGN2cF4GXBWYiCRTmil8QLJGmvvAJolt0EClH+sKHP6x2l//PQ/LoqH2+3digIv+B850T+j2JnUNPMDwn+3raEUPYJoIxqYoxd6Q/+kU9oEuqzCy3MYJestIPK9eSI71L+uzX+smsh9Qxfj4PaHlbNR+LuBMKh6Nk5scR7AORsdMYANFVb8hxxBqEtvs2pTOiIi3A+BkOjipP4efKEPvV8kZlSEW/wjIue1aU6O517d+D/Rd9bJOzDhdXiEXMxVrXlr1BjE190n9P8ZBd0P7YLMmx8YfGSK58xCHetj/4A/uHQ59pyRUyiRW1PUCe49xYIYRTHYNLp1azzlCqo9FQEdBPJ4MRSOr8Y1SoGXlS/w71eKtrpcMRsuusrtIGFJQF2UCDDoG9YNXdfcNPg9hQE1rbOfzwVMHItTJiPDHtWivrHu9+SXmtGzS50yFU+NzXH3cNQ3Fd51ffAD1PEozTV6waGCbm2N1niJqhANmCwtGGP7M7NexfGsCaevjCX7qF9mVo/8Kid4Nktp5JyUgUF2qfzM4/HzGidSaPcVcVECPiamPwmp9TDRht/IeeuHDco6eiH3RR5+8JIPlk54CwePErrMLmz37F8dnDOCKYHjTvqZhHMviV8gf4xsB8OXtlmxkjvWipvyFun7DYz7pHUFUT1V08Ik0P7T2pBRfBZtrjRjISg+aA4geBk7kJOlMQGP0UXLL/ewEwVtszsZxzBh40JJE5YrGwUF9IJEZ+PrKwuCW3aWCJKbOrBgGf/InBwIQtJXVlyi1aFFOr7+BWnQLRZLOCZhxLjktUnMrc+xOhzBp9/vLjRRk72irEzIX6ayzs5WPGzUnaLVyk5fpyVMeAL6mDnz0uxCf3WIeGOC8HHw3rrGRvzC/jpAIRYrlB5HwzzVm4cP5ZS840hKxvDLAdMg8vi+gq06kuEvLsJ33LGuK2CH7ElXWp3TYAl44DEpcVwyvM1XIwNqPTSx7jFIbbozwCZDdTt3Yf4fQuaOp0y5oIWlD2IGlu4W98eA9OJupj9Xng4e/z15QkOaQsJEb2IVhwYjE+7IvUylNBlkl5/WsUGJkf7wAHQ+lHHlpNQF2N+NE9DjxhqSAW9avqeokq09wpzezXqhnXjq9qQbSndHgse5+DD5n6AfkQl6G+9q9KlmZGHoH7hRm8P99FtK+v7Geq8xH89HbzSTOt+ARod2EI/XwBUTT51d2Ve8Vv/2QbTsfpodnY+Z9K0ribE6O2Yj/7CATYrjLICB7CfY4S3vkFW5EXdBYT7u/j8xl9TwHf8o7k0vZIKAhxx7c0geuDfR7XA6y9UJWdtxK/q0COmae0xESytE0Z8bOyCCTwSZZKeKPgB/I5Pp7/jD7eissnJxs5uVoBAGgmeEH5NgrcwOgE9psf2NAK6nv80yme/PXxB73wYkUy/E6BzMBcabtm5geDEwxx3nj44ZZvIk31gGvDMpuhhXfMqsYBSsZc756+0Dr1X7+VM8FNl5Y43M1mkpTSNdmVfI+4rQjggWctKmXJ+/qYVwDm7auczW9Fr4mR9Z6/L0MiU2v+1LqvpbvyrGOplAPDSgR20G6tYcTruTH6pq0XQ2ciCihvPalIM20Lb6EunKBvk60Q2CzKH7NSVFJtIw/ABOcbXdYtCIZKOm4JfN17VIDIBC3hoDHxOK8HkCdMMoSGCv7YC6z6t0MyFsXfiLUOvdpV9kP5Mq7OnDgfBiqyL+y45p0D0smefOa1vq8qN5/S+07KGlwrVi5BVTne5IG8DC+T2MVTUj5W2Z+S6WS3rzrh5h1GOk7V7Mebb8F13u36AtbjfkRgnwyLhbYj06+7vOEPcgP0Q8i165B+As3+UDlZwpmiSd2FkiowEKpmz8raJOfTfiLv2OySS/UuCdkmCfBbLsTfKwpim/82hrFhnoZeL2CftlLZQYdUe3uzWr/K/viZvyet9ethHqrVMazOLEr6gq5JNrcS0tC+NsPdMJKn3ucEp8PZiKRDxcVCCz2mOX8OTxRAPcYR/YoljwNyQYEF0MlFPaz/s663Etj5T+5pjKhiNykM7xMpt/R0hg2tenQ0SvYz0D+G+soyecCVVoGRyFCYIHnDZ4StCr9jWYN2ebSXujv9CmkwTbmR55LJGdMOzpZdekvl+E4kHpmAeY0NL+2GFl5v8lU3MHmUnOT7/T4QL4yq6fAUDWoKXfIqo9rhl0twtUQRlHmMrlEpV6sBKMx+7e48p5AzL02yW2c55V4kia6iqirZKzf3cKlYCWdIv8CwWh4Co8S0Gz28pEte3s7hIC5+b5FXSRs6CTOryrvGxFMCNXh2DF7vkPbN18/e/c1Ct7ej53hrej0UGi6DHGR2cwPBO+D85T3g8zIbOnuv4cgn5hwFdU8ubTkrfE/7YY6d/79DxFf/Zf74HhxCcq/j93UdcOukRp7LvjAoy4ho5+dRxc5L1DB7cQzbJhCpFIppJJHmgR2qN6mimfo+Z+2Pmy7BYg9i/dzxrs+P40TbJKh/2hUUsWS/eAfbOo2CXfO/DxeLXLFgm+AkV4BhqgUT0NXld6cMDr4X1Kxk/Yj3i1BQFnb90vnahIXA3dfk9V/j/DCC8JMg+P/vJcln60/STRwTX9G+oS47YIEF0ToXbs4tuiIJgniHhN/hxU7WSh/5W7I4qZNosBhdKYQaPXLares5dwi2+henwvIT3GVGVpudoV74UAnMr17S65CvcabdftdfjUIqUb7Faf2qbQ9k1yG0B3DpvKxTZDH2G/kYhGNjOIz1JDsZ3B9kweKAw+9o2lELp+ZH417gLX7J6mCrdO9BIfjTyseE1d9/g6G0ZPL0dtDZUVXjUtea9OeoF0NGt1FvGFh9Bun+NAMGWN9Fz/7FpL/b4wj7vmidYeZu1bgIeojSvXBreNBW3fBNcwERlyteCuilgEprAzftWqaq6yUfv6EKHy0xMDfcHqEba75+OTfqTiZq8Y2DYrxFT9apjFu42cOPFZrrWr/kTJXKuSOZi2LW6qB6Ti1T9SJLUpGtxVS1N/Jy2Vl1IwH9Lk64ZJqCKdGIn56MhA46tODZkdaDEMKch7YIycRk9/1jEZKuriai4omemVOfU7Zocgn0DNvKNrYKeND9x29+fm9E+4ZoyZe8qw2LkzUmHFuJOpss7W2xJEwHydlakFWsFhwlSOh+TdNPwRSa083hVbv0JODqNJahjT6cj3uczc5Xk0J9WC7a2QBWMwgZLL66rbMmOLZ7oiWINJ+tttSKi2rqMAgeexiaHi6Pqe46fM+j4aoN5T6WpNPUp6U+4hdeDfD9LR8kAW2dtpGPAet9KyONHN+pjL8vAWO4ofSkoe6mYvcsOxgR644RYO//2qJKSm4GbB0O3dDMW+sbuYqSLGAI2AZeGdgrrYM4Ohbbs49RN+Wxv6HRtu9k/lpbbq5zv5TVi35dfTPIXT9+RbnddtXsP2XD7W6hMp3wunRlhYz3iJyhW6X64Pte9XMjXeDajoIwyKUk0yViSrdz2MtFy/kq0M9g0jJaHcIPPBfHnbBFLtHubjQ0AAB4l3XfdgjQrAwIKEyYPiyHRUasZs2dvgc4rnqHMpS36ap5Mmt8fDlOp1h1FE4jMLjlPW4jXGzpXzh9nuQ4M/3caiL4GAwSKCLu812jjZ/fioGUlj1aThjaMnuPOiPdd3a585LAjBNNRn56Z7ZyD1vDhSM7IT5/52TsaEpIa/G8D+ug20DtvNDdg86oU8/jonX/K6HmSuaO5CxKwNsDW6XctRsfIpndpL2cduX2yTyh0XqQmGzgknfWX6CPcfcU4t93WgaupTX2yCdngfQ9kNsoj72zipR0wt8EqRfTVJklhErFKrcS64++iOYK2qXDYZ4/hnFDTrrVzTLnpBzO96i5Jfab1NTm9JfyuZc7Cdx8rM2jY37FKU2uxu5SAOB0/3G0ibB9aNkRwwU6VeLh8Xg6FJPWoxqTBdlwBDq+2TR639Xhc2aUalK1AeIagUyjUV5w3T8r4kdloIlQPMRe8JCTjvp7NcW6dSVkSBbFNkkY4e9kgxfq5opOB1vSbGHyHClp1Udvkkmiqrz7D1l4KLKPr5iOab5KbHLu3ScC0IPXtR2agxd4okwxMxwwtdo9gfRV81aX47zKk6+9LtdcYOq9EYrPo9x0G8vWHFamGKvfG8AT8wtgKiYeqcOx6HPRvDpXIqt9u9erKtvYrljEngdtY14wh+jcpMuZvs93mpKwZZOL/nhe//fHC+s2TkMyuO+H2L42liVhFvEYw7ShiznByZelUZ6Ogeg+JiMqTVe3o+zTvN0bISUFOkJKDeC1CD9tW5KOdYNQw3yvQ9JkJQxvNnCaNewqAldUH1RjKKoZzOG6ZfGD4Xh3FiygHPHd87oYwnI8EYPC4zWy5EW0MD5fGKfu2Hk4llbzPjMefER8PINPLwrVmrk+azhluk96E+VoimwftTPCqH7V6HVDsHHpY/hk0EVgVKLy+IA6ESpFWPdNE7F2I5/RMOb8b6jNKfM7R0O0Myhc2tXuulDl9dLb6jgX89Xd2rEh2hFKU6/cnJySfEC//Vdx/V5MmLhhhjczZOoMGCc4y8j2d4DFAnrEb/bK/Ou+Tk40zWkO3OA9ISWWDkCr0efsMI6J45XvnnKZS2tIkVWdpoQdOwvJJSP35eURKEQWeVs1Up3SxV9Ha97+H7EdFzDq66x3Jijvbu0W6gJWaVCbaSg5uj46TKQQNm0yTgFyCxSVUaeqjVKMgnEqS1sZWmzqAXPHMIHn0ohNKBubg9PaOMjfVneMyyw6uBotFC69CSzleVlie75BDEDDwl5AvLgGUbfIMh89PBLnlvuzeaywVfQnSHV0bDTKbpD2g9NxX+rskTxzKhSw5aqx88G6/ejhMcCuIfPef91JhPlvLOdBBX0ZEHD1tn17JqE1fBL8HSbx5yE/pAarhxzWRw5eWKuryYqUAuWF1asuJvyJrPdWD6ueWBRnnt2fmJt9rP6vXaA965Eikm73Nz4CuCEJRz2Cx/W6U9imwQxggLiHS5N/Tm/m8QY338ZpnqviYjWE2mGUE/L1ZEVP+LIV+vvljQ4R4kI5q2BTVcuYJCcXl04EPwnNLdLoHu04Mf4HTfhQOOuCvDQURes5PU9+KM+XI3WJxYu/PQX3MQl8NWZJTF7n6V6/8gXsRmX+G/1hR6kEP5YQVAkDKwcwXcocAR/5T4cTH4e/IAPXYQJHEJVsIGCnTI63cH5kdJXOEIg5T07PnHLJMHCcr3J615/rXfdewEEYJz3XhZsZN/GGw7CGryQOD5/3U27djAgm0sLo0glB7AYBzwGaJc0h0AANC8t4xgbdufz7NIUodC9TofRoCOMFCiSwVyNdsIAekyQ+BkE3UMYSR0fOeEXGU8N4rNHvc5p5O7JQ03SjVlL7NyP+myRZrVDeSxlVp07PaMy4cxjiq1wZNPjcbAuiFmMJSdAVq5K/KEgjqMpnOan/R4htm+4O2D/rMuX7Biden3Sf48gOnI3N/YiK1x1PXkgF3f7d9t3OvP/RMxCVve6nZv1ucOPwfHr2Li6P9l9gbe+hauPGktL8L8zUIb3Xn07WCGnvDEcyrLpA2prPjJ+BrGLqdk6tHddbQGV9X/Uyp9OzArfmdHHj0/sXef+k0oSz90pbshsXWlDL6cOa1X/D/HwKU1G5ruTHzCyyb/UpHyFPI4a8AKrOb002VunzTESDaY3CeVO4ZwojNSvqbV2UMg80FbUXVzGBwGt7PS00IptiqUKDe6QUDLkHDKBywEz5S8jrMsfJt8fGsaosGVCBPLJE4vSXRApUN9thfFO/pidjtx7mAY5e1Chceu5l4B8PzTMJnz2lbBZKGrRl/pjIyVh9vhg9ofq73pdJudrJuqZcZFL39mtL00DYJxovNgugP7kqdoXIkp11HyXs7fS3l23c80O9ZDt0Ew1UERaRl0ZTZY75IalIL9PQJW7hpXjn4uGXsdYv767JNJvBXf3ot/tUJhlOpsy583xIhy1C5gebemCcple2ZJIDCrjjPygiVpxayYWY+q5OTIicUE5XG54SbzYIq6fFAy2OrCXUmq/txWXey2Ugk6LUNVzdp+0AOXpfqG7LusBVy/CEHadgR929sw6TOOMDpx63t4E/jaI9/n4s90uOB5r/2s9bpVxYSGaN4mfaX6jmO127Z5ow5shdHNcD+a5gmMuY3GM6tXJTs4JCqAG7vdeIrEs2I9Y1XpCFsMto0TcJwESzw+ucXogDp5E9mZnWisX8zGSBkGtD+D4PWXa3ovuEJFpoVPHhEletdc46/8qBI8GCZ7UfVrIe8LB+6neqqDEj0CmaNCj+I7hOCzCY9Ev81OJFmgAZIqwzAm8j3aHS7I/vEd2yNLVUra7+cZDYPgi4ey69evU5L+2eFaw6vbVvXrbPZJvLtJ1vVwVBlnLHTvvHWsVEnK+YkmdDG9J3NMAUeYJrSqX8vhYmvV/SaM8VnxJGqYm6rTWLRmCkunFMXPSC/kwM3iODLSrjzPqWMKrojiwaVhKLtzDkoMAABwa59v9rs39l+WcnRWZXc2yFRDO4rmEudymLAS3GfxpK8z/tUKpS2Bry84eoerr/1QPllFaCsA1XM/FzCeD7YdDD+HAh0jJfSC+4vZXGEnCYffAjYawFA4NKxmEJhCff10uUG3fuJl12JYAVY3ctVgtvPdojlcCYoIT1AlfXz2aKts/+LZy9wz0ez/rBLqdS4I6rxhqMpxoi0Vl4pFcn1EHlVNkOS+crA160p69ByPYnpXG7fyKF9P4kgdLuJOcEj5qaczVkdGfbtu9tuY4gnD1nWpb890mBHiCf3WtRf0ZBKex7mAv7UTrYZh7eDJme1ErfqQgubNDzTf5C2OXbSwdXx/aFTSDYS1fM6tT6tclepq82AmrEqFdZTK+d+KUcWKd7SrJnTihGmv/II6vxQESZWW8WRB0IIvT+kAfnn6R8HJ0DBuHYN12RGGvqKSZVdmCO6Haa60NBOWgvvJlRLpcaCV+eq3ja22e/Su/5ZyTlD5KPnBtF7d14vdD8/MzWC4XZ2N4KWRchuUG/RAgWBV2nYbpsRZZdQDqdAMwAOsvX8LBm6vBD17UqArbGmkHNxtPUictHVst8tHNZyQoD1IIDd/AGcj6JuwS4NPXvYDqaWIQ/Q1dKHqE/lNJuZ/SYQwHi6tO2FiQ4GQUAsEFavnJRhCtsp1Sat0QTk1JYm2eqbcDsAMjfNmhj3udsg6qpAukBEJI5U2v8KbBfyvITx80wASMMwbp3noMAPf75Mqu8xEw/kxKIdUpQoFBaBqfHsstKTzdk6qyYwXhrjIB7nCRvXLhhv8Ll+ndjQWjHOVdGGBi0VuMt3gaSloC7y3oqLeBnE9I41iYLF/Ma1TIYvhFSTNTQ6NHLvPcrlQLJ7THLA+GHaCtqPrVpVgqoiD0cebz2FwZ/1b90zoMc/gEL37DccHoWuky9JB4vciLrUMlDln2dDLarwoy2mJetkjiatevXTZB9+K09MqfnlusNEy3eSCt4GInODCl4vyA+2L52TMN6B6x6ouAk+dCOtB7aDgeOr98/GyTJLXd74jE4wdVFtBdzF7bkAL+TuZYiqtg/H0vbZlOebtEB91InMCICcRiHc+ZJTbTOfpVJ8KQMIZnqPCEN14DmKysTHm5Hga32nalfxVlr+dYcJC9fls2mTClPBuJXl/6mj7ba7HvlQ7H2oD7WCrxwY/sIQUxrrle0O/3QOp8T0M5Rlg6EQYxcKsNybBd2WRjtyKkL0GyuvXHBuws0XUssh1aznzSFT1OPaLAI9jJdP5i7ytsLyjTGE0hor0duoaisqOkFUR3DIbYzcZ/EiZE0G3ywgblzdvnQ6DpeFKvJ3yYjj7P2L4/NlePx5smXFTpb9nG8Ft21CdfUcsazzZdexXNPRCPADX3Jx+uVK2750YiUXCxMfrtymxgv4uSS49H/ak8PLv/FW3NORIizQk4/fw/eUHdCyhVf2+6ioGCvu8y7Nc4uy8L9QOdv44wmPBIPsd0litHu8g0Dud5KGdZ/VQVJW2UUHODc4ukNpQDtYbaHRnWdGBp3A46Roc0Ss9I5Wsb8vaKg5BD++244FWiTzf67BARUsfDv3xhUJD892YV+G9NlYoualsoJG0XSvCQaBO+ITYf1NmRGOcAQPJO118e6qH+djc4Ij87O9xNk9LKUkr5cGHonYVUqSZzVLKtY2j7ud4UJikwN+iJ2TrPIR0FNI2s/bd5jy5517ji8H9WN2vd0KlADzVNvJIynXxw9QYVSbL6hvkgXavFGzgswPQx+66g2oQCJUMtz1uUnrG++ODCfmrT/nQd3eDs1X2a7PpADWFbPxiS4UzocUzrrkMOWQKfdd2rCneIU4Crz3omicn+F63/cb8pXektvp8rUJYtlmmxYcw3+FSRqfQnKNS7UUohnQRWXeDP+gNhMz2jd6Wy6gxjhV1fG/VMzT+TBfeJg4Kb9WnwEufepymf+3H51u7TYRE/pIwwY7jJjI/P0tdQquMM2TXvKy8Zg1F8ja4jHhsXWO/Is7tLX3HJwYROZ4FHR0QU9IeBprwGIOONeqGM7uU9hgsmS/t2fuexuXUU8lQ1vgFtkPkvfBPTqXz9ORp2/DEcA+91WYL7XAfq49Yqb0TpBrZ6QMrm/kn3pGaM8KnU7es1errt2TCiRb6acU9MQRSGheVZv1RxOnkDEplhxnYVgtkTEXwYotC2/il9cly4fIWr7QJ9wYTrFs+FKWOq3Pms0Syj3gXVUQr+u5HV8C5crWxQlJxHd1BO0W/k04gbhxZV0fQbpM/2G6QrC6YeCMLzaGkjwbiZEUbVOMyy6kKjQonmJtes7VP2iRFKRJImZeYReoouDYJQ+h8sYGvuD2hD74jQCn+pjr7YRarjyQoq7qElH1aAeKqZu2HAX7Gah3s0/+jtZ0BJo60+e+H9SETUmRrVhIKBSWxGAPqYmJTF+1kIwAYuliPTarGoobYAU/j3qyc0/12j8y2hyplWod5xziVxMALWo5VWurEVM3npkbvoAlpwpYZrxX9CnO3SQQgJzDTZJzcIV9AkIY+q2Tg7Hq/qLMG1+rALzoON4knQn2F32aiWtzPa7Y1ZJxZTcIFDLxTxOAIMXIo2MbxvICWGZYn0EB/DRMnX+Yj5+w2oKhef4sVhuVZeBI0OBIUcci/GS/cm/UocFSJ4PAAF4WocLHZ3g9wEzGEcWLof3FqI5J99OE4U14l0sV9ZRkP5n5Ytm9sOJlmpyzssSbAiE7XPboVCfz7kFZM/ct51736aQQIn9mO8/JCFwPb9xCOrsiVuOwkDlpZ33Xic+VmyvS6Y2JgkTuRszfuh+ghXir3H5QKO3BVwckXkfK9INb9+kZyJvzQQIO7w12yRKSrnA5AYhUaR98jaogt4rCwPP/26L1lZtGAH5wDLhOjLxH3+8Wqlr1/+3nZ8zOASXo4d3C3z0pRkkXVOYX1WtSxCOHzC93mst/T3TRutYkecIoe+N7heIOQZV6llaKR+grIJK+19ig/2DaqjPAKDl5306gqhyrO/AbCHZY/2TlySUxyAZsg/nqEERcCtR2dqFs+MElKKzmgT+WSy3iRPAo/rZgYg92GZyupXxSTmHO+MbjbtRDwEqnFJtvHq2NypxLwjQsodB3gp5pwhnWp1UZSrT4UIuMoaqId9MXFi1AWHPjLguG1RFKLC//8F5uFcKOGvjuw4GXU0/DekbU3vPAa2oukopd77WWB8uKATHCKX8aChHN//P0ZYAExpL5IkQQBYENpJpY6DojsjP9zm6LK/Cr++5hEkKNdfNsJCCoLxfBk9C7VkmCJ6pfdfRv/GojaKufUlLUt0WPDiGbZV+6i3t+XzVApwd35pEzBQTUuOee0Nrt5SmCUABeO4Cbu2kochn0BW0LQEHLWgWWYgaBfIzr8AOuCW8FwuCZ92ec/bpiTbsy4vW8msMdZiw4+Ox4OLxeeG+fMD2sPcGgpmDeIwo35HrQ3KfR+Sbru7VrzVx9LMrXgepr49O10di5wTBzrVRLC945TzmJW5X9G320cmpGsRe586+kevvvnGxg8uGdvYygvLRwpkcEg6jeVexsXhKs4UeyxDD40WviMEBNeb6QnzB93yKK6C2aLpd+SwXuCXrx2gW7PwlazeKqkpP/E+4/++vkTZqKf8Zs3/BaOYCGmTIN3THYsT/pobOUPyifFJSLZivnO41QxhkYOmusT9/1NVpNmP9oNg+GiKWyNq3JsCps7dfxRnMHPpVyy6IEYEeEJc2xvYp9m9NvXDjXJ32yGlEI/FgX8xIsS1XJED3gb3mhKux/lj0P89opHgyjVeZk+VC162eHHuIAfaLGQiOtIype+CO4//lBQHlks/1BdeIZklHKCKzglLik2hHrj0vtA6lU3L7zQIJ98w/MyZTlllvMbT+3gxshX9ZiVfIzg5EY10KV9pJpGwUNJc5mzzBBLPptls8gv+faagvinmtP11VsSs5kzjdSqeVVuWfzrIkAuyq+sWOhiqfopC0J1bfxhLM9loogko18Y8wHhCH4my+69XzTJPyZT9/y4MaZaJM1kaiLayOIilBkAe/+7uEvfKXxw1gT2E7R5/eCMbn9uPYsmPAHlCysUNr9t3DYb0UpgSrO0KDfisWHyGo5h0XdhyxYNCa4jicvmhmfROHTDRFhMU3S20BF5BOKjtMawsEYMonTS2218rxrQrI4zJijZeUB1WpCmwGHzcOvArtmjknXvcM10K3DFx3jbUjq9NAx3RBoKu3PKvyNgFzdjmZ5XqeRM1WiRRpqfu66ldhL/orzxEZZz3385j+LhCAWIb9jX1ilieckPFuR2bzp5LlR2tpbjDpY2K6VFXCdLTzYUcj7r/B3q0o29CL8NJjfDO8bmCZhY59WP3bqi4b6jh27KYQ5uCYMdgdT7RExFDu/tEKEN+42a1wsaqRCLZeTBKwCq9nNZ1T/vhQ2wlOvD8SfxpxxpjeBkpnVRhbTYBQDyuxAnvEuB+rEepdXzj2qKBbsBBfhw6sb149t6Ix+UyS1AHnxP0IfgMZy5Ce6Ls70BHuDTGp3kC1enqIr1a2HrY9t6Cg65ONnvkz1GFSxuHQ9ZeDvrv6F9Oejz8OlVt0BEz3mvSAW2dWS5ntsH2V1W25gj4KHPgtEmlqHWXRR7Hw7iLnvwuu2fk6IRYCOzqqF3QF4XdRpARx82P90HcyYxyRgnqGmEWhbNCu737F+2Zz+awghoxPDAKgqyGtbc62cIqSusY9g5rkrC4jGT84rsm47l4imeqDW0OYG2HHKTBat4yQri+/onX9lwzNXtLDTJpKvXGQSiCRIfJLNkWf3ZfNXAXXfcKPmOcbLs1nxFax2uv6oJ3zZ8yET54pvkKM/lJSPWR/C6bR2ZpcckKrE22niuHSAFe0dU2o4bwSBsh4n0OUFfNTQx8o76JEtPWLDsIy2VYrLXKOjHxcDvTHr87cc4/j68LtimtoxyfMJj83BL3GdbfmBKjnhCoM+CEMrV6R9k4ePj1ccRKivT/+9K11uAjxqqYMibnB+oU+eGAyHcwURaWNT2TuYdykmbo6TkZNJWVYe6C3pEToprf8BF14iwdGhX/qikcwy1GNLK3FgQhnUC1Tluz3iGJjWuPWTPX1biZJAxOIdbo2Ji0INjKU7uZ2lddFsm+T9e6D7MWSethHhRTmZjitg4peSoGN+FGK59SRzYQyFRVlYxbb6Rte9denw6/Yg038/2b73vZYGnW6fBbRfVWNJw+OERlV1AP7Pnv0oUb6jDA7HT6yyCjlURhoxcd82rdEGTxdBlOKtK4pibgc/iGZ1XmtWexR1j6RvWt7cZKfvgD619UXhuKfqEqyqNJzw+FIpfL1PsxPKvaDIGIl49xewCNUMtZfxnuLGuBpEZ8t1KEBK9uqKgYAjYpiTtqpUXDk2IiwlKe4LkD1a+2CrgkJtz0T33agYrnWueg0OPyNCwDcqS1TkSmjqqaUuOFLlToHFRS9wMDiE2DzW03lJohymylmUlKu4TOUj495IzuCpYWY9KqPVke51wCeLdJrCgPfN3+Uv4QqSzwxIAvZ9KUZ3fRXS+lR/cFj8q2tJlfFjx5W0Pqs5Je1N0F5wY5m1FI9a84amuPNmpdmrspVMDX1A2drQKz0+4sNOCgymb8xUSfmdRzPyADeNovdZEb525PuFx8zG+Ci0CuJVOiIKaPguhUAHjvg1UReIiLmW3Q6ok338BPmpUBQM8+XJm9Ww4mASA6L0Re7He/Zl+SnVZxWYeWY9HHHFXWNRYmJJLS22k+vKwlR3g9HcQU+jxGe/9PY1l+BGqHcM4SNjp7jxAuWeJlnnFE3R3pUBfh758cee02cIV195tMptFzZ7fRXIpJ4OvU9M+z0XOhRU+AUMf1IRKyeUXb2LgCrkIIDwDHp7gUc8Qd9VwVBEV0qB4EfAlqWHPXuKP1OcluEk8sGWiF+z/cpdNOVRPAIq/D6t36CGR2ARfmzz1t4Yq6nbWnIy4/su7/vw6t/XDs6tv7ACHss67FMSCOEtZSJEV+zxgq1GiODGQuZS5viR1BQ1Ll9qs1mVgGtnyts2043Ct/Wg1XqZlgemAan5sVDx06JP8aETtc1vFZYOrgl7TfGSKW5VvdWST9r4yOhk+GSMWEU5gBwUq7YS8xjQtLQ2a3+e+j+WWzetin+um7aNrnu/nuoOV2/9+MDtUHIPfH3H8frcigW+8POrGu8wtd0R8m6Jax5u4Lyhr4277C0jIFsP03Xe5czW3NHrGpDyl8NjqmPqVABlvHXlDQvl6xLTBszhUs8JhCMjHelacsjYiDAsf1Q2Vg6lBUi+I7W7u+jPWrGnb/E/HBktwGmEoK4y9NJNKMbsAKVWRUV7X1gJZ55+iwEIljE3A9MnvLExK3ld/9IMRD+fT8XacRf7D0iQG84F9HZzbOreyi6g+RLf4FrrlvG8XT+kbFtSs5tZF/m7DVVeYLjLuqx2rDNfU0duKg+CGFeH1d0by3elqjbmuWnqUqTbGozV4tYIDJzoYGzmduLOH9St/v3ttfeBlwSmxROoM6arxsQMiYZXUmQ5siAOA2Rh5x4k2dQPuu44WSloiXl1E6SqR9+2+dtYSNnOvgcdOAfe8yZL9I4IU8bCiIPklUH2T6PfTovf/f5kicssXg5eLXkYCJmxXJS9nh1gjIUjvup3ONQDwBOsWQbXKuXckoye3twD0Q2qW3MOkzvdtyqrDIUKCAOK+6FmuN1H6kCyrJ+JwZGPTOOzH2+8Nw5VY46wkoeGa886dJQcwF54vMfq9WXhbTmzv0mREEoj/ld41Bhn5YOIDX4ymIEpOEkvyhsQcgUJP/GyfTlJw8E/ApWroA5NItpunWGDakAq6tIvScjC5gSY0xoQM42mPk/bVHzMhg0TeCe1VT2HsAssx2ufGpvHQv/76OBbKhpD5Ln3cFb8ySzzlPRhKRzKo9UICwQYjqutiNdx8351cuIxwY5zYZVsKkFy+P4JDmhN5N1OwyXNSou5kjyeTrKdr5EGn6r7wMGYm/ntaLj5AKI9NOGgy0siOxgAwuYHFcwkfuZeiNZCiAYYRB4Hic6SLvYSDzrJoZa548b+ASfHcKpbSKP8Y4VAdPxwz7P9ihMiJyi2k+b/wOfug6VFJYSLjbMYcqn/7WGRGrS7txe7iisrh03Y+o8MTr8lnPxFWkROWzK0ZKxhiDKikKNdJEcAfZaX1NAL0UY/Rzz7xqYsM52Kn4u3lir+iLekvP2OXCyCEE0fQkRhBUGzw0WodFsvXnqtrK9wjtaenRpz2KpJ+E/vYIDCRMB/9H4VTvjnDeJ+JTXz+bbYxw14WmwC2GxU1bJ9Kjrg8wLljVCPM0hU3S742zWvnsQON2galrWLHWJnRkBVHvz5znhUwUMbhcFxj4IwMZS6u+LEVjMqSvHddObYfSb48atDoIUTWylP6FSUHidlwVJCwyeL94FL3PjE5apepW9JDULjzw5lcxK7Txwc7+17uzNw8elqrDcCxQhvVBjPnEw9QA3IyVf8n0AC5/dw8shNyT5/05P9EFIDKGsgH8vRBVkblIrv2hXcZDWKrdPy7z/819qanUhqb/hBpX7/eUXPxnBOxK+Y1dutVJp1Rvog7jQWxt6IUiQjVjtdhhWsUpCmtTjX2Hidyp21enqvgA3p7ciXMVGLuw7vqr09yXX91M/c8LklN+jNt3KsxjLw7nOrNQcVgqw0QJZ53oh2A9KJ75CBASXKbafM1W48hwo/gmvP1HUeiui+iq2vT99iWWlzdQQY4ksN5+7VPv87YIXpoL3Wo8rfHUU3wDdx/AWrCjDMAkCdKv5Pgi9zszHetF9K2Xtya5GssHSxVt0r7YF1WFuoPZzn4bSt7ZtwjivmuN8urENL4HV9Es7eWsfzkRuZLwtlV07akxH2sX+WZM7T8gG7msqLRA5tBE8d3PHiK6wis4WspJfmAHDS0e/fr93iCSNCRL8v2Ahsf5OiD+8Oorea9S6NlBgrnN7tNS/KOZAFMyR2rvt6XG8358q5Qus19PNkdVjwCYFSDXaZLYFmVAjYpMPQLtACrowUjpvLK+jPVn8oZVi6dNUIktvrVXKz93ymsgdy3u9mxjo3Jo13/gR4/OiHL+UN7jZpuDQIju/k9cgwlO6eM+uXziq7n9wSKNCrrU2MpxS6lLRX9vdVQqfdVx6K8bzR/C/LnVB2ZC6ROcRi1Lii84M5B09l8TLx/QOXDsS3Sw5WPvbzGwXHrFafBXbzEGJsDb+zEcPm9fdTu7+gi4K/hr6hgsqsbxLEjWWrhqsrztA+ztkdRTz7l6Mwsegmy7TfcmPdy4boqc9qP9tw9WO2JuIDqr/r5vZ7Zn21s500BWt3f/FifS4yaXF1qN54KjEhS2Kd25fVhFW6JkL3ydjRJGdKr16VpUXOmW+qyOgXiKREn8n3dF62FkrkpA1Bi0liG5JgQQBBODEXRoXNHXYqPKkYKeoJPrjMcOPdFSv8fprrmwP4OUXiL1A/o9AGAnIwgxcEZpkRkKWh7gCeSryNjgJMsLYvIvhztdWntyRdqOCdqIiP1GF6w5KHuD/bbKN468DzcgXDxQiwfzOoDADvJITxOmu7B0PEhiJPuG7vaRb73hvRfKuaDGiexFRsiYLwxlfZk72CJ2cOMxlN432lt5x8KDbYlmIg4S7wp5Ih+f84zv9vS9zqJZGU17gvr516Z32fiSLO/+cO0uh9XXAu/JEjf885XioeYo3U6g2VmaJFyKOcDwhBudlM8Al3OR/aBQrrLb4t+bZAGOP+t+bhk2JrhzAqTi2jk8yQJHLEm42DM+UakifdCX/Xtjwr0Oui99eMB3I7yVB6ju7Hq2orVoHHsTnfNMfK1Rv3zQNbx7+2ZVY1aEPzA/aZAz4/RLsh8AYLWkVU8cz7wKzb8a6eDXzMfoL6KiJ5bYLIgkrfHIUz6MnWZO1RU20VQcXQXRqLXa9F6MOmqVVAPJzNj0r5tt7gheE0Wi+JcDRczdSPcuFdWtl4MxhEYsedHBLqAI1MsQF4tOEtbsJw7cPqktlhxmPakSZvRfZJk3IG3jwlKs/GO9vCk9oxdDhKdAMKNEbt6ngkQWuHalspRGfMPU2uoxjny6JNTmcerSd/8E5ymEEaH3zz+9KkrbF83mSRqsu241gO06j2e3fPmJEku3jEkMm48snY6EkxToVpnu3W81syqIVmyuF2CP+Atyagblttctw+8x2z5HVYbo1ls7Kc782WYCIVE7vljNT3Z00QoOh1/4qJfvK6QmrFNW2zi4EDsNZL/qErJAk7S2ybgfoBEcUNCACRy48V9CgLw+yDA952Fe3dlu5ScjxRpeNRxj+tctbceGp29Yw1yiWaSnJkN+TD2Bmf/lZ/VI+f7HkJSfR0ejsYX1udNRQ0cROApH+q+PmvKrqDZTNmkLlZmjS5Ar2YRvjP7q1ZwreDBPYHx9r7jqRanImKGS7TGC0+jsGGg4tBVfLp0NHp/nL5NhSHwX+2+uxMRnKwpNiJ8gG66TQ+dg5MUqMRM875CmGEPD56RXbxFoLb2ir5n48dwq7i8tIq86ATba0AIHNL+f7X7CPv79paz9ZzGmwE9IhG2t1KUz3UACU9TeXiNeEb8/g8PmevnPGSrjR77i28tmO0njss/R25h8VMXF6iKQiSVSjwaB55Mmt3GQDq5yWiilow5D7GIQ5bWRLQ99L6+rl1S6sfEHvbJUMhUxkUjYwpZ6YVrBCnytTumJCxZcwKzCKDxBNsf/72BtTj0Ln1RtX+H5NIe0yS+MxObuTDD+D7GM0MwUIspLe4uKSrKHitX4hOlTkczUCDe5/ktn9RRSq4zBAeaogMqmwp8X963Psoo1StiuIpeFzsK5Pauul5P7d0D+x5R+NcHchm+Vq7e792f2xEmbVmMwMdG7J5A4lMLlz4Fkj9HkHVBSKsAt32KG4D0qofaXaPCS9v2aj4Rp7ruvcSH5OvQSyjN+68h/u+rBh92QWMeOqhuHo/IM/wqqWsoXtDhQLi6H/piO/g9d4Z6eC/EJ8/JvcXem/3/c1+wBrgdqhZNCSRGC/xfiNvPScOj6Kvt+IrljLnHKH+2pmboG3UM+ahJpJw/87u5fx1Sr02qqClPJLEckzvbqXyIJeTogm7EdyiKn4FjifPNlwYweHMIvOWqzA7TCBJf/Shx3BShf0c6inkrjbFfcVUfUPsZPZT0c3i8rsqy3qHPbXfhlRpedMVAR7JD13olzXxGBIfjj2NXlvohxPzeCZZZ3etlnca2BeZnidPEgRSyDH1A+w9QwZsUDGym4xqc+hGS2fcV6atH5Ckufepei4vzWHwv6KLk0vaZIonKSNWvisb/celr4k06GGt+Mm5w3wTsNBoJxocV0EqDlnJVZeH+zx05kIMLRPbBwmIMlDNvUFysXR3Sb1m9z9M3GjzKWHT9UcxibCbWKkvo0/CR+zQCqBT3GIet3+Hvb0GrwX4zyTTarcTRrJEKmIUVutPxOJwHfays3c6MtgMNP1Sq3jgKq5wArU0jHNb5MQXkF8mGaebNAV9vWj8kA2saN07bttEgIY7NbQj2agKaqy66n+NCKDc1s83CLKT+KUwbhzu766jnpMFGgdOUN1ZW1VBYE12pF/gFcbA1Gk7fB7rAm9+8THuV0zWnaXXne6gDgzgN5laPOQxZvmR9M64f80xZHo8OgBqZY8NJf9f8BDLTXlL5bdNd4+3ZdAMNMw8sVvJYfy7G+YcVNbKj8T4V5jNONkVNf/z8Cf9j+ji1uJov3xSD6dFOsZ/yXA6Andh3lHWAfSpyyvm22t5MCSbUQ3k1/h9vDPnfZ5o+jstCmm7+5hdfX4j8nMwZwVbUeRUSH4Dv2VsgrjBJ0/pyKGrey8FlKqfblLJgLa3IfejvXN+TJE+UCVlxrUTwqBeRdL1t2LE9v8zLKceEAtmNXWvkShQlmP27CJ0lxuSw/osFAK3CumJ/LttusrCqH7Vb0KXRiTmPlWS6WQR9/G8JCW3TD2QHdFaJ6VTHStkHq421bLP2WdrJ5L2E8T4x9Bhxv9rY8d99s53uVRCBueQXZDCQHYVRb69fYJ83wi6oTh05qm4Q0HMzX4oyF6yxtbKrzWYvoJ3ZaRFwF328ZtHz2S7X28JkMY02MnISeZUE+mM8v2WDdoUewvUV29Ll1sLrSGVLmiLJ3EtdY5c1Vu+dETDV1/P3ltbVvFBFR6fzyyt4PoVFR173wTFuEHT5l8p8fcNLxMgeNcvxfkReurdHxVURXQZ3rL62XEexHDXSKG1DioZMJM8smCHbnxqFQ2OWW3Y5E6WpUhdHGDetU//jHSws+lkpbPxF++BAdMuwtniAoyY/e9nTgzQJTTuWWDg9cogFoXk70j4xE09oZJ/0h5PVLpuiz7CtUNMuPELq2og+d4UtsSBp4ytQ1gYGnvHHgUcSgGUX2gOsScL393K2ZsmDD/7iiN7cu5Jeh2fy+f7RXoi7HCzXQRRazyVAWhk8xdWqiyG4F8nC3FPm2rndp6dI3Mrk+/+UL7dnoO3VLxCfn2EMUUc8kaocEOwH5grgJBUQj3J8bxevIrF06stc2zsCBalst8oj5chn3Q6zyUPfkvsqogqhD49Jni/pF68hVoof0LuVS3iGZg68+bdgXWZwj48dp4ysDUvdPhngjofvzMzlHFzzyGDLRu+oFxHU+0oCr1FgP5986wRKIrBUjEpwzuDWJE961+fRdxD/VtIoUolFv2VQX8r2nisQ6t0BnglCkHB1DIojMwzi/az888LVp6oatVwjah+CnNjfVP0R8lKIkJtonfO6C4jjZOwQq/Dr7lYRFYBVZ8L8YCv9mlPx6Ubcipc2Tb6OYrbxL95uxNo52lREhYmqXjQBR6aUKzNb0/dB2riqdeG617xD0uWiuKG1OFysjQ+5YC4Jzhkfa8nfEPgupQgxfVOv+nU4ryIamihdZpMYas+ieAgd5nyer08izpMIv0c6B8deppAoAvnzRQG2TruQ0mJZgcOlaP6AmHNVvZwp41pcIYwUWb7fNqxDfTjALO8Xn8ksqRJzsZCRQ4qDCCjIOkR8bP2+VDIHJ2qHG/ffMo7E7sdmudCjhTbcVGrtGeZEeU0tFf9HmhwgguAnM0JHh0bT0Z7qNxmDEpFGmxgjOlQHrvDHLALNSvHkOphiG8GldUcnGLX+moVkndyz9P2yeel3zD/fH68/704mGQVEKlE0geplZDoq7+LEaPURATxlIkLLdTyAMdOVK2k4bagWw8PF1ilp3jCZB9ohqXANm37Z9i9EVm1Q/93PJriawMZFtyuPfgtbHOt1E5PE4xqFLg+r/IA9eM9LiFpU62vRYV3GJapPpVR6XJAziZsrD55Ecz8p25kwrATPw1wxbTfPz790ytT2pzMAYLO7NEhGV7cszBt88veed38EtOOvw5QTZ+bQdl/i4dgqVVRvxC8RS2GW5FZZ7qtWXwCr9MlJRX4u1DhEnX65/3N1NoQ07iDqVtZ4reOTVJ3P6sf7x/7eRT3Ymp+lQ61G6aieyfniQ+WGD0uPpVG9mwpG7xDEzbARD3Oq916DUV2t+bYH18bcIyzRlFt743vsSFFZa21SDN28xXWGUFs2ytQzJ1Bo/XVqZk4Yvz7Wd8U7o5fdFu/t70SPZXD7DQRvOl5u45vS7f37tSR9Vj3iQAw7uquKXtgxzz39ud7fZbyzwlrJtY14KjTAR71EqC+qdB/Hhi3xmGrOQepa0pepAzxjpzlCvBdrAkhk94T8LeeogoPff3TCHkgOmRp4IsT5WjcdSciPuiTrRZ/l6bx3MwThLTWsFfXxCUJOeoLoS8coJ31bm0FEgMsRBR2i26y51QMOGzSuKAWPa3bUY50cQxla0mQbgnFBf6p+kwn7S1OysKFcOEa9xxYq8dTn7PwYzj73C9EIGN/Iveve9eW8b9QfKb+2xN/xVTSG4NAjNd+wP6E7B+NSUKmdyyXaT2NuCnNeEmpPENXYowF19OUNah5B0daTIsNExro29ld5TLujY47Agj5UAy+5SjJNy4pZ6EKaXtlFoHqOdlPW8Z9zP/caVxod1PNC/k04XFMrEEzoMi9mE02lUo7xthuloKE1UDC99RPL37iPAY+puop/JiYScFwWUsjpTxXiF0lDMzV1+t62ABWQfdazNBZYiV3v1gxajHhGPAXjdHWdhtzEchBS6pC50Q0o113QWwqcgGSRab9NqBTgBmIAy3iEE6nxRtenlfmpuGh+sobRuDCegEO+HCofCyJx4ahk5AM/c0UfFuO1iPrgwTjSQ6yMKrchrw7jp0BQpQ3phZhxMwJB4y0OtYz5qFF2rW+ggsly4Q/kS0+tPlQNcUf3jnDva1c4Mn8OXxJIxuOlNvcV1Fm82AXMXmk7i75IiTjaSi7FUo32gEI5rGl5b8wGr4ZhC+iyGtSdwn71zoSfCQNN0AHwA9BpFZjamvG+hbbWThUiKd0KrWUqr5zxwFY136VjeHK3gDBx8Wgc/cQw/uFJqH03qIak/QI2uS1CoADE/9bl0Zq/ma/wxMX7om2fkbEVQe+BXl1GTQp7OD7v9pJZ6W3Fo3FwDXNFcjMO+urCn8IOujzMIpt5T2pCSlpa9tJg42rZEbvuJ06rHiR/un2xYBsgtW5x4NYYeeBa4bcar+oJLfFjJiuWT/7Fu4t1/OSHHxfEoiH3TEZm8YLLAbS9WFPuo7EIbEtZxZkmQ/HieOa+uWcYrkCk8u1uXCc5nwD0eMdWfJRAGr+a8whX7FztUMVF21+gh2/k1hcvWH3Vq10+Y0BH4DX54i9vg0lYHQXFEKTg4wbvMfnKPiw2nf9ggxBt2mnitxfrzQou8f8KM6CgIxTejqzXPrpoDEQPhdNj/CY1IWPniisyAkzBwNXbXYJ3jR7/hzWk2AOUjypWrKBY66oSi1ESUzBMd7hli4we183i+kqJ91C3E3IKxRn99QVISS02OfEVO4dq7IW1JA/smzbwkYn2Vc0bc8kbcJ06abMIlgJAxKyz7wMc8bqVGMMjviUFp8B3AbZdfR22YLGpirQlYelFZ7dgOn9Nu3Qu8lmdDFKFZslIii9csKqHgGwi8VBsWQk0wg1CJLcV2ntsakQHxrc6biVNaM6Ym5CCb8x6sDxV85NxHTfUMjfQBX4SXVAXFHX8vvPw0YKvIh5XoOH/vfLRKRGPJFvwws4tpvMSrh2JMuQurmoSjQFZulQ5dxSzIfZ/zYVIxJFEuTjsAi1z6OSt0oUQXjaSRZWxmZVwAhWuifdKMQoyBvNvkUuJ5VvPqqA3B4SfC/pbtDO7oOy7S/1eDAwuv7QA/Be/3lEVVP/eCap8CmgjmWnnUn/h9v00aFBCcLtlTz1WivMXEfJI7JV485CUf1f8SJFbQUf3miSqB3XqwYra04KnE6w/VN0Vhs0LHNagfSfGq7nLqbP0PXbXwmYNXsORNhFRgWxsxIaQAq63uNkjUkAk6aDw4h8lwy4SdAr8jIw/+fSTel+TUFeC/88sfdP7C3DXTLUX7rx2wo2R7Nem5T0fftYZz+rzRsWvnaClnf8LxcUnCOC+kF8eKe5z5+EnAfWDPNeII3X6OFoSrUXustRny9MzM5YuuG2s1ud5fvgh9wB3vBP6F/t96C+mES8HEUGWJIAthSF96Z6u35PqTI1ZmOq3xtprYyG++qRm/G+o0t+T/0MXA0erajvttg7mnfSb73r5ghHrsyQXhFNyx+rM2puMkqYUNJeJsbGnho6zLhKha9XIu7soEVeUzAX9R+NCSoNnZzvF5Np5knniRmnqha1zXVmzKDTfnorfm0U4MbrU5whcpP4FGSuPDRyf7Bp3jD2EVbdzPO5TQrN0oFB0OEypOaqZ69OEqT8EGmjIkNL5pCJ2LMSggDXikXQk0io8Oplp1EW0Y14MdKXDdIBYLwXeUdZTlXXDfSWcg48DUb2sTKCw3hU8un7y7Q2uNOhDk/O0qWrV1VDlEpJPX1HDic4Jc1G0G8y77lGSuUPhyJVPXO3O6M+2SgcsK126j9bWzKz+ahYqx9dPTEjvSP47/ugZj7GIvJbLi3HdxCgv1ZfSS0BcOndZINW60+AGWrqLBJHkMeWpPYyScEvWz5vfTOTDeffMF9chlGLQfrJY83P3/O0UqxOz0Lmsv8vfB+u7cVRP/TD0nZjwcZ2EOA9482iRuS182+yV0IhFYA8vb79hMn/HfwrQnn+bRwbQ/hA3fXlYbq2rHpJnrRHxdD8VnW1uSvl7XLvOA/m8JsTSeoIpuWJssiRLtpTJUmT4XsqKbqovPJja40YkbqMH7ITwq1tS7afQhSllPgZXf09vYiExZ5Ztx5awWWNn6tt/43qukd9ro0+uzJpk+8n9vqnnc8zWBJvOnAtM1lz8s9h1guNBdGMIxSTLPpmZuEZ26h6UY6w5N4WVyCzbSwAlT0BfqfUO6QWAlYXfPji+gVy2QyLjrMQTEcjj5ezb4De7OqA1S1TwJxu9WS2dHuloPkrsFPJALevd9wcz4xdZkHM+xAmxrUouHUN6eP3oOobnWTuiRNXJRNclS25f9IUow3B7y56ssZ1il0ly3NKBWAI7QXkRJi4xuH8Zknj5+NzCmUkxaA+je0HnTiPJiIqnRZQZuhCK7Ll6ctfMYMcVkpHBegeXxDCCY4sSnA8u8YWtOS6E0zgiQ+uIO7o7Jk7hxvkMmlvX4ixh/7tgyEXISaR0vDUtnjIkYq1r/Wx9RGCLmAd5mSrcxxnzTGr1apRVAz1FLXn7gqxMRxBq++nz/CtTRidacCrMZnvGF0xplssIAA4D2Lp5ybKtQAJVM9i1O9KcLzMVYgLDwL5j+vHhrS/xy5k5yeSVH4voeOfDvlkgErWGHNwkcsuDfbLF1JNv9zM7jdw3zkkkmsnymtY4u6X3swO+UcwPN2UeOLxHwu625jwaWQ+2PHEBEEeFwV4lMu1PHxQta7QItpNFlmvp4D3nfGhNuPhj4aM+v4w7m0Yw5KS8hLfbZ9zk+UaeokN+RjGehinq3Gwr1e5Nftjh0DOMGIiSU/zkJHHXkaLv8XrBArctn0fIxxbBFakckZlAYReDkr2pbCCunr8zRXdcwooTLgsbIKzH6WMFZEVaWxSZh3atKp9ea1YhRTsXh5D/CPweRYyPO+I69HSZz3mqf0wqNe+qHbuRoVn1tbL6V+2jNl5ookISNh9mjChz/alJVaptTSIpmbgtWJpiScdF7e/8oLugRDkwCkXUXklt68oM66niOfCodfm3wu29KsCSsG8jJWkEKsdNlV+oWsKlcJNzAn1hdQ2GjcUwz3WWSW5MBeu2q/kQ1HamK1uyU4Qy7URb7ejuFuOfQSCh0w9OzLKsIoX1OGHd75IbguGmLIwz1+Xy09ef11svHCzakY8CGWohh1tGd29YcwZ4BOsSGQ1v9rkCa+GKhMeftgtkRyYOZoUsMSrEql74+LIvvtplvC28wjqhA/DXCLlCCrMevgy5+CsBHfn3xXr4pSEKqbc3cuW+NJOOI1FMFagk2MiUz46Z9HFtPsNbwUZ7FsYyVgFsF6g8iGXCNjHqth/Soq68pVFYZlNADADnniH4cPkmWLt8CgTFGtYv22MyYJLmdBHNgKaDfdk29Kaknm2pJchANL33QC75O6YaP/vlry07PzoZ6/l6fVizveEQmltiPsecab8kIIO0x+aW+X3/QleSbEgStHF/N2rS5ujpqqF2GHulecADhg7uMNGC6QSn6oi0vzwWOUUGm7fO0w6HPQAb0PfLz2vdOL+PpR8fM6UgclifXPy8HtZj+U8HvQiktB6rA9hPMBy7FCdlaZRgs6UhrzWNTWWn5+iSd6zNT8ZVJWs/9nK5TwSJyN3Pjcgl7rBxaKnlOUoHPkC3hKIjwM+W/GyW+HXXHUHDNg+JVxMmZTx0KXRbTT8iVwY/6LBruIVLznffGR1/8lzAZHN/NcWiVBmQn9V8vhjxpiLpfXZ/giYh1nhWTnqVzKhej515MQTdm1JC/IbSWSD0LXBnDnFexsNyo35STpCLOwdqjfB2W+aaBqGBXiWb03uVZB+CFcYe83YPcPvDpxyNstBy8LnAmBULsjm9zO7HUm+HzrHdKLkpSyN6/V7CeeT3dLLPjP5WS07bZ1DVEH3Qnpp4JzjvfqNygdj6IxoEjsU3D9h29XZuxqDbHgdN11fRC1Ael51wD5NRHdbOqN1v6ob00cHdZnwTaJM7rzhvfpo0QVKeVf1LlY7+k2YDCHoR5USvQ553wLG8ACJ3bdMvx2Sr0i4mhYXW36i473jaoCV4+NkAdF0sB2j1CWgnetj5h9RwryyQT21asgIGPEXyjzjhBVp+cywGMR+sDopX93+csGe/Uf3JHPYiylbXlsf/b9hXd5YBg7SaEHLUOfrSNadIDkvUrhbq2qAfaSITfxKu0RbVEI7qggy93mdp4gVWh622KIcC+TQ2jQ5TDdtzNxjtsf5Q0igHmpYrvlualOAkWIGueRlLFYbzVgpYhWxHbbOh7yqWNpb6XC0+CMGjSE+PtA56GG459gcpEhWOp4125nAh+dkHLSjy6/TP0OhHdDhEvibrmVcOVpZ5rw03cmgLpI0wm7a1Vv6p7SBtWXjN3LgQLfr8QPVRSiQ13mjDHgAFLtdzBJwNoqVAcWFWAI1w1HLPQrGSUAYx11nZmgaVQJC7Jy0bPRr1l+VlW0V8iHNrRPgj0jDumtyA1wVPIuATLhzrQS37vA3xRWGsUf+7YXJty9gIojhLOh+CZHTMnWMzjDQ0eiUlNyPfOxELBL2K2JsX1LNlBfapXW0iBmVeUQUlj7QeXd0ZpQ6qUptR/QsWSpMbgWveAEZqBMVjdSMhsss+XtD/MnkO0PQz8v3O5woguNAZqhGCakK3bHxqV9fkq7OkYYCiuXTW7vPg7HNmaUSICe+jysN0Ttfb7/oSAt7VBX/HOr/uTM2S3toct/VnsDkPRVJgvG/rxAonxu36x1caw1trSlSSbtOT/3xZxPQclh6QLwQ9aigGde/ubNwJo//AtcT0WB2BmseYPGnlmxgRZaRNZdwS8mzwqf8Q1K4Gij4BzGgA9OoAkQgwPSnwqTWQ1xFAvwZAgRZY9QygJw/At8AybAHbkQMm7wDbCkBEHnh1CmR9DNAfKaCqQNQmADUGQOQdsGxjwB4NgOfqgHW4B2xGDtiiBnJOADhw3EQYSygAMAAQAOy31p2vje8LyMiHA/7/vArHEulIUKI37WlkAx2ArMhgSlSXBIvcV5dLh/SVILkH3a3gozEBpn6MvMpY+pzfPAyVh4oo46YzZ2/8TuNsJrrWRYD9EAzHhfLG2UHQi5LquCcb2veq7crJCaEu/Uy67gGNYPcsfejFYr+BsyRnbWaTzqG6xw6sfjVNVjtmhACJHilBDJoHd5h3OvPj2MuCMScL/sGJ+LCYxXk55YH5XxlmXB1MAhOaLpjbYmLTAzhXu885c/WiTwbIvwND/sSYwwKFYpsv8yLyUXcjngfxEoIxcbcR5fhj0xbSAZjWnVahvD9cp/A6KHvNEWzeG05jOoUNgQ9xfkm1Bv1ISir/KNeX2mR74fbxoTPdM8cpX4Sd5ZzJnwZam00w47tLordwAfhsshHXgdqgPYzQdJVFGwhwGLvfGnVsu4S/JJKPVlD34ZNTyyNVBTaW7IkWxT1D1DZn/8SQItFv2I66kJCdXnJ1hPypHaUZa4EHYwnJ2TGwJlS4NuxeTqrTZwp90TIZhhNp4782LSMN/gCA2/YYUCvIA6JkOGoBlOeiXXYtaQ3G48SOUAHKfJI2cz+7xtUB/zTvXamTqhPS2waZjZMV/FF2jD+GHm07RoovIapwQmcbBE59GYcjCUlhflXNwyUkLTH/GBWWMnwG3PZvSBwdieQrh1VZe+fQvQWmitjOzbRxEEjvz+LOqzPXd0ZRLIzMs//GFwPbE346tbfkRxmutruktVL08pxVjAiVDY9D7L7lz2Hk8S13kCWaVoKjKAtXUZBLjXlvGO1IMbkOPJ8HeW95OjmzFVa+SY6dxjJEdPRDyrGRBSRn55mdzqts7wC8mB3Cxqw6F+cX9jJFwPqqZ5wkCcshCVSkI+uQ+GWh86hebXcpfA7hW486aZuKKhKKyvjW8pLdA9D7s88zl50vW0N6tpseFt6cWIIVZJ5E+Dos6XmzACvvRfyeRqnXzfZ7Nz7dvwaaqNG81CVYQ5Q3Ht59LvJyE07pqIkNI8Aid1FjLvpY1ezkDiHbzWIFwebpZRvSI30+h0POyCoieS5Vj4ma7GPWzK10Nj93tJVtpsL+E4vAwplFFT98GLEZNnB0XeKytEsjRdJiL4RXLwtaFfM+4/EEwFvNyTXy3AF0WpJz6QFVdz8atVdDL/XvZkATHtNV521JsncJVahkpRmntE/WgKDvDykdH51xZXCeIjvL8A4wbTBDRPFHnqiyFG2xSI8vy6B5XOvZDd6KhCklalSceMcPytUrTzTvcS07pQsV9wiJEh2F+MeiGzQgCGorouqicfAnVZmoAdhg/+/OEe3Zd81QrT8gsv7kHNE8OWJ48vj3xhgdPTClh16f1+kgWy0pHE5C2nLkzlvrK4AjvbZvfl6iKTFa0JvpIIZhGMbxhVxK1M7sdT74oJ01wiMVYqhEEWmF1+jFU9Z/Og0pWvWidLe7+hs47pS2DMMno8OPietMsLPBSVtWOzlwdc5rmR4Jbb+wXWwY5DsJ43jvsADfAxQmo0RWM6F5wnRiL07SBmaib0LPuez7szUOYRRv3yO3wdqG5GBu8OzPlKFV415MAUMRsm9FRHTLiQmr+hen+Z/gPB49zPE44mzb8DKurtodnOWXzjur4afc8N3w5zvqlkZnBplDIExm9d8c8vpoyvKdxaCwoCeNbogGje0ic87IVHhwP9XUGHmwL2p+K6JPHKsqiVX1+/vof7Cqzf8e+iWbofwNBEo78YQNaJwSXCC5JlkPQO5t3wB5JE1MXeZ6CLMBmn499NTSKfPNGMy3PVJJgHlsdmtcIJ9zeCMWmheGIj251+sb7baE3fIilzDXuB7uAbNTC2tcRWcy60rIZuOldQKrPv8Ddzg2y65o0amK7uoMXWbGXDsKG49vk1R5AxuZGUxVT1b5kTkD4REf96nmAvWDy8EyWWshCJeptLprm/bXij+xEUrbwFbV0AviAUhPDG9Gvo9Lsl0VepVoQx/iRqm+z6VE4o6eB1AnS0XlU0h6htL0Fo+1NSqArr8PWq8w8bHy5bueeIAC8vmmdBqcPxcyA3oxbgPoM60hD3lIVyzUv9eKonkTrqT5D21Lm+6rN5hLen1vWTuu6Jqffsg9IBCJEIM/VMh51Yx6lN6pdraQfrYRRBQR6thcCwnvEOvNA2ZNPEEin6wbxDcizyxT+6WE7BSJ3kweqFMMacBsvkJ3jxl1H8ZuFWbSR99IrGaQtKujRf9Mleit/TIE/ftVvfm5wHA8Z4TIH3nfOlPWyx3tpUK7qK2tYDyjtsOTeT9/zxLgsM295NY88WlharFGzIAQnS6tTROvrY/ZfG5zz3lInEfduFrLu+utfHymSdo6/h+eb5owACojJgYMt2/yMXUmVdBSvP3gnEK3hZD9g8/tlqpAi5cl/bYQehiSTtdcTKmaqy+OTAsGd50H8hY6Pvi3J7M168ZrtWh/jr7Pc6XQuLILJLIV0lJ5DDnnm+zlqdBIAovvWm4S6JkhxqA+eKIKI/ZDVEOmAqwJSUjBu3J9iB9Vk3BrDya0wswIQGqK1A6mW78qsNgHRDWcSSJQgxNG70A23k7ANlMPNXLsPZfQjxoyp4a9/r8eifOZQjlfRSXngCZA48VsFWJzClVB1kBlmj31KReXp3ncQuVW6EnCpUH9Nu2uOOoDtbYv+T05Sfrh7Bs/JxrLnwA0uZn3Ab7rUuBYBfDyfKewm/BDBtK9Uq6aazoiwz0tfyiaSdF8Rp+cE8yzq3dvJoxSKW/xbcPG1g/0PJ9hGIbhy+1pxAtWHD7KcYk5v4Vz6v05DumYP5NVgsh/IixwDav/b5enM3F80JaEAyO1h4wLLR9hGk1PMc0OyoJDuV5tX/mrnFKeq07+hjJhiYP7qHxC5FM69Hp7e/iMhvSzFVi4gYR+rUndBXcI3l9g3cxmg96wsaBaCEwc0KFq68YdIAz+PttKCO/zLxxgDsK2cMF+LqHtcc86GCoNGc4Omzju07tOH9Q87Mx0pFXiPeGGi/ego9Cw1h369ZJxhX+wwl3VKnvzYsCoqPkLj1MdXjPpTFIlmE5Z50lh41/lhOWUm02mCUKD0gbkxpfrsYVm31cvTOT4vuyzg2vPFFSnOHOaeRSH23cfh6rAhx+VlUJNTVSDaLec9VdEXXGiQ7gyP7UeAMRDqYhjYFqJdLvWXKiRJ18eVOzbGKG6Ue2dr0ff36OFXCAvScKSwHWw1ytXMjiD76NEFi7oxcX0+z9zWnBHFFCM4D7djj0JZZaI+AAm0hEj4SHVF16ZMjOr2Fkx7thjq1YMRkuGTb2KI9e73x4dQJ1zX2vYy8zX4nISkGQ6XGkHGckFU8sRYlZVVMHlddOJzYSHmA0fRk5OPt2B2YUK3ZnpzdDeXzh85uiEM+OxW/8iFiK4lKAW+bDecZfg5y46aV8RL4mM0vRIqiHiPZeAIR74xiIawjueoHsPAUb64/ZEZRSzSPuo9HSN7T7WDQqf7hS8ii8l+5F1YALnW029KFux/CtciY6UZCix0AHrwAXC+pNIFmQDLjqW5o3SGx8sag+qvypXa2Bz0hD8Hke6l7w6e9I5vAqIoyu2W4Vw+L/GbI7qErq1GTeE8ncUBJXWjP0DY2JMUPSvaZue2LIyx9gk94RfZgrp594+L4qO5arDgR+llZYu0dH76wJh3h0G6GkrMwSxwKDJlRN2vCE5mf/feDeb+QmCoUw1FQccSVHFveKVsQ05UtVhe/kX0/i5D2osrK45bXasGvfRutsvrvpNQO2db/WzBZejRoiFfMNBEOl3d/8xqPNydMtRs3uIaypPmcvpLk/y+nXAH2Bdsz2UvJi6lm4sIgZTfewlv/onYGBeE99Sv7aqt1KVAHhiDbHER+36pbwu5X/qGbhLIDmGLiO+BLOfJv3HwGNOOA0BS67DVJVVJlihMqWTvKwhKStS9OlgCQYq96IJfWPA3H4dJdFqm7h94A9OsgaytHUkl2YzMCHddjzfvL2W+30fDk/LKG+XgFMtsnNnO5bKipv4rakcQ3gVBPAkYkGru4aCDGLJdrrWrHIkiQ6SbeGsipTdPWCFOKQrEO58/vzPFfJwgD9paPUIw7Ej2UU5KzKGmvBqciQgm3dWJfxU9upW7EbW0SweN5D0veRuGIZh2DElP6yjGnW7iPt01XhENNu4+cqk3zr7Itwyq5L8OuhNVpuT4QHT4ZtJChYmOxAe9hKR9s9A6xoTEyeBuzp8RwfouZFgvVqw1xfQXu4zWBIlkPlFSp6TVVidQOuPWXBPg1BihRMgq8HGSUdSipkwqMxZ6H/ZnubdedVFF8XeqG8Rb6VvOzj9Dw1iOPmYBizgKCMGvhi72bRNqhj3UbfF0vG0GAINV7unKFDjTbRt+YG4TDQSFROxYCbTaRfQZEwDeWHGS0XrmS4a6Hi+dCSHRnB4evhFkdkxg+Sx39M/udr0LlTBUFFSs3qRqU19RxnMV0oRBG5YQEiw68XTGjpivTzigUUhM0f2ZZ8mJDU7aERkgOXb/pZFAcBKPM+e6rOIBCq+/xTl3Urzfy0Gn4hTuospLJA52P2h5+7JNb80lPlR5XLExvo+butrHIbUUZJDngPSNlWP7ES2B4qMqamSg6UJjHge+X1oXt8xTyHtfN7EYJz+k1uZyk6z9DU8Nqr25zSoG9/x1D1UcDJ8Y5AIHmQ4NcabwOK7BPGD0kSagAcuE6YP6SziZ8DMzEzqp0LJcqVDv2ooPI7A8exGVrHw9A4UFQ+95WIe4sdjK/79ZYlruIOFLwPCrqWm/ULPltIRWET+RQQIHMeq0GzvzyADQ+vEbThlYIwpt3aIz2+RaUqGpIuH0VOPrAy78wEiT2shiuoudYYDw/cpmtXPfDBf0HLUozuIdIQrCmGEDdE8k70C6WW8lPIkiZlnCXFmfuvoKNvej6h/oypCq0Vn4F92yje2UtXNHaDhTYmkReNRM1RxxOUZPMPUqLdGKZu1bzXeJW55qz3iWR3X+qsAgShFp5nIZEwnpJtc9X6eeB0smPr09XrGe+o27HJzEgVZy4tinR1OxpPUc6Q0XpWtG73ukIwYAnv/6XVqsM85TTgN+CfX1PpvgdvOF1passxTaCqo2nJvz+a2QmpxJrImLJweeSIwIpHYxPWjWv7Ftqbc0hBCVSRZwGplKP2LmOs6+eXHad/VstV7qYBaLQtIrlt5IG6yhO+U26uOFgiv+04UOX5gX+s6Z8ffTMoio7HkuDv9f252lWCmkzeOPKB3RHqFzgSa5DK36hsnLypeAvR3GLJlp9q1ooj3FK8oEn+hmYtZhk+Pbw6G8+qlDRDWQssu6uFKAgBru9VRub35JWAJIgiP0PQgxN/FKQVfpPZKYCSHg3ZkcouzWEBhIr4Jd5wVh380OLrBX/vsA/7OGNvYxDpbUSp6jm5uDJKPQtFvRZQuOVeUC6Cb+K0LEw7h/tM4jjpWGXbEp8pnRqXvQu7xpOd8cJrfN0+f97qu4hy4wHoYL/E3LzRKEp7egsSWGMMwDFM+xTNemJV4X8qFEsEiqCDF7EYr4JoQATxPXrg8ZN7xKo7q3YCZ8SqvtYckjXoOz17vInVXFaY7lXO/iCvnhZNK26PY+n/FotLqOIu2ewbL8IlW/k6bHhwktt8WhZ+rbZRK1/LYcAfEm5YW8yEyYuEjhpSbM8H/cN87jUn756UYrZG5bAVHLItr6lzECsUAvus9fuDSitnWyMjt4W7m0QIM2jdJf35Rc7TrP+7wepJbpojCL4yaifkTt2uHw4T43BGUGGMdfRwkHAhJQqTkPnSG2f9ytn2tUXrpyMh/DXepeM0mjfI2f3rsgk54zp2jnxxJrSEUYitnF5J2EF2eLzswcl44WQJ1HEXSgaPN0tsmg3TuQT2T4LBWHQbzJsZSU8c/PG6qibopZMuvTVIji3k97Wl7iJtKX4xPZsFE5x7UTpFLYtdGwYPYascI+MGu8Sk90lhhikIbMsxTbpzmfPq2GkqEnH7v/Qbqk1JLeimXVIh0sNqbJkWBd+BLoXlMYmLtoftvFsXIfnD9fOedwOj4aDKW1QAV7gnROQRA5kpEC5SfM7VHleKea3OZrMBy8G88Rolni+aLYMnHvxow4WtzBedkG8C9jPM5T9OO5XJ6QZNj0X9FecAVeIurdIXeg6WVszrpvDNxugwTHRTlBi1+BMQnEnqHD/no67FXCNZ8XHaTFsKQecfL3gut+wYHBT6XKro/fq624Y+yGY8hhi6s7mBhjplHC1BNa7ZZjvU/l8/VQMk13KWikDzv8sPjptA+XQ+1GEtN7coeOkAjahwn7JhSR5rz6ZtPh4SDZCChmQp9dyOYKxFNdekdP36V9N3v5A24FXoPZnMoZAifWU9osjugGIYYuuDT4BecEpmC0nSL5WyTgYQG3WcOd8J7d7Y/S+7zCe/dKcvKa4Mi/P0Q7YzCwZsv5O1OE1AVZ3tgH5UuRqZGoLeI6oL1ucHLVXg9p8x8CifuY8h6yf3mC3nvGs19zX6Kmxfr5sYaegwSFQwZ1KubU9XBd7W3SJ4a2kNK9qfO4bbgD5enhjYzg7RVh2X29Mcilcg6bCzgEegtenfJS1CRwr43HyL9nQctRI6XEcDHf0GShY7QVNuetgfbcoAN6oLmNibTG58vEiAeKHJ5aZ6TLIq5HeqilcKJ+wQ+9FZIiWRRi8s4Z9EjUQWCttunsc1AsBSn33YzRsPmPuZL/fIbjw/5gT8obU6/tIUkJqKhcXUhCMjnOt9PcfPOOYrOl0GfczLphqS0idpHu7pwUnRJ3a5/DgaBgb5rpfj2netG6x9+Zjg1a7pOBmELNGZXM0DHYlXocb5Jc6o6UkiCDYujJme69dZwD+JIDH2ez1rCRUTf42QuwGQYhmHYITcC4TMnjdM+2H8Q93gdly5BVwzHbW4Hmh2PWkGSRYEKjfTq/SaUvafNWd/10Ob16KoHpGo+xGrxpvihnRNG0Uc8w6ls94EQ+XZS5drPMjTJeBLZLznLQmwwL2raK4nSg9nc7tHrPd/8XJ+uFI1DFMylp4AFAUQpOONXImw5r+tVKsSI6nM7DtjisqWqvl2v/oesmkcXY0CO6EtDuNy3VXBXcM+R29Dk9AGjATei61K4NSOfQ+a8x5P59kShBKGotGRJ/SxE96WlczT0Y6PAqjMKDenczy1TRl54J57Jn+QXz7y6aEXngTouCitAEweRffF0nH3dk45MbLNtFvefeE1mXHgG6mzpM5CNLBCThe0dgnS0pCcUC7TMmbM0XuQ9iaSFRxu3yhYwJPrH32CYUYR/UcnvtevQug2ojbhgOFgI9hCTzrTpzB0bIkbPKgmM2thc+cDq3aPrXR9QtYPhd6+qpHRED0bH0W5VKuJbNeHfoJc8ByvMhVYgKU9reF/Rf4quNP6eYfRPBksZyd03I+lWsDOI2lC8jQIj7lQt6T550CFXyms+ROJy9fiCZtho1hernayHZMWmEM04CqzqBFGFDpWdIS8Zx9P6UA/I/wuGzjzQcURntqkv6sWB/Advkn52MIRUkfqNq7ETSzPvLRucijzyN6i0bk79gWzwVlfWbuWaCQaOwdmPS4kBuvShHMoZ/ER80CwNxeptMxMGe3M8g3ui93nKFnUSLjbPUu47dGK3gDmLiJIwTygCSZOmNrvgky+BLommP0Xc4PRfzDBnvFbf45x5jJFNBJ8YxlsU4w2w60pWzjtD20VrXxQP/6bF+n62KqDPKYIzTL6tCZUVZJl5ucqwYCO/XcvQ+YRQVtnttpQQsHW75UpPDMFiUGQJNiBEt/drc1Qa7aOAIN8KbTAUz02/qV64fHgzAgNLogbK/P/53SZsmGy0cb/V6Ytu5JufAdgwB6u/p1B1Bmbf+JW7VTKa4i1RUyksCQqi26HjVWr+tI9zFf3APfZPvcUbEP/12MDMSugzIBKGDek9Q58z9vkUj3SSgVdgWJL69mB/IbQpZ+EbQkwhIHFmPNgcM6zqnfElXW8SAXtdIFFAtzoeYp6zJRzPfwwZJgcF6o3OskvW2apCO/Eq0RZhnqjHlIQ/JEyOp4A5xOxaAxr305PJexmcrEFKtqpv+3CRmNujVxkiHA4I5rZaBSE4Q2WJQVFFdxN8etTwbK4qz76FblxVIU93RNO6+vvIvyFozlwKnkYnPcUvqhf1v70dZIbsZ+oWA7Rx6atn3lH1cf3eGHOuVLLgmy7RvUijC35jPKMt3Of8GvX4FrmY6ToywZtBTrOp5x8+ny4ahmEYhn2mBWUwP8gbVbrHQeayvmCPmyMez6x1RfTfTORb070Y0LUwyhyxOOLF+MacIQMiR0FU0+dW7OSas3B/qFA385ErX3VfoCtfrEpYaJU+St/Z/UzSI9lokJOiCaZdBaaOxqfxHhRyYVpb9vdVIbTFJRBt7FHeDOvnJa4u17QEWML4ydbNgvxSzbKaG7t8WiD7B2gXR7cNhgh6iAukAInbMjHxl87/OHv+BJK0gTXCCmx5LoRz44OQezNegUU9d8dTZtwSYFYB6gW75IyooU8G2FA2Zq4+fpo8pVVtI9TmDtK4i0BbagUlVtJ4TCs8+JVt5zjQnNfvWJk6Cl02+JkWlCnCfqZRo4oy/EN5Ky1xY5Tl1PW/ExJB8SvLKHdjQkXlFvTI1K4dSBHn3046EW9kb6gEpRrQRViMlXyPnc715zokGHCV8rbsvcrvzSGiC26ndyuBN8940WOm+bf4sNtRSkkQKLQRYd+QtCEK0U2zPIYld7grc1Iai0gBdu2DPv4+VhUzIfZgo/aHzS3j0UYnm/LbR/2gNztx1ZxMZHQPL5uEQqI0WnQEEnEVZXgC2TQGl+Hh9neGedIGS+9ZOKCi1gl9g0vhEr55PDrpRA3AnulFhdj206lZvwtyHIDDvbOqNldEu46i/GzHbmhJsSRwAYq5mWRg/HbDtd49+sT8IG8sHi3yujsK8MJQa0SqhDrgfwbPccfzdjYul+Cd+FaHBSMvp+GBr5vH/ExstyU4sMOt+exMe9/+TCOmsbhryL9snoJKXQbX8phvOmS3mZBa5gDolpDAqXoFHYs1HKYefvVsnWtQ8Gl5aKKCNBZqR3VSH/6+q6cxJATu1AYpNK1EuEH0BQ3pneocMrcvA0dnGb5N4J+xu6Q92UP5UsfLcufNPtqi/IYtMDnP4DwW2Uk2R4Ay3jJoeyqk3VPZtXxDEhAMrxi5WkK6FXjflvEKNQ6Pnx/9n3xKi1sOxiXUWPczYPkWUJypXq2oXOVe+f0FRy4NRMoD235MI/sbDddT6R4HzsnrFx26k9NXe9XYKVp7ohgRN9jwoCNuLcAUXpzJXwZUHNgLoLBYK5rrFV/SDs4/Ly2fwJ9+ifTW/YdixOz84OmFs2YxzMRCwv6xc+0WriSVk6PpS2WFieuMpD8TK0uVjosYAmxY4sEXuUBOSRioN2hDaUqwIpb4TYJjxdwq3Vm0prnWaksb39oI9wIycq/k79ZcVd8j4BC273y7aKYSIVl7e9cJFw7jbDx/ml3sZn01gXBAq69tZFt2Ip7zWChoDmLbeT4Hbr73ivuT6fvLwzge4LVIUeUR7emQMLzoosv0JfREAAvARLpSqTDyv+p2j5Ytjr/htUJ2IjEtiGEYhrn0d06zRf2Uwzsz8OoRLQ7/uqJ4ZcxgsJjLAruKCNIsmuYEQMtJtEnNgm0fUYN3AKOmPUErvi5/M0leNgrYMZ6BbjTsnRBUKnC2HytKmnyMdn6J6ixjRXEo1Mq/LNxj+tFdIRF9YDjBS5ZMrpIOcFEJ9e8h7Xk77uDkVf4y5tt/LOmPNuf6cz5zTWZM5g74dh2Bt+aVMKUshcbTSk6TTIZKiMB03+4hOit/Y7GBfRCU1IvkuncsNOHr1r2R/tHArvXUqn7FpTO4vZvH0q6h8aaPGuZUO3S0ks7rn5H4qIYEwlTIYp/xJHm9YqsJjgCDImUGoalZHupxbfGsHp1eN7E9a7Hh5pVTDukyGYVeF/mR7fi2xr5nSsacnE8Ut1pk3sPbJz5Bb73E0RBLioIKfW6jEWgslvw+ynrQUsmow+QJ9T+iXk4cX9bKCVuEV8jxHgZNGxwsfApkPEL6Iuf3YfbzRHS4bjgsUJKZT1kwOT/YBU/pEtRoFRtS85JBh1Tvgm/wzUlX4baxZh3g/jwFtwmZH2N/ofKzvl5v2b5uwkOBV9L3Tg3VI06BZy4Y9aWEjvyC50bPG294tnerMsx+oJlNi3/BmTWnJq6SxS4utzSps8BC7vJHH3TsfJm46Oqw9hf7+hYbj3PsjrK7qlSqoVbVMawEScfM6jbg7/kuOD37M8RLsXJhFjhs8JDKsLM+8UCWUuKK5iOq8ukXgtMspIJV1gVyicPFtLbG5rW2yuYSozYQcuKTnOX0gFgnhHYsaWDrT3rcUtU84KYDXDM6FaGwrRLSLNFIHFPUOpXjHvqCm/E07IJuiH2klU23GB1HrPC/Ba9CpB7XelRA+fOjI2XrOK4nfk5OyYppAiEoRe1HlTirAc0YVkJKjlLyT0F/eTMkM+o/PQIiKctWTGBJZLpzin3K7jwlDBGdRg1e+PPXbfy7GTzRSxIcUMZizxPM2dS2D9j4JhWCjFnjpEeMdCojlmBc9vsJEvhmW53gaqA8/ZbUVAYzCN+CwI2PF/ErTPpvSU3oV1AXeAAEeQE8Gg8CyZd711d3OSPwPbpJG3+vQXczyZBqxko20cicgppgCWi5AkHwzJv84NJv3FFHD59SckHvz4hjwTMtISqJAdEPzO2GaWd+cHLzi288vsdUEYngHxGgeY1q9A19IskVRVJKB0gCX+ooYqv7av3pFHT89nq+tKzlTD0oXyPPNJXL9MYy6eVuI5AvV9/kiRWoc4WJE+V3DX82sWBiUrLSbwUXZhDTeTQ3BuEwrAgiQkrbbLbP9X2690a7L4DIUeUcj6V0CcPXqOeDkZRI4ZIH27OHnszH4STKG3lgcR6y3Di0oS6Z36qmDE9Sv2Kd/GUYhlD7Y0q9dFInY0q4pFPMZvy+OFUDZXK4dFOnY7K5jFALZxy94OIwZw1O3ozp1nV9FW/kXbre8EFO2o3HQ9hVgCiOMDlS4AumQeoxwPRYOlxgPDLFf5iQHLjBCnKPAFujcHjAOqwUT9gRa+AZu2DtCWCGOrJgRakUg1tUoBQ8oPKUgwM2jtaIgFqpQpTjBfSCqMGLpwZRj1dHO0Qeb0ofiEIaUIdY0HjqEdd4d/SD2GGrdEY8Yge6Il6w8+SRMFpHf0gUe6U5SYsP0CPJgA9PIUnAwcFIeMYMd8JK8Ih1WNV4rPaM1Ygn7C9WC/5hGXmNSe038gbP2DlrwV3de2Qdch+2xVIwePOFZet6l3RYBYTVPrFmBG7OyAb8eqg8VfyqCVkyzr/Q3j06HsM28ILLDGqnbc0ZhBA8r3P43+mGa5TmTl/rmsKjq1BdrClzFeXlmiSEfe1fyTvtam5BnJa8XlMXw7lmCdrojmuT2ikseD2mVWh7LtcUHMe8XVPvmPJruTzbh2o2CLGDX1v8m3DD6huPYc+6Crgtjje3umfqj321vCGuj+9GnEz8+exJ5ALE1fIBGo6Pk5mwxNcAoqHoYaamJgBX1wLJkALmnRR49TWQDREAEIBSayAPW4CekhIF33uYf48KFUvQiLSJyTUJ+TY5d/71q0KJ+8tkyvpdD0vjYg/FfH5fWPj890VhNfj/1+LWOuf/X2vrQ+dpAMr/JtxvccvriPREWb/EHx0wD93at3gRRvCbKfv33xfDNnS/LW7jDp9te//wv68y+O4U9KvfjTs4F/14QJVzR+8qEzSrW3IAGzAt1mQ2lnV5QJ8HdOaitfqALQLdHr9KDoZ/YLzmANjWAJgAfEAB6wGkCIDRQpF4gBbMr/GVhDkPsMd8i7+4BQTiYUA54PBX/LsLUzPaWRWtH1GstawUmg1IjRnq5MXRII7F0lIlYGsmrXWxdBw8xFpals6eUM3Wq6J48l8Si4Y0pdiNqfn2blW8+hLFKmSlueeBRc3KRl78dxHHSqSlDw9szZ2DdUHD6WCOJZalzgLVlGpFcTNKYpdRo5d2Ur1Tt6r33m/VX7CSlR7dLdSIWqraV0+qviCSll7cszX39tZF4XNwECuzLF39QzV7b4ri2a8k9ufZIwXlZNRsgB695xRRDqO0gfYIqiuKP7ms5k8riRUOjEXmOGQsZSp5rCVTc3EWly6erIqdWFqz8yqKNWeLf/7LSv98WMeigbYm0Q1uS4mbvPiRWtb8eBfHekTFmy9p6c2LIlbB1jy4SkoPnq2LNTskrFnbDA5j/THFr4tl6dfOKlaCag5+RKWDB0Uxs5bVzBwksWaXV+qTLrqbvEsQ20LVbMkzg10x2KJSYyUpWLmMWr2okQrs3yL/NZvzxZiX55OXn+154CNCSbf6TKFqtuSZwa4YbFGpsZIUrBxGS71IVAT2A76Uy8RF6+2h7uz5B66Fl+MhxJxcLE+3lmM7/nZNPR8lJOj+ga291L7Q3ejm85prNpRi3HS9XjOml9Y4g+x7xrtxsf8ZoHs7AuOnzLfJTf7fS3YQ8n1sXJ0RvLUqK2iINpsrcD3N29fjuKmW5ixjb1q4e5Nzj+OtbmkvnpKOZAo6hiFSj9Wt+V8g+3DznPTRF0dcio8SzNpjf9E1Zid5tfidffINHMu/imyn7ZBzCpOtXbFb2w5BNSGB1FR+AOQFVLvZPsPBwDBPAaDS9XbBMQiMQ4gw25hj98L/L7gctGLQ0JM8iv6fjQ4ZEGA9SlCOyGMHChGPC2yOlSeLKEfj6Q+SY/DWYpUDjgEAABQEcLarzbsM/niU64A85rHBw90keKEnPTXzwEbtQYaz6cizm4VbNA/xX58dLEOVOgjDKwgNE1QInhnakAHnKEEx2GEDUkQOAGS5pJDjUvAqm/co9KCGuPQO6t+bjIHGMY9W+vckuH0aBmZtanezzDUwFzkY2fqGnI3PXdT31/ia60rmy8idXCOdurLX/MiaJAe79gBAWgDGAsAPQEiMA0wMAM4BSId1bhxjonA/xpxq4yR5lebEPPitXpqsPGASRtwimgbZkm5+Qrq6YWvLuevuSirHxU6GH4RGep67L2RRsaFpbE6geLF1YG0L78Po/Lbo0u/Vscz29FjJO63keJ/Itd/gUOu35pEkkW/sj7G5+X8+eLlND45t7V4QRHr8jBCTW/3oOMR1q0ydI+l5w7Fl+3pcU3D0ZLX2qtNmbZ0xCGqcwTLPaq/vI0d6H7Nv/9beodnyO5xYje9cNOJRun54ad6eWQB8t3c0aSzcbQ93Krr5L+vOW+XT4jpEXAAf5cGwnG9O6LZy5RAZy9Uo2LFQjLoIjffGesh8+NcP1avKqnfq6PTSVSkE90VfqsFwBmWWavednMBXUzWI2qnauQYC+/Htcu+5azV4mzsEnmIFitzJbV5kjxeT5z7berl4GuQ+5wk5u9SjkfTVG71Gjf71PuQuXXqNrEdvnPOTgWrfv4GvQO839Md8uBjwFlnz2vzntZL+C30OvEU+eaGPxEK//XXCrPnrBZoANrxD99fcTAB+eZUxTAfgACAdx2lWr/NhnAvgYGYJcLkBRxo6Tf0ZeDGrg2FeAJqUUn3PSsOgjwDvPTUv7Ny1GUGfHPhbjyCeqOZwM7iYORnuqJkZHMkXR5g+ujZb7qhh++EMXsIG517VMJdw6kTcdQO9Bii5xrx/Ksw3J0jMaXKlFj7Gj2aeO06QHWeRZ87C6tPM9TCQ8k3FixGKdxan43GI7nKq3230eTzVnKg8KdXv/tTbyxMIHOee7kaqzoWqE51q9nQ3UsFuJ8iVF6Sgu5G/yl/7tPL8nXw+eW0sL9/9GLM7+fzjdy1vzANvTHaqeXuV57W7tTY/vDYJvwt54e4gzOxU88sLs+aFBPTf7RkIERRvpEzs6xI0RihRktaItSaiOlLFnjQCo7YgF0GlpoqRoCYhiYxiS8oSuVcCIwKgpILIvxLKPIoVO1JuWOsE1EfQ5oVeGYnW1BAiAhpSthHqG8hH2KAiDYhdTZaayCuBFGDFEsQlK55RaUCZYiPj4Z+uEggPXHIJP+QAw+iYAUjJjQBGUMcAUHLJ0CZm6NgZvzvsetR0ZAlmd5+Z2QU4/lfAGdRD24+o/2LLpqj8Pd1vDVRycHLfhsX1TRwZuluLyApWUaz2xr+dRkvs2v0f/3B+N9YR1bohlYvLSRGcTCBpfzy5uKY43+TSFBx/dg4LxvHtXbnLODZ6CHuApyX7zsU+vuPb/vPaAT7fyF9h6/nw5x61Tm3JLzE4DoofB31s/z/3ouzvf6l0awR6fYvLlFdeZr219XqTe9ONcdlfo8I/p3ZYvCFgv477S9E9L7PSk5j6JOryqGyOWYfFnRuDvOz6ffIy7wNLD399KcFx0uF7efQ1p0f3Y6vho2l8EvfHHT/ev4BjHJWzoys03vNrdU0dPI4+cGxVawh6M/azwH+qUnIRhi6dSJNzBT1ayo1oVv0tg3kPqfmoFftTu7s0DNlT7+LC04d35HXAvm17UJa0DEugpim5C+BsDlcVPkWpUb1tmk+kKGnmMBFu01t9w5tx+UqrNYAAmpyq7KPIWi7Tw+OHcfIQtpRuE2/5hSGZdzhXmCnAErMCWc5wMIf4h6RzkFDfgHxKWh+CBMYpFl0jso8047f4bVLiTOU+jn4yt89l9uVEARp8CG9nkqcCMmJbDum52yNW/85OehZZ3FVmctpKyo/y2RbihLNbm+yM/xApdjh0qyltuWrKpEPWL7OXffdGSqQ1ciqFrCRNo3LqFOOeqPnA43WMuypj4uaodHCiLTsxUMmY8fp7Ug7s+6+EjMyBUjoK8U+0pEVKfsyhY8Qe5t5ZsXljpIkyN8b3N+XkESn9BrVU1qqn+hsjXhDwH8cVlc/6O4Kefc4cqaVFQd6ToZfJRSCH5bIjfYizUpL5pNeMy6BlIlLUaS0lXqLn28PSTgj1sqJF+a1tZV/VNXbIE6qHxnDTfPK38g+5jug/ay4h+mxkYjviHU1FUkpc0kvmtW5sDNNlqcUYec66NuIHgPTZ1qifZZC6lKiV8M753cBPYfzbp6RXjmRIS57UTNNka+VEAUfQ5U2zi6kds3rhOD8IOMOt6tdfAUH4KIgwyXShKcVXbk2VYVYsAmHnhK6tpRGuuQkJxJHPK8KfWrHqOn5fgtP5GsfI9ydO+DooJX6oS0szoiDNeVCKnrdKyc8skBFKYrjnwySnVfhpzYWZykYOAsVYGz4q65lX5t4weveBTJCdfX7KQlJkbVkWcky6oKu0U9ZBErq5ICF/yQa4n0nLUPiezECJUd08mSRN8S4TvJSGdsXeY0bBFCOp5OXyOTlPtBrPd6aSQ9KUW9WLtQfLXTrWMPi8z5OkWRql1pGJEaOVQslpKVFLsnL+ptKBDu/ZMw+jlmSR0eUCiJEPZEUaGXR1A3tFDiLv2pdANhE0crGCnKsgLRTNGqpfGLX+tKz1Tkie2jAkCdXlZYD/tDrxxSjZANbl1nA9kPCKhg0wWW/LIE62RaYW6JoJU7cUMK8iu9bMkbKO4m6CCVnqptYiu3QoTd22b7XYbU6Fg4Od2yPd2bHvpsHVfRHGYoEl1qUqlbrmuDeiHMJfG5NbjIb9guBk2TZv9KN0KDoYjPmX9vhgCMVZRaVI5U+etaL3ICb1ukmYLxT+PsG4G1QyP7Yao96LReCSjK9PXkBqnBkf1VqdlYfHmQzL6paEO9SJAFqbfZnUY1OkV5sPSh2he5YVztui++WdXmsLhaWU9dNMxcW9St3I7ebaPDPVTBb5XqBW18z5JMBEyXodySGAikH9P68Eo6uUd9KzWtb01KxmqGPljP+agJLkPqBoUh2BqMUDYn8RXgxqWSW/Tuo1Xr6aJixmzD7bq7iUmcIwHe+/wYdF/IpnDB6W8KzO9P93AZyDa2X/rhiz598Kkjv237cVOvhf1xJx3Zcu6suXr8+6zn8dhUjkNH/5KOPj1tdrzhyafw1Nk/3o0+XYPWv2+sqH0+Vfe7y+//iwy2Egp7/Dj7fZg//p7ffz459sP8l49n/ReP5+kaJm2z/xW0f39/V1StAdTJ/v2f+tXsdxsd+nx63NTk/X++v3+zH5qqzUY1N+PueX0+y5+N9fNfm/xjhs2oj/XwnqePEjMHnsmGD8rRWkb5w5KdpD960FXZVtRNtj5BHvEP3NrczC1Yp56bY2108CnraQo2wLX7wm2VboSzI86DGhZwvelC0Qm3wBXh3jNXcipAWmJ9fQ0CTYYnNt+iZSY7Tm11PLs0ZD/o20fgLHjZy17zjM5ZbBKlrDVK4jbgk/yEiO8QLtSBwjTWWp8kwWeNnEREGm1AJj5gQnV1tTKrLTCePhHf4/VTfNb4VwdvcMdY7I0xb4dJytGrUGqSdHFPVhi9pAnY+rnFjyDFqZ+u2HogdaMke0rUixlmhzjWthZA4jxzsb5YU/a907x0cEt8HrshbFdbWi6bB3CnnLI8y9YER110w387y9mSvEDiQ119wvE+cm0Pwqdn4l4XHSx+BB20aBg5MaZfV0+Ipg0AwCy+9Yi9xWh4zP10Tno5xWTB0SDOSHTbKSc6wwtIoGbHRUrk3uZUy7YZPu3Os3nqIf3ISSo66EqjN2vcsoVI03QROWRF1vDUIgaTZSiw8HtUotpJ7XRNjJVNWJP9VwXBGDeUIMxrYI8vMWxCHJM6F7n9k4Kw+cBHkTfTtdGzCuHpxief6wO3HOfyHwyEnFcTCQablt6mOOgkvJ7KYG0HAyQu1ulfIGdjtoMP6ANck9AMXXPz/Xkkn1YtwvmEvQggk89RVOjncoRuzoZQqf24KbLXGR55OKmit4GbB3cbqZXroqWPuDo4rqV4YOamduNJ2VIhuSeiKfEzD0zOqmSSEAJc8OtAGnpgiZDth+nV+vrH4gD59sus0W4zB95RloOm+kolfcPneaw/ROiIvQCGNzMatcf0ZIYI1FvsP2PbtyOPSBLyMRqQpKelDsI4UpPDJY+9AxEPfkcY0M60XeLIjB6MmBqky9cKmI0kd373LQdrvk5j6BRjuNJKNfLjEf8vQWSt3ybHUAKySJeleAAbicqXkv8bp+aznt2/zuqj/FQCyLHhuOjio9Bsq9Y/ZSVO0+W8UgHJWo6dR9BXdo8N5PZ9PDIbZF+oNS+KhBRxtsq4YH/WLnIkVr6ZaRFq2B7VcPGnZUU7Re/ZBzgH4VcdxS/DlTAoga0HUD9PT6D4W3ObhuKLyOOqYYi6Z3WnTX3/XYUFFbRa/rpj81zn6GYtGRGSc2jTqwBYrT2CKYorL09z3nZAuNP1dw43TT4Wl55cyPOu+4Kllq4zwFAK/DLeP11/uZd1Kr0XjCtOvlZJR0yvKz7OtFvXlyDXluTbM4nj8qo2h5EarasaNBcNIODFBXG+/J6Gr/McLC8app//3Al4LXsHj8hFXr+f+qDT8cruXNh83bIwI3I1/iuJfvg9GrWrTsxLbwUeMYW38coe4oGJowHTehR81hhWlnmQQ3e8N5tcjf5kabM+ly+mUhcGm6YsxzPraxJBSvsuNQp8rXCojT4dCyZKpAkBN1V83RDeyhwdh53cmI5t6stlegyF3Ure7uTH+Ahqzxi8Iwt8dsjauHcit5VSXG8o4dWINWtwWh9k75lm5OO/iEnts0oogLIW40YNZzLGYs59HAUCDie2k0hw5yVovJ6nlf5KpITwXmZ5xVRZm+Zt6IMaSKdL/Ip0GRt7pJ2OFh2l+nI4QO8l5EIAW9MYBG4Q7fMiSSfm/clljZF/9gJG107rFL65x2QZeEtJQqhiHJeQE14z0jMJe2P6QfBxVKH81UA21ZTsFHvlIOIo7j2OMCVbssEvqURrhsEVIyJ/J66/CpcEz4BS2iYv4eUElE4Ht9hXARHeHJtF74PSS7TDdLyCMxT4sU5uN0wbxDCR1PL4IksaBIaN8twCLNHB69aOo0hTn3I3HvWgdm61S4f1ztTzII4hOlk6jK3kiHXsjjHzb5W374wHlQ4Us+gqhae8UOuXUPZnVWvLspJVKX4dubgg6S+xQacnvj7xKNNUMj9dnRVt3zxp49OppHpa8z/8k1M2o4ppY9dL6fwKhTSTCIQvat4zriVIR+jgA2TQprwkn2CZCvPH8SMguH1ftdt71YIZLVK3sQkdpfD4jCir8kuq/X5xTGu1VNf1Gu9sf4FFvbx1eJ7siONUPLBNo43RVHt34cLtVZHkDp6rP5ydQIhKUMn7HTXQlGQLEzOQrUjJlqLzYsPuGYHnnhciu6ffk5mHOiubiHAUhaM5w7t0u6Sbv78meE+OFNNncl34gRpF/BvhSeG5vTHRCWxCoJ9oynm4iNiLKYwdAlUb+CyKDtA6810Ny5Q4DCMncKFGy1YYAeeNCziHMDbmzd8unTYWML83CbUHAcyt7nW0+q0lwuGJhzHuYsu/fkEqzLYTXDQB/FZz5sy7G9dLFTHKgfdZGGQ1Ekr7iYpjkC1u6wNvfAOx+41NQhRzuFLCBRkEGk72GUcRATdvADTFgjD4QFqOP73mxqFG9tQTQjB1Ron2axWtO3R9J2sx29XVn0hSNmadxdnG0t+Qgnl0DgEqAECbj0Z8kmqozXb3kkLh+u9XrH9iGONIUbKeKIahylPv5y5x9SNxVV+Kh21gMiaWSY6WV0DQWcWrM6UHSKpkQnRs8N+EyEEnvC6g47bK+7J0bm1bqcL9gYphRsZKCjZnsvuVvIZi6NOeStzOaKN9LQuqRpGvlz23bQynRXfgdYenw567iFJ6kKJTwox463UrbMfDFaP0eJ/rMCBrSGY36RG67HdAHNtWfQPzjzeS4SaWIfbjOZg6dEOguhNYrJA6UCaGPY2M/OUpWASHTS1EuhVH0y3Lia5fCpyuYM4G7UvgSwnogp7Wn4TxjYEXg9PR89lI3KXd1STUaztqRb4FqX2pX/XFzKD8r5HXCVWeemiQwn08GWUjtGVp03AzVfqge3w28okU/3oM0IrDRjTUG8x+0kWRDsgXsaU8Sz3KIOqvFL1F5GVJtHBP5VhIIhGT8srENdgmbacj/6lsIVVC98T3WIvjO7FN4DBXvzzUC5iEIr1S6OYJwUHwXpP8FwSSgVyHC7O7f3v9tyRn8cLbG9XHvG6bqVuohTpMzkoaWycy3o5T8d2oXVu9X3mN+RuzSuD22Axu7GDE+TvuabYl/Y6+khpcKXQzxD6dZxcYdaw79ozD2cW8KegQH4LOSHc2HMc6iLi4IP5nunvXrmWoOiowgXOf8CdFj3dZIqDUUzFvrLinsyHbYC+1OnBsJLfz+J/w35Fb9Ft+4uvwNqVUPdP/unRJKs1exBv+ymk7g0ODAzV5hyUBNF8+obIQ7LoROcKINZVWs20VHC1x4m0xLSVX9xn7r9qDD5iHtvNgDK3Hr4wCB+zaYJcaIVg8YYMSUZOhOGV4d2N49ij43wFgFfVPHJ8s4v09RX4MR2vIw/PDqNslWIzdmuW+oBrcXGqHdigG75Tprc4N8C567ZffPa/L54jnoM/xP5kecSzV7+Zf618HtlX+Q51EnxfwSDFOkddgfMlOZY1XV8s7ar37NOfTQlMiC7MTF9iYNfr4CMXEf1/r4/7kB+Ks7at5n3b6EuPTDZ5uy0AhSPK1EnxvbQyuRrczPo9G8iJ22JatOf34ykCg2C1BJn7NuCfLRmrBIsvzU0WKA/kXD7o8vRimjL7421dCAk9B+HwqVM4GcPrt69xdpiOP+1eiEiQWvG6bHD701teAbM/xKPb0C+UKgD0y0KMqrnSmydpK/FvppIvq3cP+SCCSV3n39by/md8vGdo9w+vzYhvnfkk+eXdk2XDqTu/E754p2/XJaPLkaPwEV2funXuAPKOhaacv51saHtLK+ZGZ4ihuD6S8wkEOE5soBhSjH1ISoW+k+KAqILLJDygkrEMAJcqk8Nlz/pCFqRC15GKuHoJSxEEajb0QznuQGKmk+NF8hwuFbyetmuWX2CGOjkhQm5kjdasZxMN6+l3CcJXFn6rhAbMiOR7EwXkNmYIARQZi/Asct/J7Xir80uhxQ9iJMQ4u8fhvaGIcepEUQWD9jxYbFBI8FgUMJvtcJux9QnCIVEWMiUyJ/6tXARax8JAAMAJXfTRYcbHXFzHQ8BFSAw5kFrF6KAG3YQ2H5FKxykBi+zNoiIS6iirOoilMXZeVf11xJa7ii6Pped2o3OS06Kc6JSYOPYXd7XtCqUZSY43bkpu5pMluCJsXo1HXwkHENxSxaO8sHjk2wm9YFh2yISKIee3Iu8JWoaR/fYIH9tsaOezhoDpnhWtGq5PnAw1v4Ycf6bxMYyCR5nUptWmZhBOc2+NvLImhLyR8TbQBJtmoq3C6/6v6iB+ZiKriL1+ErRISOt4gYLJ66vuAv4tovVQrtXAfvEOEVIC6UDx5ljE3lKwOLYHHjq74C0XLEYgDrEuBaH1V7N5QlElpgFKDj+Ornqa/vc7dCLRfjwhhgOYgnaUrEcyDBeM2An2cvL2yWJ/D61FpwRr/9aMayX0ASocHzQmpDE3/ApUDwyJ3Zcc5qNuF67/kRMPG4nOjZjegp0GR3n9yJhIXIyUv7Vwoy5x8ElMgOmSmAnVu/RodEZ1fOYgQyzVgP1ckoxHPApAYUMAOmgsggLkc7y5EyRXFE3yKYbjfwzZp9WdZe6B26VOC+CkuszZql/nsC8jbvd9oKpIU3W0WCqVXKEQD90U8al0HlKGXqo6NdzpoROXQ3qpK7A52v5yO0aAL3azYi1lHorKnUpHZ/Te21Cc+/ZVHFvBrhbRnFt9a6l9VFC+XHNBrAMv4v8KiUnbdq+g2K5jQAN7pUYJYWaYPftfqOAOU3TrkpUcNR39F3vjrSSAKc7nicW3OA3CKkhB5K/QXu9Q8PfWmTchN7SyTtQReYXb9LiQ3YzmeUJgQZbxnUbuBAUXzaAWkZOAnQK1yP+TQBTmB+5/fp7Dmow1R1rrL+ewAU2D7shWG5pllzcS0qNqseghhvTj5mvA6yF9k9g6O0qf2s6GZi7gzbfSPy9rfkw+1Av/co3d3oxy5Z3qXKXcjHdy01Yde1DOik0Qeu6VesfsbON0nHhH5x2hHpYZXoWhQ/kOoyHA3GN8umYl7glWcDmbSY0ahi6Lqc+wwMmdqpahOCO1P5vS/HPOtAFk5qOywRP10sKTvAmG8SlmBmmvq6Yt9FrBIxVQs3wBIHYTZYiTrncEnw5Dsy3G6gpvFb0hiUnhWJBT+1sXOBIdFWBdUiOMrI8cl3BTxhOwIugdpiHVbPE4CXI/ndggJduMOimtxART+yI0VGihp0Z+zAKSL3DROg0C/RttibHHuhuYwXoVDKnI57sHfZsWqWOMtNSvXxOeTgUdY6Gzgy3XtnSzQ7VFqGmC6uUqscaAzSyYQyXx0Ngno+P0dzbiaNOl5K9amg/HqcdoqMbzDU6Mi03sM6YAblabJwsBXfQVBpIf45yaITxvQaB1A7qocCIVmq2tCLeRGTMDi2XbQhbiP3PCvaa0xdJbSinVbHreDFqTKNg4TKUCfzCaTWcpA1Sui+fZ+ssjhTThj4BkjrsbAbufr+EHOFspNFGS9Cxby+CUMr+bsb10jksgazLumqSgj2kwlF0IZG/d5SrMVTuTqUIvYDadxayfjF+/WMM7bWW8W9FQIBR/A1Gc/4CuGQWuJjEzIQz8zkLo0lEMXsAH+mnOQKgAtMvzY4Pu2tt49jiLwgZ86sxJ1SRdU5Q7ZtB+geqp8FAYcn8sS6r//ZnKWTQOKWTraga46ltHDIxkI1LgAlMrBEeJni4qixO3jKp90ipH4beGNQVkmLhBzECQ0abAou088Xqq258PrsfKvHyfbAUD7Ru2s/0eNoUSi4gI2TmCA1IJXoOt3/dLlXgrlZxsZ57td0zXuTShGkZT718qSF//MJwvGA0ZYI1/TrNA0Zmp/QGRgMTP57n0xPWh25CNH3igD5kASzC1CdyUlMs1tPnmgDZuVzPkj49xUC2h4QEkNE+QKRgGTzjZBJHh4OJPOYrI8hmdzw/0jQ7/f20KKZpYkybbdLZsNQUje5YZ1deJ2mOlGfwoTfM1qw7dPCkIiRU8mPSmB7MB8wu5p0Hd6NJOWoto5o9FAtNU+6IxYvAxITbCD+6xL2T9WUSIRXf13aTRopFFvQsJq9X4RyJ0+wU9/bPKDsl5noqxP3O88fb8SgyES/+9OpMcZ0Po++HVVr1mV3cCpk8eREEkcXgay3W0DRPgVIn6F3ndHls4suLxHFJ0bP3DTfp3jRgT4tOV2ZBzaskVVNfWClMyfDDjnWG5dIxTMWdhMpGesFpUrFDQhHlc8niqZd37NKJe1qpxrqvYut18uzDM+KJVjqWsWdHmVnob1Gtw1BKgKNqRTSR93kSZN1y9JnO8sV9/WWrsciKXHbTJgYhSwfHy7ncyl9lEXo5xqWX1R7H6+RdPscHIFYOdeyAvscwHqhDMi5wDynOCEkZJLF4wlBB5QIJxvIsCFHbvWt9TVsSSmusqYKKA6gDs2bXUDv5nSiX7hjOqTpFG4m+kzr2yNKcgWIl0dPxUI/yGWSrCdfWf/peaSpDWyYYkmfHtbPbpzwlfNERKgUudfezurPumC5cysCXbJeK1UXKXVXCoGpYaMgamq5svNhtL3Wa2L8s/BkojxtVQu2w0uh9IayGDu+nvSbHyTDS66FTf6HIsyTO4D8bEMcrDmMduhGy5eySQcbgn1JLeAPPhs1TJ6nXhhzl4tpHG/D+c92QGe8ioI/TiDqvClgCHx+GITD62gWzgEZhTv68VPYfFljJswIK2vk44xkR0PDxUxNlHNJrj4MizRtfcXTGTQ3hsKyp0+gfH5NNUdWoZ7VP2JfEfDHGuuNY5Xk/GaqWCPqo/wXRHo+Wrvt8L3YDeoMxmyHgGRK5uAUZosTZlgmdKCSHKxfwUmbVd6b49dDxoSl2ydl0UL+2zQNQitF9lhFxadizlXkr/uw+crg83oEIgd4/ZtUK1iLt37ry3Td0JoQfh2CX4jTO3wdPw+coBn4HNcx8wA4CFAl+YlppavrxnO0WxJ9wbYyAE1go3Za+gW6QG3+8emrNg4s4ncPDWnFL22Ji+bMlU3q24Iw+l0/ZTPh1004TTxi0xmz4IUHGhCh+MsmlsTYs7r7gF/n5+fh3vJyA4I+mkQfX6Hik0/AHRdxiarihv9lQNxfKbqaS/Y88Y275t5AcoiNwy8uNa1gBEAGOcLASGLqcH9+n2dlkXquuH2CADEGqhDgBkDoY1DXd+9K2/uSot+5ym+D2TEcorwQUPZQk/nJ/jJKsrJLeaC/PucTKqH5hExrWLPVSwQ+CDmk3FzsbFA8dLRNxB7hHneIsGqv2ALHWws8Nwf1adNAuW0TEZIqcHZ8aKR9cu2FFmhC9YpQOopUs5H86sNUz0+QJIfRWoxuN0APh5BMkroX5JZp8Er+O0CnetoS3l3XhEQo0gd/RSq0sQlLWVvFIiA675aJjPOIOhDWrtbWloqRHGQ1VjmOiBj39znhxDAyVdIQ6R7Xkszl4mFlmkCNe+AV5m0kbqcvF9oDAoWDZa2uwApcGAuyxSerURXj4z2Uy9njlDa/C/fZSCN587ui0snVevr0l8+sFgT9muN4EQ3XykI/RkSfgAA/aV2iY4uSAkqSdD2kRKsN5COfu1NsbapcuTlH+XHNe6PQcLnMWMgrGTxFsoZiC7ZdY+Bh3nfS25TpWtSlEP0YIG0cQvw9a35jO9Zus9y3uS/VQSwev1FFsoZXqPoxIFYMyAc4E9cvRI0YuEER/vcUc4cbMvhQbv7VwTpREZw8VELAh6OhHoXooqe5MuP6+aHbXtJzVmcySvXYjiCbNsMti0l2chM73YAWHX6av+7Gu7Vo6oJ0hJO8GAChaiF0cV+soKgB67zKWkHpA+XPLo2ny/L/mLXy+zZwtM5e3Gdw/cvOuyYwdPmGydrudqVv1FzKbafWrddLVcLHs070xAbFagf+uq6h8Z/fpJHRNmgj3yXyN/XqPqH66APcSpD1+V84/8CRjPDPhPtJH3u/3o9sP72Y6HmdcBlyoewnOhx6vtx6n4UDCnlxBNaePz47NId48jGh49q92TYwJ5Ek9g/74a37dc0R1Y+DRmbpNZvuFbfg9UulccblmyWpLA2WYq+L+mMzUn3A6sQaxpTtoTqy8cE7oDGT3TT2t9+mnlyx6YLAIRqleWaLag+kN+xuR5/ihUlTd/5frcm1QPOC8hnpF9yD8IAqW5baDPONG5oe8HgakHNjOKj3qcmmT9dwx+fI+zLxg856O3nbRk7Ccp+21nG9U5WDO+y96FF54oIQwQp97hlupP5TMpcu7Ow57dOKQE+0D99DZ1MWjN9ZeNOeB8xZJhj2xXivvDNRBi0iFY/DDlTqGAF25/ggzCpONT9t8Iu+LkfhFLp0bP9vz4k+nGcuov1Rwigc9rsr7PFiOj3mAH/QA8atENAjwPZ0JSlCCtFmPlnl2U+WDlo7iMSkYXG1X2kBQuBH78ae5pyn6B4CpWCvtPRMLsWibEomNS29OgpHYFayuSZ4/MhlE1QozHzUIC3PN1tHrCLYeJWSEM6DDejU7bh3AZosGHL0MwLWnASOcxKOiLWbekypok5Y880YygfHt2uwdxWzf3VIAjr3qdA+ts0Y4hb/vjOmuDZoBgKkCZsHbkVcC2bBniKioP+NCfA/DchBzyWrOcy7rRA7bXqFMYRexnMf6C9thjrd5HnebX7a6fzry3XNR/6syJ/wB3x3NmM5OT5p/n/m4f0vo2TVr68VpwulvcE9BhTGpVIHA/v7aL5zZu7oSNyqgZmM3zzTGi8oFTzDCyYQhgIJ5whsuZO3HVIIQauk0Y4CTw9owxrGiQ6enZyyV7vAIPfDmaQ4nadazLpKZcyDbjWEsqhR2JDv/6qxdVVfRxSiTz714rZX48epWcI0rQU/He2GQH+K1dXEUyB9pGJH0M667lsyeTa4qLeZJiYWM48YNGgblAGHDu1EbruNo3khr1LVF9VDMpTSF7JTbx2nw1MYPuW7YkcwL7t7OwR73fJBj3TYfvsGZ8f8e7ILNfEIs67+T2XWGgXkpal7Lp+MFkcTQC7/wqt3pW2nUOyfsNkKPs3DabHK5bPHPjBbVKT89Vx8OljloDd20CbOqy11LXPOp3hKeFSMKrDJxBhePa+bMkHm8QIuCekEGU3oKRFhIvx26sa5tDnyDNaMu0mfgVvqjVEeIHxypX5LDTRcvqzo0hrv184xcBd/XIfGZxhE3qoj1boKpKpyxtRWId0zJzK9HZqJ5YGeagvE4fmzJyKFdIHEerLhjZI9iBOHYD4cU2m9f2WWN/g+v94FSgVgWBenxRIOguWLDSjW7uXpnPZx9kF5PXxYWxkzclUrdpp2ZeevRYmTalUOdHCMgtWIVmLrzyVEhf+H7Adc2ZJLszczuTvMi99x2Uxdyh1etv7nAlIqfA97N0sStHaQwu+zHDyE3cJqfagU+ElhXRIoisIHt30tS+U2Oc3fkA3C8Ebczve0XkjqWB5zllUJqRecBuTsGbbMadiYnhxAM2zrJRKSVwcIAnpDI+l49xk56LoPRg/muEjLADchsvq6HICtEmHg92JT4G92LT7nNcrneMic1JMsmMTjQZPfm3/ivqg/oVczZFYlTrKloVSuv2NGC7UIkHhmksBcYXVmhd8XyLRcicq/I+7x9EV9YRB1GOlW8uYpBo7fTHi1bRkeeJ03bj6Lh1pZFhovHiSCpcKCDYvyhdxxzVLsymA30z8Xir1krmmRckogga37X3aAtY9j8VF+rPGB6OVqHIUvL1ovbKHS1SLXE4qr7hHCPhhGwDDVLYwhsw9WaPyimaMJAv75WtcXUHzKKHOUzTUzeYbtbihF+B26D85z/AWfIecuDsEintdtg6i4JjbpYt62Cor5tuKbJP792xqEnub8ZR8PXhQL29iRVCqTeAMflRqzo4Hl1xbioJYmyfDR3gsdlGeP0CuJGIdp9OFXUybYZwvdgNUYzZEjVwTVW73+LYP6QmGSzuOPn6Q+v0GWKeD9lp53TXfDhqp65zhXUXfQ/7ECgkHCeYvMUkcpkl49gAAwUUfRsbkRXXdSfwnW05Mpt1HlrwsMamcPHB+WRBg69HDxrYNzZlxUwiBObNGNvLcrS04D21zy3i/0skjDB5XIcQZYWMb6V0QXwCSRRtN6fUfczeLRyyYy963314IzUctpcFwNjJyLU/ch+rD53bS+HcXrqYQHAD1YBL1DaI69GxgR408LDAUIaGlZYeWgunja+A0JbRxMxvcpWgxzRi2vX10+GgS3MjvQRflqXYgepxoSNxoI3FCSZ1rBpfSU31nOwllbHb/OH7nKJ6Bk2Usl54zMIh7aytzfA9vWqxZW+87eyL2/sJinIqFudZYddJkdsybBi5UlGDPF3ohIr5eqpVoRVdwnQkmv50mF5NVewyBWpESBFjpXgj5eKd8lTu2Xn6icq8atuWiYgdMlUiKST2eUsx+Jkyjxmj55EsXvM9vfz4HWSNJHzl/qD4c/vHjbTfphLl9ORzKQHOKVlWszxyZmDXm2wwGvJbnea4Mm26Fr4bCVOPi3UNyUHNIo1aiK/0R8RA6KxknKKHPMaDSpq8FU//SEH41U/P2JlNz1TiN6jk/ejdeIRQFYsZo0PJXnFSCAhyqGSK2QkPZR2q7yXOh3TRXeY2Gj4AgHgfm0QQIM7ELIzzoUDV18ezQYnyBfuY4ftYwwvRYDHK6drUJpq8rlIrk/WozCPNBq9tw1OJFZ5uIbFzKIq9O/dhf2M5mipfhmGmmd/1vYg0o76BGkZ1UtAlxWPGCHFL0kZUuvWX1axaCxuS3Qsljl9WpHCAw/LQnK5VRmYSQ/R0yv4ahZ7/r9+OEIHhUAHPxqlqqrnBTQsSaGe/advTCu2AGV00sMFgbJVMywANc+PRTM5TUIjvAU7BfPd4fi67hEtqPzLKh0RkD2HnHYB8UHy/eEMmdzuveMNgjfWVNT8rC70c7IuGbhOtjqG8yUbKSXkZM8ZKTYsUZW5S/d4QwxM4S76K01bBzYacVjIOmad6v5jZok/cmtjDEd5ZRqhna0PJ2asOCcBPAGjXbtqfANHjGOq1yyMTfo0cbamZoqTZt4M3y9SodZw4hyBr1VM5+bHZmyQbqDdFHEO1Q19wq6y4QXXN4alnAK1emvpXkIgvJEGATf3oaix6g6hs/V8WK9XsB+29FXebixRuK6nttdxyJwebqB5e+Qtrc7PPSbz+PXL9qTn4ckk8rN8OseY2bp49LbCkspRHQbJH2GP28DZqf0VBOt/L/w2ct/csUpaRVrdpdow/E4K0uhOuYNPw4ZftX8QjK2A61tMO3+hHqMIXMkpiOoLFoFZrFjCKYti5ZCwzL9g/HXaUg+LGPT1ALUUSCxdQDme+1MDcC0OhU5E56mbxfUD86TCoFeyNXbzNQkuEQ/lxkOKPxc+Vj8PyPZM5PLp2SAN9AX9tTq9sGTkbKwu06f8Fsq8vZf+PIGJ6F74ZhdAQifAGwxO3fEBfO4fJi8kHPvUrfmyTR/kCIRH06Aeqy2s67r9ju+KRT+HaWYWa7usZg5brwNoscDxoHRaLiRKVKK5mAufKTcqC8wTNB5VrVC/iM6LwiyeWvIs4vyKODNchgtJzxLcC46tfk3CKElQmHlA2sS7zwkyU70AMutM5rwAhC+foU7Ru1w8njfqFxovKGqc4iYbjzoyGKrlsqEjJ2zhUOqCl6V82OuFW8W+H0BnCZ6QmifIUGy7ueJZwdhM7R/mRokt+YUTo38c8w0w/6YwceuMX5k4A/R6z+lo51L0Kj2wD7oEenHj4y0aIfB2L74HUjfRmh1jIWFRHWHjLc3ZSgbL5fZa8IJ508MzLsCACYLh2H+KZtnOSH/XUR1WaaOajzGBZravHuLVH58qapUAo0HBRBGcK+ZC2KSqUAdVwVYa3QIKWrjglHhiIThwMLCm+keL1PncTqnE229pfSvq2JKZFQzC5Q6MuSQFzDWDc/XhpaEBPRaomRnyZuJTVxa9WQUHfiwk3xnPRTv3C8BewF4eMKnMG5tAYTBqXNQDGQMWoKt5Z0dBVMZLCtamqZnnyCtt+HEvoD+KcLic6o3uM+BVd6gsRpR9C5hypxnFoLeAIdtwaKPw9VEWH4zwCtBYsK6KK8lrG+Xa2UM1BmpKGurGOIb2o8Vmvq/j+LWKp48xMc8FtyyhgOLiPSmttDjGPMcPSr1G3qugkifJ+nd+u0TOTLTrjdFAiBqhU7WFnL6Y31x1+8q4kMyvWp5iJA7R99j2vTwif28tYochC4eXSMUC9ai2j3aMXIioYJOcsNpsQ21chyybXnsdgq+w2By06CSCo50WwO2LVcHN5jOPWMtAsjyYGDdEdzdUJpwvwMgbno9KEBGFvhiUfETetjnFa6ZA9S0cm3/B5omjmqCcrvmHjw0A5S0nrVt0gGnNNhF6lzriHKfCpx56aC//kqJ5WGl1nYzZXm6LphPYQkm27SS6t8peHfGOvV6Siz2MPamqHeVIH1cBtv4NdRoN2gSUkdP+PRANNw1lKjyiu5oOUYQ5t4yo3X7eqi0rV+kcBamKjELR4Aaqu2zDSEfhJOZqhiehX1TQI95WNhEgdIe/PrVeydA6RHWG9mNOD1DzyLe8B42H4sHRVmkFvAfAQwDNoma4hRxPAvvByeRRVZoo0M6ys6Obz9NOjC3WH8w+x4VeO0EVwpF7eZDL3iGpb3kpp4mTaaQ6VGy8CCsG3LtoXUHEQLkrTYrELWwvYMr+OeS+PJ4z4ZHNpt5oTlBLCJsyQBWbDOOQqATTpsdAhOdYZ3y/P+AtrGlBpXibDV4N1PNa8+jRhJBj4Y7DX3HNPim2G5uOw6tT/n8VXvaSSFnhUw6k98vE3x/0GgyEtzjbxP9nYhLEonfbicytR/yuhREe968+8KtHjsqiXPGLiiM6nkyZBQa7KbdCPNbWVniJBZuZyKkP+VnTu+CqwWr3bLr+Zza9SyvfariPmeNRv9hJtb/gaYBG8I5H3T1v13fAs9jq9JbLCqvsYQTuWc+uEAM8a1omTZew4qgJUGZd9fYB6Sh7mIKrOoR95B2U5axp/pjih63GiccGyPg4h9Xh7Y18PtXI8XBJgd9Dp5UzPst+QaPsP/CAVioPVnBJB8B1tiHNtWzN/9zpQ6ASp36cOdGADjHkto7C8j1qaERJENFDHSaVirqatx8w3Kr9n9xdXJogm/fYmEtpoIovNLlk8lMiD3ubm9ocFKvoWqgeECNRIS9V8AN0MaDg4jP5f/lmbdEdBhd2VTBci6FSQl8TotH6vgLHbHvifL6rL8E9drSD6uQpyNmy4afDaDxLUChsdGD7wMZ1lz3UGDAs9mtr5/Mu4GRFny0KrPKHKUIjaZpFSqLt4BTTil4nR0vKRbZhYqMezuVTlzVmsDzliclayCiwYDSghw3u/TMbUs42kCSVH3NBLBdbvPcK2uhwz1TN/M6vPN7PkyJUSpBn3UqS5HawP1Y2HPHWG6cdEmzm8lHX1bpY7X3XLWD6MBG7dT5ophZP879lkpqr3Wrp3WimfHUn7W+WYF7rissdMZF3NRWH53e4Da3GnbKxKLb+5+SQO/8oI3f8LaYYBqEc4PZvw2tlpq3v6PKXqP3bKtA7JdME5DxGwmokdF4h/B0KNgsjhCM7QZFo8et36Al27lACVPklMEFqhUmzcfEKq4WOXVAMF1bKF4XY3BtF/KOA1qcefHkQ1EVGk2u33I4saQu2vPCFrHomXz7pwQtFkbl/OwZ53xw/v6f7BjSdCkAmei3fyk1vb+9rSdExq+3V3HY7STTDT3n5KDmtlXzvjLHS35y9Fe34vSJqK2sfivfYV3UHZNUP0Laz4NIawP1rBjRGHUM5LK5NV1ZrJFpwv+/KnsK6C67oOu15O+zNJs+ZGPuWoQ7fMN/yPt9D8+QZoHCsWOCwfud5DzhEFeI7ScNfZKeCzXPWXqffQaCGzS8nvk2uLVrcfsf015se3GhOGxid0AIjm8RWZ2aDwInjWIyp6jTsfk+UrF5ii8VEv/pFlwQswVpuOQvmRNfxy4bo4mlS76ymLpfN1+OBVr7BnTvo6SNdd/ypQK1OFR0Fwg4CUWVlO9AzQ7TPwKi9xPM3GOQPJAEIqPAt7Y2qmvpcYkB4FjBT58neHuh16FAB+qCR+ITxM9/GvgrdJH6WxeH7Lwd3SE9GWq+ISEv5wBdHs3Vp2N8cFuX+DifBRebomHPTuSf1arL+BfbOEQNGgbhZONEhaN+KZxYF12vmUAf35NX/6CY4rZFp1S8JygjmvP+0vODsovd6o/kcJP7T6TQ/F8OeA1ppWCRM5WCcz+nUGPWBOplCn9sEVqnSyQ+3/MsRUyPghvE9PvMLAlzl8IhxyeoBxr+BiGb+KoL6YUL1023uqgWxKDe2hqOy1m/3zo7yKqjBzVnSWX2TlTm9qt4XwJxJ3JkHvjeVUCckWKPNaBi66DKdF8ZfoiQNS3lsvK8x3K2puFrOTS16jKo1+qm5vx/NUshy5jWoJyik0NbTO18blVYN5Uin6IcCCZ9p+0onqyNKlXDHVgS/ibqBXZCE1G9TY0m9SVoXEoFDIC/zq+bfArMqHJnJy4KvRJqxd/COwwuGkebo5tNIGm0eFPg6FTsfxmYyEnhUNuLHsRgc/5/nUfyUjjUkr+uZYJv+dMqBEo4tHJGBhZXKT/zj8zDgnbWKz0ToVhEnKFjX2SOJmcNXTGodjoovNbJYCvk6VQygC3uEzFLfrGejuGKO+PmlqqZ2ZZkts7yKbPKxaGw+1svmS3ZCXCUIMaho2XDvCE4F+eJH/mMzcneb0+V7K0u9I4jACPJPeh/ESi8eImbRzUm2gWccY+GsGmgyYPjY5LPA7V5QAEXiluKZ+BdZHcJhKehW1A6zIKbxaPN+9KfOdIMvOyBoopq84P5xadf1g5nigik4kuPzCDEoRBzjz+0NFzShOCG5fNlrTjJaZFK1WJKIG+JImDmlZ+m1FDHkTfwci1zfER2h5Ocso8P55VcDq/x3MWO7E+KiHYcQMRlgyz+sUSKZxMr3BBZ5zUXlk5qd58PwpC75PfrqU19jOp8L7AZv03oQ/bhrXBLfl4e+f8xdDtC9X9AXhAbOPhlvCKJXL+f3zorcyTNuAyF9ETfcO6+U9PG3i1yMa/4OukjEqo0FsvhEq4Phm5wY8SA0O52dVcX789GxjfZBokEQY7u1qR+nUcn5Lki0jPhOc+vYtNHAHUSBPGId9LHIhT9cSlyrnvptRVj/xS/h+YGEufA5ZMeV3VanwURsg48cB1iWX3zAoUOUA9e1ATZd3wa/QycOYMewNUsftrpApywCUc6f/l/q+vk7YQ4bfjphi4sxlp9bVdOwkFlNM0uUKdz0+oL3jyjwQRUYtqfxIxiiAPKhOqXMItgWFXnEo6zwigj92EPM/fe2CB52n6DKhk1AC8UxxBLNx1A1R0ngL9606nTYZnp+E5Tjk+qYusE/eObeYWFjlKPZFvdOx0U2vDYQpfHSlEGDetsAIj6SvWe/fxCh8fcwF7OI8sOHOARZGScamcnNujlMj8X1UxPBlZyl+GIUhnbLW0Mj6pEsMOpajd1wrhdBnbOs5nR9FqtxmqqjKsOk9SA+P+yewuK3MEcLjMMZIvkEmUIK5Vqbg/lny9j5bZ0oTsAQ7Z6OwzC9ScdsBm2UELpNKejZ72/k9vYfa9gTTcoZqMQyMzfQz/uEaARJe2y9OHljkfGR3jVOj9FW42kOXI9QGCbqApdHn5HmxySA3PX0g3r1l6uifW0iWwS3wsIEYRXnkHxM2+hJ0KhlqiELiMjMNvHBwUAB/xX4W5l7ywzsMSjIr/uneHafs//L+dWdNxDIxchHPw+SDD+TQRgx1kHZjbdOjgIfL1ZKH4TGhV5N2xhXITSkDBbbA7qtM1LnhNSO/ii/t1rgh9LtRou5MuIEYH038sThHYRYwClZdKNTlYUE9gzcAxouObogr/wQG5ii3PqN0pX9tYW3er653gGL0aK4229AyvTL3uBeVGwtmdywGuaz8BLQVqp7kHjUyg8rRb6PJM3JFvirc4XXVQyD9/qO+5BUxqVH3lC3ydYr1PIw9GfdO4R6W0uMkTpSF0AYteEZB/nXP8aJgJbTAsPlF+ToV8m+RoIDBudIKlhrGFjP9iACJT3eV4BwJXkQTx+Mgoag05e/r1s3aWLoFoBhjMmCOCFZXzMssuADwFBnHdfl6JWm5Zd6DTbq5TpEg4PgCHx5q84GxevizR0o/7jJibLlSzVDlHfDJtQwAC/+LxmgzgRdRwumxNkqeeJ8hAJQp2GriLh1T86G4qEcdSSi5ABJpYeFEq25ePj9/tElmTwN6JIHG0tYuSj/632s6lojObkwFPEA49nYPzC0yAtffIhjhnCPoESvm6+KLBCYl7/plOEJL02drWKT5Tiu86gAfInifuArBctIYvi2WQ+tMSLebcbkRgPRCaJsJ1/z8KzDH4k50S1iOGLD7nrjO9hAqTmATs7jWfg21we4Cn8KC6e8+ksPGpMpvVXxYZDEuchVY35pOc4a+/bEI+u1g3uCwyTo3vrPG9BWCbT/nwH4zMRdifbIdddInr2746zod5L3/MrrXat97DuAKuB5Mrz7sH3jp/CJ/cj3X/EwpMIFAMha93Xv+sO0J3+SkP4CdwYEYJX5cPGZ2hO/th3AIqAOAFgCaEADdYABDcwEGNDAet7iXKbTFQz1RlENvPNV3urcN8LPy93O9jqHxLJkn2oA5cU4Zof9SzfZenxX/floWI7fUbVUmJJ6bbPpzPUGSJO3b+qZdipueejyIrF7Eh8M+qb+F5er3ehiNgqTYIelqwBz1JFVZL8osTiFCjPTXAzchYzbKWpiJQB0oE5p5G7Pakmd/s99/UYK0nF6ZReacvHJ3RTmY2Gh8ZVpKks4qMEq+4cGYsvTl2EEb5d8BKss6Xqy6EZNd94TLbfGOBAEabZNxAAPy5Y7IfzhTW7caFtJpDWXBWEGJVwiNMkhIdM8G9Pe7L50/4gdtzcrIKI7P7al4ucWLZ3UQVrgdE/obHkkIZGMSawfMGPs1yPMG/mz3CgpuQw3HT1l8cO4XuTcE0S8IkNFz6uVchSlKr45ZYopkFz9b9IwGVPCv7vN6ddVZhj7fmU+xGS8RSN3Wh7xaOn2PtJ/QeTCbPqDdK8MOdZMCJLt0cNA09YMF0ddaJG1LOsNRbwN4qHB8Xt7R5TlbpTuWQgrqrkDkLOw8DLHpTHuFqLqg9HfSgeuLNtrKe5eY+cwMdRFjgP4/qPjCDg+RHDqsM77mYrrbAzqT1yjMVfwTJTvZURM0usoXAT5S6h0PuqweSlQlwWMsKTRwGGWRHXoOzmVdKsVVgozhORicsAWc0BiINwXYUibrHIh3K/gc1jALdJQE1PTLkjC8y+1E5anrTI7T01YfjLaIq9vtjr7vCi1TBDY93Nmu33HJbRiuaf74vftq8dJGTVwOFU3nPgDEWjPGm5otMypK5TEBFIwVZQnhq1PWAk+rnwFOEYT3mM3WXEhtp1JSVGFtnhiUAzD1ZgGXBdfH5XQ37qnn8DJgtjTcMQlHpq7zvxYmc/8z/oBGUDSongiu2A/+daBvEg0Z9wKkOZNCU9N1tp3aTwLfeDNl0yhBDoLdLGUi0Du2Mb19dZBQcYufzdMOZkE3BBz3d5XopBcqNZRvnrElL2LbCfC/oQNv/jG/vQgzKGY6SUsqBelG61sn/m3zvxbZ/4lr4BPlliSdjkNhu7JVTMtM9hYvfMZANXynC/Z57fZu1ce1qYXflV//FA0zNFuZNB0rp9DR8jkNIzWCTixI/WZkkca+lMxhasKVssICOuL6YRPIxqbA8BUMifXTVSR1EUnbpmfqx2mAuyS/XzNgX5CVtLGhRoh2S8zUf35WMVwBS6hnAs5ppsvrgT5IgJVnlwNFSSMjOk763BvNozGF4ALYV2gh57FcItut3bW+c4tBxSjdq3aXAbGkfPLG5eNoebX963ZEGMzGpSoiELABJ6vcHOhgEGCc7au7wzYmMEv8w633R4dJe63fqK8DdPKomN98a95+uaqRqQx6j64zAtfNkXGu0bdPi0p/LSZ3iJRTNQFabOZdp/Al72hZlfjApMtvjZ/OG3JsYfNLF8S0Xi1VWHfhVi4Ke6cu3eFTanMGMjF+EjzABfrjSOoQRK53U9AtKwnZdzqo1ltPciLOlA+FahH1pZ3WtaaPfuu83EECgb9cDn7rJiTFcy8LZxNOpcLzUGW/RKK2cACUzS6g8MTr1bqbBr13AUM9KJalL1r2QSLeNy7OPWyxLKeOki8gHgpH7Fbmf5kLHnWt1m+GHHCtxmxITO9RXSbHeMHUkzBFpijh+seGc9dXFSDVhSfqxX9c8HtmjLWwJliof1Fs0RTYz8ymxmnJum29cGaUR0ujsF4/q1T1je3LeMZ5UuuCSxoFQ7pWzm2fkANeT2mQW4e4TWMaeO3pwyDBxf5VZ9raPUDIFYGKnCIko9SPyQr7m1AbRQ3LknG5P2yJ00Lsh0QhOptVtB3uWl7ieJtMLRaqzmsejDoy0ZK+pAz02dU/k8RQ9VmeRoQU+k6l2LUgixXJ/YVKbPABwoy14gXmHzurB718O4XpLqgfDYz9oOyPPMhHl640/diHAmZNiht61EvQsK1+UsDPvJVKrm80HJLgHpxyvg8VG9xq1YaOEJNrxKK9l6dJIPsyuK0Cw42ZC1UFOUHEExOHE8f6OvQAb43dsu77866fUABrjRgHOW7Je+ef/+327G6aH0msJh8KDePlhM7jtYp0FeNH2txpH/GMhekIf1rkgiJuLsyYHk0TYMxY57oTKdjU/Inmsx3LkNoqnc/Z4/OEHFosy2PXVBHOgaskQBnycGpxEmJXV9Xg6GyRqbb+TY2eqHLW3RK21m73VkBcvZIbRI8vWXNq7beM2vYOLhQPLklDPF/RzUY8lIYYa4viK60KNrVcpcD7kCb66J4StJMn2g/2QD4c436RPYy36521SmOuAxCDmjbsi39btciulIBDCRhUCIRhZbplOsAj0eIveKPyLdZdAyaNtAnaTLLOsIlBj8v1aQeeWW2aeIlnRi2Tl2BhLfFpBuO8rSdnl2M7AQ7T4NQKUxVwpcj2qQ7kOINfITv11lzvMnoQA0mqNq8z6W0cLmdzpYGtHuyBNCrIFK4smn+gbPb3Q1ops8K8KkOGRyrp1pElB91yOGzkPji/HhxtuR8mJdsXQdaiYuxZvjnmaVt9Uf/Y7DTeD7KO6TPUo9/olB0BowMIpNQPXqfHykrzs+e89cFZqXi73hDoNcAUl2XyPk7Rbg7Q9+Lxbyae2/jeEgKPrTe6u2QNW0jLdQO/TsScf7K9d/RhoD/JAcwlO3bzx3ZVjf/WMrd1UUbzTX046pol7cv1oYW08J9Z0iFXEZTIu+H5dJlz1yHfHgDQnVVlbtm4VSnraZfnJGdovhrM3nJGt/2otGT4MbNeLryzvYAyk3DiAjLGyzQrnuAMD6IYFwl8A7v/AFigRK9v8ZSaQ/80Ew2iFHIcljnQ/XDMWQit4SP9430Z/PJkDWeUvn0x47yjmHp49b6oz/0qqZUBnwVlW2KhY+koO4TR/qAUsjYht6IbS3GrLgpH1Ujd27vUFAr3r1F9trEw+wiNyUYrMq+bWL1UzVmIllh7YH6/S3SHLxKaEVcgZ+F8MzWu8BVeA3hKrUDS2WvVL9rl1AG87ns0XGejfC4tWJeEYoppO71bhv8Sfjj5cLiHBSd6t+O0UREpvNB3SySB+er3FFixGj/C4pIabMjtWNq7dSHpjybQv6QMfX0dKdgDiL4b+QRT/gAYST2TGcFun7VsC9T/sHOamm2/yJiXJ0Pw+65ojBA2AznJa1xspcl5lVia2nGdIV1Fa2XStTIm5jbR+N07fVZKv1M2Z9fFXkYR3BvEDF+JAm+1voa6rq31adV3u95VpaunVN9jNZueWe1XnvH71h5TREs3Jg1djlF+avN895/DZ/FAHrGjXHuH1zS8G+24RJH/hxfNA7nPMU4wKP69TIyWedcZX9mteyHj9YKxuaNxx3M5qzOfpC3doaRjRJR0AY6TF4RUuy1AQi7d5DBqsMZ/DdQeWDAeIxqqWw56fIK5zH6r5usimIcwboW327CcScN+H549dlYqtN1PpuN6S/79gNVUvn6JapFW3CBn50fcULGDzF0LOq0ki0LHZPm1G5ieJH0xBzD0/mNYu7daOf2dKi+Iz2v4Fhu9TcTl9QD51hfSIdQLynymI0xpCpO1X41B2a87RDtVejVhlfByx8VTqq7RY+dPKTjStbkq7L/R9nL+YefPDUgpJFDpXdAIWZIhgc3yvdu3ctFEh/5cpxWxe8k3tPCh6N328f32m77Zvuvzyqv7kQhHukfyLxTQvODdPprXsV92u+29zxll/LGAEU8xZ0mfimfvTCzzgnEpSHzAcHW0R2nUprPjkm8soq3RCShidWKlBSKRcnb27XErLIeaT9C7Am8VX5ewf50Fs+9XXBjrZmbYNQvkeFhzHxMAkYmDVIPEsljPpZHKlKLZcWdjhf7U79Tc/PKtrukrxkslwF+6ur+h+K+tD4wUPfbB/FO/53Amxt3pAhXsrroiYb7YKT9y4+1s82HLgDVxvJFIHadb58SCBdsOdF0tbofQm0P9n6gl5q1hfHNhBWHaljUm6D7XQuHWRxW845lWBOg1pnfha18dQp73Lyw3b7PcxqHK0cj6YdcsLLC4OebwQjy/c9xq6tr/867LnzLwLOvsc7z9KFBh4pgiwIFIlluROHCle3TTF9d0u4X5641NjUc0vZJYoVeC6zOewjMx+ULDCBQDxjxqeAxWYsTJ/p9YCFA1U6hEAXJ3oBLdF+f5UegX1VyojjqB6fkCbr+fVGxviURrd6iD0RZwxON5SzQmuWqE3JzjiFJ+hI+EBJt3dL35wP69yBumerrGwournFwcOJHRWVVhNsmZFgRxsrfE3zJg2OEdJw4gAfIyzjwIQQw7Z71XHzBAwdY8Pw9JTPHvvZihnf1OSot97ng+xKJI3sCZu75rtTWXpMFP27fvYsaM3uq4AxzdbmqfnbE1fPHtlLx4bQHpdtunR9VsuLhaeVIif3dpaiPLcztN5iMlTrcHvK3jawICK3dZNJ+XG2n/tpRMqvvaUEpmm+9wkEab+E4W0t6pwMW87T4hCm1i7v45ZRU7cXO7ito7t2q8djUZDFpr+7+AZDzLYxebvEF6U+WkwIG/FYNAJJl3HAq+Tqie0GywnVvvHvpE+cT6VoGkjzsH42Pf9cGap9sSffLKFzYjJf64VdOn1TnTWhztIy9DnqfWOBiqc/6/pvyLVPZjflCQXQUufbnYkn6j8W9Hky+6QRtaWiKePLnI/CYfHce2R0d2K/nLK8Zg/L9IGfWNLKAr6srZyHXP7o3wA2mnOvszw9lLkAypiZR7J/edDOFZrlbKTzJ4lMZ80PqME5OQUDDYWwCCBKOQZu90RRKjP469B9YZsz/AhImy4Klyd6MEsXuNgDueGz6oM26fA36Jra10he1osALGS8ksywi8fmn+BgERfL/C7MoiQaPxBUyCoKe6SUV1Fbl0KtGSl7P9GUgwi4h84BQU9JRIgtjEOYwXBlmssWIeFgs8GBgGh1Xy64md7tw8UFjJJU2rFQO84H3G2fFey7k1kh9eTexRWelz3MZVfkgg+su5Bfai5Y251veLTyiS8BY+5uuZLfs68hYRLRDiSqLfafgxWpN1X7OQyuuS0Jc/qTKbJi7dq5vmYeyf5npfrbPMb2erXzGsy6by4hv2rWokP2kysx/7Mj1xh72fSnfuNskXQFtqBJ6gTt9QVuypEWzVs/kH++OVdO0Bjh4OEminUFGSLqzQjLs7BM52jK+/WWZXHv9//bXQEq3OpPo1u2b6E+AnIacAUe8MCdfUcN8phT/sIm9Vi2n6p/r9zeh4qg/YrxEhdxXggXWo/DMhdZU9ShRZBQBctx64wKxzYNGkfLJdHhbo+3zUDl67fePCuB/3p56ZOr21PdzeGFkGSqJOmAEqGNcaj1pKUL0IJ2bqfehdriyLHgQ4tu3llXFwwZh7tM1Nb3RDI1Xv7mfh6Pf2E6qXLZ4glKrHd9spxFhRnqm+mrE/BP1Ob1d+Qw++OSnbWztT0WjuxjiBsEMBHxjP7AnVYikuClKzDrxUnqoy5UXdzp3ZEMjbsVLXt51Tup2hYdJbQBAz5Mkjiydl4eRFdw9wRz8btzX4TtMeuS4+rOvq33YlF4Ka13/vz4M9cfR1Wr8pfi+8pMveEQ4xXsSSnvrccQsCLbnz7jvfB5zJJ5B8h6rY5kHQKD/1KMUVZIdoAs+ZezggSrMOe+s87zn8sx2+Hdsr0UKsMA7JgT47MPxZvUk9wsAWuMCiDeAvNR6PLwJpYR7hYJMFiuk3u4uxXxPqQK+d1qK/i4gr0V3+eJ71Y+O4hd3pQJRdJhuoy4K+Cefar/J+JjWzfLbQorarPsm4/CZ+/HgW4u+jGD2r71XOcCimxsLPZ7c+mwjoJPJOcA7r2c3hNnZnvxxhxp73wFKHF4cgItAt14IF9198TKzYm/d+Ft60micbljhy3QGqedQBtqX6Lq6NrMdgE8yezdni36OTl0t1GpXq+Li+UzDsB4aPBgypajJUSr5oL+ypdhM7S3s80XGi4ebMPaWGCGA2LgkEDQrELAZ2Lr6HyOCxyRgt7FggK7+hgM0JLk6IkoRbGLhsLU1ioIvl2oJDYtiuDYZ9kSHitrvGGLIE8VqzmsxV768PMcie4n6xsUbidkTV6AOWqgKWCZClQp9hu4ca9yDFgnJqG6/MTvgLV2f/Ycjw794dE5U8Fh5vrQ4iVAEQzO4ewfXqCK2k0w9FJiOQc8Q6u5y7S2E2dh92e25C7afh3o8Rbtdh/NreF+7mb0H4SzY6Pk93n3+uudMDMCCzCXh+sPwgapxViDuTlxPir7JGwRwGRaTZxJMYu0FxCGe9TxqnyT/ZQ8Q/kiTF3/QlHdLIUiZyVA9OC5trRRbDwsIvJCDDmm3qQr2aolz8u52yipSv26a2UYsKFpAwHMg/zI3Xcb1mhTGWKVvmUMnRzJfX5ayBSF/DYyNj17b0VDNOyvuv6lFYu2aot9FmJ7trr0ILBiXmJq0Cnz5gmZtBlw2aNkl5kv/Q7sKMV7RYWFgF30Ymn1dlMHA78o5LBTso9hrzw8F+ZKrG8zEdKFGzYacvPQnPfYXpBeaptnW2XVj04jrrAKgzdazxfRehGBcfG3qCJq/bboe3so3vpvOAv7oAsHE7/30qizPwn9KXiK2eZkMR4SG/qkBIuadT8o/AVfpBbxr7VYO/mvtdYj1Ieo1P+inYwJ4zTuJmeC95rkk1+i95q+PlbEMXMvCvsaO1Wvei+m28zfwIC/KBCnE3v274E9z6qTy/n54zNENYuWqPy17B4yr/zJ3PQj/q/z1t4rzwrG9+t9u/ZdD+KpLl5LM1flO/kl6Tq8Q++r7+xvup80HWCIAS9xdDhPzNJt64OpHm+o03OE4HiyjXU/i6no38yQv/IHONZy+JntNZ3lx2XKOK4I4YFzDRXokb7mMJhIxeLdd7dL0+LHD/2LczSm3B4bwXP0foW3vX0QWV18lW3v15+oTeWKWu3tCxNxbln5hsck62tYvrGyuCDgPb3wPuK/FzvIqIBC4Npfl1t3WmFnW38kDErWRwbUFAesv+K7pLtslu9VAUph2+w1ISRuAa9nUB8NuEVu0MhhivVriqnQzMOoT3uYmmmRrm7L4PB+XRcz20xxdqgH5x0U0NIEUNRC8ck+PGJlWQApUrsJ4xJ2GARnCVxE8VU8BeAPwKYXRXSQyQAkErrSk2xY5AqQYedkWup2RQoAKoSvd05Zr/HKYeLHEOz07nF75oCZ2UaF1XYBsutNRI22txckae/78PuNaW43AeM3/69AcLGyvsd4ZBEG9hhM79si0hO5iCUb60I34Q6cz1kY0UBq49U0MdAbhB5iEeHp9QpLqFJG8csAggKYekrGbAS+whcFF1SpXcmAjP+gIbEQDHXrl19AjwpD3BuA1+rDig54eHDkWmh/zEK4QD6tOQ18otbDXLqTHKQ6A72MaP21If+4D320GApbqURAlM3CCc945B01GyExKoXDOwSoAnBKsIvACyr0IMDRAZNuSjfXPH1LpR+FiOt4ccypVrZ0IDFHnKm2a35RL+kiKdVu6wTjgaw8v/z2nM7BPrSZ72WmYiLJrUvjbMu3vvToHKcgAokxw7xrXs9VKHU1dpfPYYBAWkfTgK4jEBwNcScKP0APw4NFD6R5vCSAikg480dGHDFBysPs0iTDuqAFEmaAtvqERQ0cknRBtsjsLheepL0idVnrwXYYgAUkP/aSs36FZWD3jXpMPDywgyav9H9eE4YoOqYZdL2cThGdhdfBioiIMkkQMwuu77mTjFzLAyau2UCIEURGtJI91B5JCR68OrB3/JSuLkMscsYTeG00jUIlD6iHa8PdZpQ7oAJ0Y/KH7YVlYfX/9Kfpub5UBvhTotc5HgpU7ZMku/CyI+CQJkUXUQXMYmYEicgi+pJSIcpmXoxaHTOOFDKIjWkFJc6KZCytzJJXOt166tT4USBEi4aR8vz9bp7Fs/Yace6Jxo5J+mCz5PYe7Bi/TLK7m7q7+ZagvbEc7+2OI2NTa+jRyHf+Gt7+z/fy/yYHkAJRg5rL3G6x+MW4/J19M2nuKsDBnm4l0KE0cRib3WzQsvfZunIAb3m/Dub+UnYP6HLMWdrdqvajFsJH0PRHBGo3udYvkRChPgfAJ4nkYecv+W0LQxKCN3qExqIO3FNpdhy+GBOeKhV6MmV2I+tGuEy8XQNa0uOZ1cvxnORV5T6MQ3salnN/uYmNGmtpLzCV/KG+kXHBzQPzkkv7ugOZazqFIxxyBiwMS16EvwZpiu47PDjK0deIgQXtQT5dMs4s/A9r61b8XXdH1Ca8Ucrl6SvQTb9j5jtmZOU16W7ffDoew4Ok7MuF/CBXn9Ie40nP8IW65WlybDeIQnQRRCO/DHO78HTZAhCkJOCTN82SfTQ9PMI+d6BpiYmEmO/dMgsK61zNBAyMMLtiIB6MBS2zIAa1lUjNqiJI8SHn9gQw74tlp2GMhqU1PlEoQjQLphLhZAFcAnl4/HpHe5UxhcwYeMlL3vfOZDjbWSCOpG2yZrH2yVYYaXipULGiwnLuaE56Sphi+vx/i1jgZOaguHh2yuC2KPFKgOcwFwas1bWsuDXHSQRbziYscwCqIl6leVjhh8ZyvJNn+OAvKSinwQE3ZopyWPODBr37YtwNl7U4Vk/yzu+k5Wm/l3dn4veL2t99nk1QqiprFFQkAY9b3v4q7fua2Rojx74qy5Vw2duJCINlYkypkfGm98SMzPq6Cuh5cVHdKlv7sOsnDcego04lvRdwWtPpUwYOft86qaMG0X1AgLHXOsBJCN4iuqDwhxgz2Ja75EwCd72meDTve7SDWulazQMNOAvI0GdXGFo6VfJJRJEtnGp/ZRdbTsEWwKufWTZsFGnZBUDoxK2De2RmrdFQqsFo96WMwky2FdTG09kEOpC79DEudA5qoRucWB/9hB78+v+ZI+gobhHF1mQX1RaYG25IHSS9anxWDrSSrEm/GMgu2xMC1MNp7FcO6oMlmdFWBf1NxFdcXxZJq/ehBSAWZ1G0O/kz2JNNfXiGJtnrpE7/V5HU9S3zJr8JQX1cXa5M1Oj6Pb8RsTrKdGj8O9F+NFv1Voh6Vwl6zgDXcmYhFnEYkFqzpKLZwjb3Zsq6P2EtO4WuGCE5RZy4w3eLTTHEDiFn78ee37vvKrDPk8zbkVyPL9STxrrab6lQPCnJn34psCtjRHTpLg8VjaBa5eZBpc8+jahjA3u4bm63OvSMtQxP2Pba+he2d84XggADxcyyHbn9yTMAU4wYXPhTLj4Til3bMXBMDy1tfCxEbAMMNCqUbWCEDBXZSBsE1VbZB38ijr0q8KpcVITyHx+VCG+JSzugzh92QwN6SfRAEz9IdwtB62knNOqlGqI22bvx9WQ7PoHiopDFVLdf4SBnMMqaLUrfXC1ubvzRQD5h1SXeYrl1uwmb0jUbJB7/j9d7T9G1L+WAvFXu7fXGYY9f4m64r27pUuy4nZZG3T7PLNakkLW22yW/05Vqc1kZvjAXXphIodTP/5B0O2diQpUOlxmsAG7hvmyZBGSSoWu0qlcP4knYiRO9qOnKpMtqm+mecdwCiF1rYCr23xICgJKM0tktDvmMgMoGbGh2x3jHUUFqAlLy7HzJRW0QirAiEGNpM1BZ+WinqeMwVCsIsC0Q2FmKylRjQj//2QTge+pCkY2cKzsBSYBolPiZe08oJEHc8Bj/RVAmDbeAhWOANqaK1SDHevPzv7oMIvgOQikJ/UR/+GA0nA8WWAiAvrG7eZbOPSmmKUVAJgJCCNTM21GrY8fa/oQRhoHZZC0uxFtuArSMtGT4LqlXPSaSxHJ8HPv5oAg1NTmBH0xEhe3OFa1jGCn9jAMdU6EPF2dnCi6GJ44BsVABBQO2ThNsAQKTxhJR9r9tCMiAtYi5HOkQUkAOA3a/CigCo9r7/MaSGgnWGOEvKPAjmUeJ2bmPV3GDPu2TBkpPpkKmELJaJEeOpaKuqwIAx2AHSy6fOvcYUeYwtMonZ+2g598Nyzirisi/AUwOWeY+nn8UyzxjPjoZCSV6w04A+epYAnL7GZknlCQe08gIS5A/nKKGFIrUXwFmsj/w+2Tmu+gCA2RlHsLwOJazf1VB0kC8GDMI2Ce265LnGUg5FpuIfEACCwKTvQecMR3R8Zfi2HC6gEUGhQOuhxZ5OH5Rr6T1wbimEyg7BZ/U3+b8tYW/HPEht/UXILZCwReX0lBL7ZsQ3Pykn8GfqQfMYPN+RjPrEsH7ysouUcY0N+VC6MhtbH9whFgyK1jUnT/1beBziPBKQ3pTdy8k118k2IPiLubQJoi9bvRXhXFkDGF41H3VV+9WS9S/rSSsplHb+qkSh3xeetXI0L0SeCs5BDrsCWxD9sziDM3wUEMw7hVrtePY5gJxN1LfyGV9kAwRje/H+2fTgh7VMn5dsiAQkif2HB1LRDiGkmjLknRpxWPi6tYda+KeVLU2JuG2omYbpR6JG8m2AO1RQyeJNuYg4dsqqFOWST3+CW2/FJ8F/03l1odXAevOdyn59HcxRk0Ss1ooq+PRvnQ3C2tJY41/oG9N8/IGH559F8OVKCKQ1xLIcIKAeD1QvgVdFK0I9AXpTvYCGqFTqrQQjMA5NLrCZb7GRYA7pFMHaqBWCiZS6p8AiEa+HEId1yBc2oVOMNpr4hrOfT11QIISQ3y/7bnXN1tehmXuLFHESHvYH61cESbenYBRPX5HCY3CPvEmzhTrtnFeaVHQ77gZv1XMMtdCtqnB6UGBJ8zDczdF+s7Xh5oTmyCHLnylx3VAsrprlI8+5/8EhJY34k2T15v6Fc/90LoG9FGlLng2+OSG7i0R17ZgT+bYMfbBu/zLatREul/3t9erWEtw2TJFXuh9BjXICyeCUohmTdVndSU8wDYIPm5BNVNvcMQo7uJg9U6JyQ22lhshTpTe7forJMhJ3DyBsRjhq3IFUMfFmvh1MO58AlpFtgMHoLYaOdkp0olZDzCadklV1RSDbQq/bmXVdKlHNyWZC7+kRrLsCBMFv6K0Bkm4WO8xa6dzfCETzctK6qlwDZyzSp+i7NG7jO9jfOeY2DthFtPCHrslDeROxKZKlMvIBe05f7D5Twuy5FVz+cGL0fTWfKHLO29Rj2qw6q5iaszmDEKIcQjcrOu8RprDK4NAj6bdFKHpP2bfggmCvEKaFHSLBW3Dh09LvYGSmdI896p3utQUOMAQPNoJ0D74pYwVUhu5rd5KnCgHuT0sS6BUyD6hEoF51IZUtBohT6mNOfTt+qUgRkYaUFFasHtKniqYXJ0c9slVnNwgA9V/aLdyjrtwSAgGggBeec0ay02/oKtdj7QGWG7SxByvKxa5oApoP/TiefeinBbmWJLj72SoDIluti7ZSmXzrO6nV54CYn0UHHAH02LaI7xGQdRlQ3j4mj1UwFH/iZWzN1NHR7yRM3SnMpW0Q3skX+D+2OH2Qsyr/+KCKKelv7+Zmn8sLxNZsNHBMgPkS0lM6G6sM+15xBp6ss12S5PbekpMDU7NTcpsejQgDkJ5HhqBcT93wOTwdF1xdVkl56cfEVeL8yeWhegcbggj4ycbs+vleYAgCesjo4HnsFkXB/f14ENviUHMuCpol/iB24BnubF+HwbTybV5vYB3ne/qpjkAg3fI93gcW5liOCB2Yb2Odg/UXdBj/B82SzmoXVk6RFJveV7LWk2Vc1sOJeekl/bqTRO7bDvfTi1xWqRUnOaR5/VBBGNfgp753cHei4kNTMbjB1kSBA6iMtaqLnmKZfnUhSTFtJEqsXlA9HBZ27vq1Qzeg3fAIoxqg/uKS5RfjtuVPEgcoDVQQmnIVmyhWxqhS/mD4gGJjTf/djLMwbMfqa4y/6TQgyUx1iYUMPFCqyejyI4LuUYdEnd/8L1j+O6eoAmwdCrdNlVpsxJ8s08Qc8Qehs6gu9Qg7b7umC6eIb9TbN1t8qj6/JuLa6y6EKgyfKV6YRFdALsysax+SYO1puX1i83j+Ndg9bbZGXe3u7rAZ//evKQWdC7EGvAHzWwRY7LY5peBPlXDAMYgSCetTwAHzVEJt4PVPHkcIomnf1nPYA1uhmQNFE2FkRAl8otwn8rKfwDdx0mlaSUWLuOanJiz1YytKzEj2yXayntKUKglcahKeXjUY7getsFb6hnfXCLLwS6RmCWym+WuIr4DppYsYE5v+vRu77/m+s2LMGGqRX52p1bT0LrEp3y5NlleXKaApewJexgxfRsE16lpagPkK6sBFiQHHUZ2Tvmsq5LSR6fJp6RDI4CzmJMBZl6XJ7jxdvL43sdWDFf2rGJ/JP2GBPHIXS0WTP08YoA2AUYNGR+DkIwwYQT82zRtbKrGmIpLejwfEtU0MLL3eF18j3KpULciBn8UqJeDoRvZ4FzCwGKH3pf/WNlQtYph9YRtKMeTwaQioPguNGmKNdJ8+pgSQgSCAMfBblFAJzMkHMNu/7tJBIQkLDFmV7IG3SYk/NMQz0pOmojhrmgQMEdHJv0bZS/s9qKKfM6c7xSqaYcrAinUTrYCA+IwO09fTLXniUMkxrKQST6TI3v7/yExvfRefpSS/uhQW4svFzg3+W9zzCrKu6/3SKeZR2g6LMkeI4Rz54cu40/qf5RfcbKIhO1wSe4HrgOBmd1Aw3p7aapn4cu7wFETK7CoXt9GYXVeqhdJUIRQGwBD86Z5UkgNp2oWENF3Z/AlDVc1pDtaP8Nd9Cb3LTSWdSZ7p9yXxgAWdRz1F6610QthkKVgEVSEfeSbldcXllSu3lm0Av/z2kMeXb7i/jzsjAAVGNTQZoPDHSH7ISCORGQWrcRjLncecw6561mZ+VwbXvePQ0qgPBTqFrRQWW5QrsizEW/BGahNr/oBzB8I/QWuGyoH5eaLNFS/chePk4Rb/6v939Hesost2jokPPlmZesOXEwP7WIzqOPdBNNtV4Y2vjttc6LSyxYbhNoBWm7h7eCO+wOO9/p1x7Z0M4sLV6V29qjl4JT7ukaLldGuB9Zj0nF18TEJLjbf9Wm/HUNjlSPOIY6oZ54RSwT8vB4nAMl1RinLASrth9YwaJQCDkf3VlXTmp9F6weTOTkIhWMghO6ByBbJufY6kRRJKX8AdAkE8kJVvE0d7S/gojina3d9mtjQm4vPOnenSGgD0MMSaPQIJlKpXH4xWH4qYyi2oEcGmV0+w3LGbVB9mXQzwM8U8OHRs70xOpaoH5aDKQdV4QFPspbPRAucg+H8GnGg/WGgHOv40FHTSUl+AumC7WsqFamhHSi9/q0r81pKGU1mvSpvLjnPdtGWaLqF8YCVmQ6yrmTemQmvTOkffcH/VIgDMYIRhp3RuELIY09lRxSkepm395tY/vSG5BHpRSMf2C2yqs/XBoLrGfeBab+wqQ2PoVi1OGieYVlqBGdBYX9XWNgB8BkDDP8nTMyxwYVO27dKRnc++iah7/LKzzgD7a+5hrrJbC/O9XrsL/DXybRxpuGvx9di9IW1N38v1irnm6udAz1KUTC1JUeEJXsNUbrgcm2pxlDxyTB2aOTnoqzNho92GlqE/JuWPKj18KcigEv3dgoMqzkUqRgpO6y2g7tIxOf/NLY9oqccMqhtxCdx9AeB03Z5nxPN0IeE6PwWKABR6ZRELkQjbooXite1VT79oF6JqIxzkx7WCjBQqpHBQNElVrXmjQKXhPDcBFiDiqyF6UnGEyqtQ85OC25UVoO60XeczbFZKEFhoIuCIqKzqzAvA/DstHqjNX1qBk9749vWV/0FrORorqcaUUFyacp9srzRYzTpp17w5z9Rp7hESocvNlwqqNvGt0V8zJ812eYUtJAK7dgq3a+cUULe9aYZFEy/HPs4p6j8qtcBw2YAljW5d0BxkJtnM7ZHq7JPAOLFZXgMntqZpGDPt2yoCwSV04KDTQXmF44fIeIKSZviLzOZ/6SI8iyOqSJ2hr3VEakn9iF4fxYi2x3lQxPvgmfH7NR/xQkWSSt7ySc1KAdMHHwtwkLWbKQX5dA/ywbbJkgiyZ4k2afZkLwGb2ZS0EdR+kaUC9DG/jGtx/ax7nujkUQguyh/ha3iHElFYcLZtOaTy7BeICyp/AA1kwE8oQ8s8eCz0WZIM38jKtnHquGui8uqXkaJHrNSNP73R2jzYaSvmLnPvLX8y+uQe/z1RZQn82BRl1uPQ2Id/Y+4fi4VNFf91hUrEEm7E6C3TLshOZdddxszV7+Wbutr0cYjpq0R9hnlSuDsULt3hLFknQA1Oq8UC73YtWOw5V2ltOAncU+B9C5T2xpWAkiv8gBWgGNQuhiDjfm6VDUIOQRNyIHXSwL6hroEcw7otiVxV9vaAeVeypWicQ87pJFuBz91Uhy8XeO3y9n0x3jZZUOqlxpUHQs4xsV1rF55789iF40Wb3kiYig4MpMmLj8JbjUlaEBsM8VNc5qOOJWDDlcKIrM7mQpR5jTixA6kGDhYe5CoMH2jfRIWHAQQ1Oh86V6g/s2pt9BFHOBrWP4qzKNSM34U/45RPBXBCcclGY0hV1UdxuEZO9MshrhHr8JXbv2op/xJS5mpyFA9BhBBzAg/IpXEO5Jkr28y04DRGOIgEeVoMxAETs93M+vEiZwAx5DUg4+YhCON2SlMlT4XvXNw8FJZoYjugRborjrkJLxltahlDJfdRkNIMga9T+i4uVBSQoIvL4EhFmR/QzolTCU9syfgkpssn0+wP/4rjoA2BllQRlKjcrYnru5yG99wPmabRqIs7DmRRTBVFlfutM3F42gZMoiCJN9TnLF0rKVP7isZnej436RINtRjNxWeemCJbfcDbsfZrDmCmtNZiU8t/NBTuahdQUbGZ8WhaXTql09kn9uxjPTidblEuKXz5oHddE/rCnGcUk+sMXpiDQnmtAVy+NIfN6uuIuE9WQKJN7wdgZys3rKGS3QgH1GBxMLxUdwPaBvzs3IztN9mzV9D8hxOQ+MhP7Af5mnPH1SxIdHW9SWyKBqBdXS5F5nx211N/wjG07okji+YRqTiqYpE28GN2Usd6BiZG783Si175fRKQlIstgtxBD0fIgahnIHdw/9vFpFvvPd36QGqtSY0u+w4Id+AVkWX4hNFmGUdCPjN557LvyzEYuwZzuH8XP4CHk3+vpReDadyBbPyPB7htQgKJxEIjCYIKyy7fnAdPwWfpoLPJgqb9fbDWeF/HMp2tNRn5zmkkF4op0aqR11M+8orvAg8j4xQQJ6N+p6kjSeJ3f4n5ouCWeZpGnaCEBF3NE0DTH9CnsOXVtBZKfNGpo/oS2SWC1JOkSFOvp0v3MzZWu54OTN7IQsOvPqiA3oOWE7rIyRMZC3Ly9QveqwGlpjbq8ARapqJyxD0JHBwpWgYHG6UwBl3+5q1HpztQnb2JEQonwb7pl8+kbK5VnAdyqLMOZZ2a2JKBGHmXazGeUYClHjSJY5E3zJNIRRa08feoshzRcAZaTPqVOhYla6ij6fWmJ3TmMhLeMkM2PHrKhNPtX0/P8LN6pj/dY79L0qiUSViAFCnv5J5XrEuS9c+QUILPt0nCfnbCRp0YYC457JLIw5Jf/rkJlQ07KdUpoMbOmSwBVjAI5Iwj69CbASKPEy9j0yXdIWtJRDJtZ5Nl+gZkq9YBEvNcTaxswqFyKFI+DBXW0TDBxYGNCBNFsicVSmtr8devIVcUTgOVdWjjSeRw2Aj7/rHXaQ8nAMZgE8Oo7WRNKpECBmaAwwMMbvA+yNuVSdttinUFzklPj7NalfZ5lcHCuStO6p67AIAkx1Y2eLyf+NfqrWP+18gUSEzKkLZnQuydnDFJuoeZxMPPgFi84DCuaLHadhYtkx+S8GutDGDQYtP7kasjEKiEZzPRK6ULYBJDqt7Vc80RVRuYGqtjjCCZ5x+yGYdB7Srm/lsYpRh1IyAbBW02ai9fgkQ7keQ83dRwTRoWibevC8D1g4ojlDYUhYY7tfYenDOutv1AoxeOHX5sHZjfn725cHd1K4Yqx6wrH4FsWru2cbS7BvCSe5Uaj+Kp3ztVizBQ1VrXQrXgL/xt8O6RyCRzEEVgT+69DvH1/zN3e7cpwjD657nfwc5jWGotRH2YZdupvtEtAYojLzMeu23Rca4rqfRyN0nOupHCaoZN/TS3CGhrgvJpOFrT/bGntcagGSsfX6P+wXm1G6f2clODuPdJ+9FQ6e6l+4xptK336MaLzgBon2Muond0SDCv2TEhOHhtuodxzfVEQI61EuJOrCk3PAjf8aDIikXkGKndtW7TuBtRqPjbvSKm+y7XHkNA6zakzomzPonNnXu1UXcsaDdqedlvP9mTSabv9/Rq+icv6vN0q7FLBnOHT5zJIoReyHovn8/ccnK1Teo2l8L5XFLnxp6wrhQK4KeGTWL9QLhPigcxi+u0rX9TnwKf6Apj+Nr/LXQn9X+mQuZz6XCq4BPTehwF60wdKXsm4/1O0dRh96RvP0wInWMO3tRN/YSzUFRmsT0btpo9zV1XTWzTOhBKOE+UAESEdoSmfqVcuFciVGiUavdDdMRPji9xPAFYiZSphZl+9lrkEL8f3LcSId+OHierpvgk60y6//2VBp7VLXaWjGImFRbDUeoZU73VFGrBS+tEYqPVVyvrNBDOOV4cCXnL9jyDx0SKKCF7tMFXOgdsHBIZejLrl8WF+QYfia/EQMoAn37erC6O9SMdmWz1yDo68P8UXRY5+BYYjsvfcheZXEP9GnX9grkIovgGYUW/cS48zFphU/3WT5SYU+x4OB6GeG479Q9iORaX3hWIarQx3YGpvq3bQ9LKyfbQvGo1liweFoePgFfi1Ompun55Xnz6onsf5KBZyscxSagtziCoomvl04d3j1IrcnRDxh/QF55/mqLAvnhQvno4OQsQL2zIn42zYgHa3VDILSexofSsugurfixgFDUbKeU6bMht1/eKh6/v+/GaBHrXRNiwviGJgBQb+o1oIp5h2pDpt0vGsL7vPyzs/diQB+DFhu4hRRzgg1LLFeph/6G0Nq+wz72AGxuZZMFoMPGSSm4jsRF5PJ2owCDbDBvQJPkB2oCnArD8Dj9c0fuxgVQqxSeRiJAZB354Bn3chw3kHI8I3oJnTdXAluSMCmiIvSI3GmvMRZ91CoQ5Hnz5iXbt7JfU7mh1kFDqmjqhHOoqnKQR52SC5nUk+Xpx+Sb33cvu809Uy25R2xBpPJNKjAaYS0kgzA6rdMBSjfRgTKn2Amcx/JapTnJ/kKoWMNe2Zo6aPo+U6P5H2y96t62nTNenr9cu63CFG8aWRDSpNvvqUhY4BdORC/p5F/C+pwn2coywX5zbctdZtCxHC9+qwhjlAeZ0Eyz/pDlXLBq4lAeOs1XPtci1NC+3BrTzJnVUspuVqP3/AMifewqVDyrrYBkJGh4pM7UepCCD2hh1xjaQAEz4H+uh1hMNCqnT36JPgdc4EtOTGI4jZQndrnnD23oytaMN4ER7Nm5i28o6UAsGz8yxNQAvM9sjg0ZCQ4hWjjaIrmhylGh66h6d3jHI5N9W/TjSk0QViuUKUMOIkA+DBaQnBYoZVzZOByNmhskt/kqw048124fQplrwCAviIJ2Vs2u3J1x30EGHD6N3fI4AFxviJrU2I4zLAfkWITWqMF1kX8vtERGpraFPFQoxAp9lhI4H25giLW9pFROvJROBDdKk6awRlqiWt4aCKuRxKvCTJ09/DTF9TYEHh6apJTbSEm80kA2fvw9vaj2O7T1zaO4UQHb2JjttIZnHNISVOJX3RrT0IkYrCrwvx31zVBmsIl1te+Ir3dm9pYD6ebPnDS1WoWUNn+LA158yr3SOrWNbMMObUT1Juprx1B8kAK6GsUEclIikDQt0BXh4KD/CE8pLGd39F67HZTVOCMWIgCzsN9ZYwsgD7vIDFP0Z8ic9XlxxAW85YurZMrRARj9799BYvtnf04V1rDHHpePie427zBpJQGYqyV2tP4Zl/yjpZMFUr73u2Lc+MXtBcpH86hQVSsVkBe4RAzXLTe1WvIBiqehe5EJrUzbhLm2dT5RRlbTMryHXW/1wTzbsMvQ6x7GnFIJAHd9BiFbsQ5iTKR2j5w+z78uZildJplJ6qYldEtPA2W08s7sW3FSr0IiMumKxE7h9wXOPQxby8pG/CAsRr0r6x8tO+By48MMHJ+dY2N1ELQznIDs2ls6XLJ4ufKxbBxGB3CSN/Ry1mJHBxrfb5WvpyfdLfc7crpf8csnZQetSR2BbhLIJ/lsrj00ei+iuzn9WCDMh4e/wd9u+17amWyauoDaYqgXLGBR4YbDDVu9Kc4D9RSZGLEweRq7mRFU5Nm6IR989mQ7QTKCqdkb93wQlaOhEzHHiIER8V2clnveqR5qV0q2MjfyaznQW3VPmW/izlyQIMuxWgyHvkMZEwOOpwoBIY/FJaSKR9aLUhbyw7QfCzUxO9CLDvZXHC6filr5A7ZKkKdA2LtzKVqp5Sa9b1bKNd1fu3oyGmAqW1fX6XO5L9CeO/fF3ZNRZkQwMtrHpYksKaiuXgaE38P3qkpmpf9r8L/aJh8bkY9iZm+MG731B1rnUF8Oze2UYBO7gJOCSM1l03LWICd+6ReuixgVNonQtTYBJdiHGnDu9O6H7HyxcHGXBAH3pk0Zc1ZJ6NiLymPvFNdvnSSw829S3LBiUuVQqiJy7PeZSlO0wcy+nAWIEaD3OGCpirruqHaFNMcI0/McVXWUNX4r3tFXyHidvpaU9JzEF7VJntaqrzKNa1zY9SpfDqRxg755znsovju7cl5QdaNYAHzUUFTTp/tZcX1CnRDcsvWoP6ajyxqaTT0Ge/v0VfM9nNPF5yNyKTjy0Y+mNvBE+UD6ZmKfLwA91HvP/F1ebVhVdSQRl03XN5080HCtkcFVCkHctPq7t8R2b8B4g4265Wp0URWoc635r4ALEcuigPH1Tyznxs6+i+mp6yQuREdZHwz3hDl/wgx55f/wg4ZB4r16siHTR3WZkE67yyivddDWXt0LG9iS0JaEpZxhUT78GntUXuCVG7IRvAv4woMgCnDbFZB0zBUkfRGRmO2Xys/utrHftAehidFIsh1lbHlqI1ByxYYKlmVEPMzUoOSVqN7XhwzisUs61ZgidQfPH+oKL7htt1oWsfmLlD+jQQiIqUlJcxstEkV8gF0GlQbo71tY0SnM9C02j2Beq4L5XOoVaAlqU6WyjOHtSC9cjSTmJ2ZDTs8IXtiGR0Dg231t6Awni1NlyLFIZ3j00S6sTQVO1e46qKux14qj5ystBP6fozxf0ljnAfBWlH5tdSD2mUNFWGvT8JG604z41YlpWZRaY83WHEXIFdLL4xTnaEbM4oTJ3OUvjDn4322WSyzNiv7YxqYOBCGDhXacDKyIc7q28VhInipsOI4xZEYLeJFflmdfnp2VL/QWauMC/dfrCF9hs6cjt3c8sXueYnqXmWIr8wl19dOWl548Ilb22jNsB6GmFHiwBptUXk7jGptZl0rQyYLQAJ/RwHly4tQzPCyM78rMF91qeoEPep17R0DAB9RXZnFvCiW0+kZVpeqHOM2S51HCtoOqcxKQ51zjEJgtabblRA5iKKZ3796SU5q9w56aex3F/9/B4+JAd3EMjvrx+fY3kH/LGwFPiBPZLdfEDcWbUktT1hQYdPLxyGvmlOUH3ByhWlqU6FvaSwL2rWjXjrytzt8yV/kN75aKSy0P1/2HHX62tlhO7hsGOXGms6aMcuUR9x2DcOkLb2sEQsYY1VpQlTHti7pd2j9ZhUC7gNj7F08Jk8vcWM8zf8uujQwHyt0Ejf49IN37gwN4JcEhv5qq/SxYQwMLQ/Nyp2auuN/8Oze2dkzCS+KjX5OIeyW1mKWItgcB+wMAAjJpnp4vdDhjPCLUsSXS+ECKHpSxaV8wxvcZXdxOlWrkuN3IT1qQjrP7gZXCVNuWw1yhDcXqP1izTmoKk7IeAbYnxNp4I8G5+e0a914PVdowmEaqgTyCZCXt7L+8DkWGUb/Td9TaMyrf7yZczvNPXa3Kz4TeXz72LYwPQGmbK6tJZSuu+SpIpzq7Kyf9cADxoVJXdDt3L/jR/9N5lAEPRPd177ypJMcLrfXDN2S1D7yM8vCBrqk+Ooz/8zWFoWgnHvRp9PlRZYxn2eMesoOROqw/Ywf1en8F08qYhLqccAqGlAZYlIXDGmPXm/8ThUyxYy3wRGHFtTtUnVlJWQdlCLVeu8TTFYaPd2/uTnrDYH6lbylcHJbWgBoV47T7p/bKdgLhNTdXGxpxcQeTY1Kt+xs7e31tbgYCX8pisjYZ3YD1HdxGKD7Zc2lFzDw/2o26EoYbssIdZdUPYHKT0D/FpyNSrU8h41JmmBL0LAGEqlZiuR2/s+ur7/VeZZKB7a/J07pPwXBlZeob+CdYunrk5Sfe676ZqT69tMnHbTEf4RpXf/BxKalb9e0y6gTt9eOAS++LBd8k5eEI55NiqUF/5/ac9ydnfOEvTL/2zScByuzq8AcCWWuhzT9FI+3CbIrsE18TQlbeoKY1Rv8Z0HNhyoq525Y0FBHKdUvfu3o/Kef8QWNlXdxEX3vVbAMxh1ZSbLcBRmnV0W1EU4zVBODj6cq73N0HEd7LAGmS52uCg+DaOj+zffYEUBAM9r4UhCRCo1wUHYrt9trV8OMHYrfiBub1PUBMeahUrly+ASA9fCkeCXZh66UQm5EmM5jAfARaYYanBFsAKFTCbHSaMsLBgZJa40e7Pr9zYS4lNpq5FI1uBoNPIuqRiGyEsHNP4zCMY5KKDP+kgVzDrJ5v+bj4MWsztd0tP1TFVF5ynOgC9poJEvSUXMATglKpy61S1OSoFeiwY5+onqVb9qKKchOtbwQBsW3Be6PuZSpUEcqURXaCIG1MK9HQ2Xwh/+rSKztxva6eTdyPmK8Irw0FbMgC24xG+SrhakJygFg3QZJMw2fFo2lBiX628ir2ancfUDwtQlhpYnBkpnrRW6wXiwY4SYm5zgy8YeNYSPLoK7VeoVRji5uWrZoNrwN8sJHb/7cQkmQtg8VreJVoRP2ot8TW5wO6FhiQ9a4AI4Eb/VPkDa+6V+00RhLYodEoKG7Ue5wcyXvUCv64M5GtFHczM1NuTh0rGScHJdF/6C7dlWGlm3UIi+A0Qy8vTe32zfyI35JzW9jilCpVgBiXSGTRhqfI77vd0kg0k58r5BSoVXq3CCjW6Gs2vaIueNev+du7T9Y91HwAlbI/JF5LFykXmuBD7KDotdbJl/YTqDKhnH7Gq6O0z0WSPRrac2u30ZUcE/gXBf8SkoV+bau+0EU0OZrmuHDitQ/a682TfDI8/NcdBRqd8TKTfeAVN9RCH9ht3fwrfIew6DxsrUMfFRJ32yPcavKuyYbHpYeZDCOx3A8ttb9Iu1kGJeHp3JGvJWVdmoTPrSKMPgFmW55mBzbqkXZp+Cu6JAKCd5LqodU93SZ+vlUgJLE6rwcfO3t2B+QEbQ9jMk0Ikmh9FKEOe1eS48olJGyZRR7hANnumnLGN2/01CHYYrSAr8cRNZRi5W358fyDBm06Sg6VWe8K9+FCEgiCp5W4FSHP4m8JjGOQu+sd2Zs0UqOi6P/Sv8+mDao90enj2caNDlnjdixbNzLI3HVhayA6Eg+ntJwTHZpquKG0Lb4Pj7qLMlJN5ersxriMHQVaUGrYa04g3ruFZMYR15Il1ixvH8Q0OQOendeO48odh20fBKc668F/Hc4ZFss8YfpY/9Y12o4f9PM3iyh957KQn3nrc6LVfwKiLzx9srW5j5yzZY8/H7CVcS2MZD0QVoyLuEM9TXZnJ0nQldPHZBZpAnaE82Vz27kpfpvng6uwCGoI2NKs41JdO4ElesU3Z9HaQkTX6/6rsTpDHiowDGyHZ2kGEQTwrH3ytW3bkg4NFEGfUshwL4s3jQ+8JUysBR28QzhCjIWXm9hP9YxQiKvPZKqeaH/vsJxk9MIUKEZ4qOd8Vp/Ytx2hFOBj3BRwUJL3I9smm1xEbprdT5LTTmGU9O+/tuceg0ucTYM1VUn2hqnRZrS3djDb03IHU1C9+hNk7ZP5+MqpS1/HE1Ts79J87K03uR1b9Mrc+dXuL4npqKSPiCxN/gAqXPJvUyVgZHFumq0ej1PTj9E1rXSg6F/2V+e7xtQW1zHfWdkg/58Z5qxS4UKBK+VlbggJuVs/BtK5O9QeE2jzQyFwYrx5QA+d91L3ZhODn0EEa1lIgPxO/v1PDhn2uVxdY1xC+wXH7VvzONaL5s2nsUgaD9vtWMrWGHTeb2A1fQ5LQzTshVWQi3Jhlb+fUkHAhbw5oblmmMC+8J6wzFTt2yqwBPewJRoN0lQtXsTqlrbJ9tXtJnmJFhZJdIWxp8UKQJjvxuT96XIBRFgxJ0ayavAHIHlb5YxYa6plEO4mvVtcafoNEkaQ7TL9OibZqpHS3L0/yyOaXLCgD9Dn3G1nlXfdC7vsoO25sT60G6hWNUHqvd0f1O768WBMI339VIz0PFZiN/g/rx7eot+PxCRyFHNsIlT5HKxI6mAiJm5bg92/cxQonMAigQpFo3+7ELaDXLanP9IX9z3x6CApBAP5hdv16D+qIAQ1rBfAe61qo1PuCi9VEyn+BqEeJCzcuaERCmIiAzEBWVwmyE48f7Eu4nseVLa/9I/os6QWmQyuqvl4DQuESgJM01uy93qkfXX4aMFmUtlr1kIloZjEqBVSO7V1Rw+d3RWp/BQcweLGjou7JsK9Ahgplzi/GZrApAOOB/eGmzIynnWecsBiPKOtOjWzXGHod1tas/u8redu2VADwANPtVaSb130xuaZjihQmaJGHdPLYheTaaGxsmY1L5MfOhCvyAPPWwblb6vYfZ/En3FmEiqnCM6B/d5GSAlKrn8JLnUX+VucuPyG1t9R7v2MaL1kGDs1S5NsqvWUun4AS1NL0Aa+uYz+3QQnpwfze8AzsLIrRnuvEXRHwE5J+H+56LmEauQOebU/AMYvPSsrIfthoCnPDyHgKHNdrXMaoi46XVBKFa7WHBfPoYUw88vrRX1aPLBLHDBa+pkaYGozCiK6oQeOHL5K2eLqQ1kYeFYnBUF0WFpuS3SIqS3QUqrHd2E8i9JdmUV1GHZc6zH9ENWCpgUTudM6gTJnuYJIbIby8Afr5Y/nU3R6jDHveyq6cS/hwhXA+SmU5ns8HjbC4PqZSii5LqcpRnZn/tZ8ccKyZe2RAWnByrWCkNtzo7YSJH4F8CVnjENBFKvUPX6Iq7q+ECKF1EjskNPtk9JVVnl8e40uFqv7SjD9F4icroPK/smSOUciXDQM34wKiNHmbNCSsnKOhKkTP8PSSKH3SW/ExC8pKnRa/1JjJO43+Jdq99k9d/llZctI4rO0sG7UYH416n8y0tqpXS9v7LJa/azRq2YSESDtROdFffnPDUC+gAjbAZZKzhrsD8wBo+Ln126i8VC6N+k+tuoYig/2Er2hZOctwM16Gjw0CDWR3rqyhQkXjE4h98X55MMwkDep9C6DyypV7rn1VBzgEZ5WYS94JAWOmIQdQvswoSDbsVNduH0SupQQcT0k/9W8+/FFZf9HaJIR0rQk2HlbWkG/YdYsDCN3DAoWM2EUhUZFSJJtIr8pal7Pg8kqokuB1Wy6gAKVUWyDh/Ub5GAcY/tDwztA/8rvQ8e5ao+52WASmlItmqikFnaf0CiK+SYRRwn1mXPL1Oy66wPirpoRK5sQSUD4NbuG9jnuRuSFujhCnGtKxRqS6XT4NvMyu2RgNzppAINSCCXd+h7wvqhr2QSadYHSzYPGdPqnEF7bN50YjRC2g3oiDRx1VYOmoAuENnVOEg6CxEIhOcOgu2J2n9eMldPEZKsElOUJoRTTBiMSRLhIijBwkkud6wVWnCLtZfNttDsv491M5kaTSn6JAIau3Y50ATklyO3wqgo/tqCPC+D59VEUgn6qs9d9P/5s1KQJyHmPKHO7VneAgcss1h7qIQQuKmEP9Yu5Nk5Zb1Dy/MfzQnGYzoa36f/bYm/Jqin7CIP/WBNLn7jvXnI7O39NOLRCCPIh9lIpIwrWqMwH/YW3Y2btgq5Y4XAFVONzjSVTl72RMxm+tN6PMXDp2hpnF3jQOd3k0rzqUUXcL2IYi3lnwZ61scTA0A/uGDTpwbsCpObQQKmz7kcHZ9oQ3JNZnvl5+lW0cpPUK67323/Up1v4gP3ILpipYhyG4IMs1a3+5s66IRM9ablZ8g00qfrHFUj8d9O17PQ9Kxp9kasvpfw4kHlDVF91zM9SkscptgZ986eUVhjsXHju4pic3/nKLDF9T3ZM/AEko1uQyG6nu894kY+dtSzgflTD0CIjnDSEpgc7gCKA6osaFR7nZcD5icj8UF1Lq+vyOdMRxsriLb3ZwL0SrYsCY+4mALTDLEqAjzkwtEUOOQ2sRmPsc8NRo7mtqNb5DtuMzKbHf1rEj7f5zii1NwFOc/A78h7wT3nVOZs9F2f2qx+pEFVJmepjvxh8i6wRREdaKKt118JZ178uUoAsf7+ZWf9+4K6+HLbDjLjxOWwJ45DmuxF88rfr7tKXxzj4SYxZoA2fdkuIRwsQQOINUkMLuT4ft3Q54RSRIxIQGh+m7CJJMn8SnlLZV2cR9I9mVbTdVc+IjhXGN0+VLjPiQC8z86Kmm+rNlmfsCJrqfwD0Cwo6/IlSH/f0KdkCSvQxAFRT9cHWLJjO3Iu9V5ptDwdBP5BA6l9wWjheW1eTFa0mRcg9ViS43yrHKuGiD+erty9urt2jN8T15r4Du1jAG2SvMusMb37cTVXg3sF3wd7BuxbQlnqdqWBevd1iblSe/2j3rRoPQS15sLooZ21UfRZoR3HjNo8qi0JbhaF2H3HrkKqTQ3J7cwd5cTK8BvI/BPUQQ6GSXE67/hHGdsxHzOBLhJDzlgH7+uppdv20VP/VTbq+kl2+8KpF1UmAzxEWHize3pJcvRJK6F1ZFffDOX21bG0e/EM9bvgBWmNos4sVyG4kgb3zYRRrAwPbJr73qdnczI6f2i14hw28v/IQE7khPZedYuOYDAievMM3kia89FUkHvRwDGdP09k8fSfy7Q+10MSM285XmagH/hzo8eTTz9M1A4iSj8hNu7vj82kVOE9wPNjmwkW0SbGIAR3IJdwo5RsR+efMqwVqWbTUvIPxUjdUiqK9arpYEr7B+A3mXBD66O2vL16EbkqoPVxijtEQmUvJS2gdFGSzEeSZBlr1ELcOEXrnB5w5Pt3AciLKigw1XdOvbROTZj1oUdWW+OiiBhd3ipo2VH7rj1vDTr2FM+i++p/x+cVh5/eLQhx7k8C2hLg6HjLC45eZSBCI9L266mdbra60Z/Jq2eG8EIsHzcy0a2nL2hqhTuK0l2W/Z0w3yH+T/Can4Fs1Wvl+S6HmZ3NfwEBOl/cXDAhoOzg0GzrxriQ+hiDF+Mg2jFKZD5HjPPUznPnRjKReFtWgcUMDf5f7V5kJlpcsBGtJCFYDB8VBFzG1BKxgZpwoP161UqAdYUXZpfA+yU+8Lhs5XrZSPYpGq/HcQDaE4/etQTcbOMMxX7YhLMrIIIkt+Sicb2bGr0UEEFlHnOHNgDqLPjPynwBP5Y6KN9t8DFpY338vaCu1GEc2JCo4cwj77dt5wMRla7vd+WfXXFHmdVsN6YTJ5o0g8V2zJDY8IJ39/1JUSKqXe66J25ICopdp87pG2uvaxtAqSjoNBthRcFr+gts8oh+QVf0EPSQPOghu3+zSdgXh8e+xIkUKQZ+QEgMlvgZ1vuV8iq2RbTeDSzPZpICa8+arauGLqvdyraFIYW1aGmnzrBl3W6e4/eIGLFFO0P356oSb6NYnhuYoq1Fv2y8H4dQ7/l17oT9aPvUjNE1Z51UZ6Ve+Q6lmjW8HfQ3vtJOlaGpL7dCG8s96zK1af+FdBtwcKC9vViuKoNsJjeDN+beNPfNUw//946xB1Z27VnfWEH730sru1ulFrAb0BAvISNJUqDv8NKwm+h3oNm10bsTt/VeO5pSxSxs8j4NGVq8d+gBbY/sWgtq73mRktTxf7SqO8NHFO6An9kc2UeNun9eJqkBLOIZ3EeNPLG/Va/I1W0mx6wnSbJ/bl72BzGeChqefYvoA288DYZokHswaEVJvEZEewndhUtnESRmHCKLOu7ZWP4lKJo5vQZyBcs4liA/8bU9zsP48XjpjcTQ/peMe63lb9QPWw9tcdxxq3gp7alM/U/QnxrW02UvHGgRxvCDbuzIdek3j1oXa2ngkowCLeeOs/5YDolZ3yIWIX6zTrimYTbuH+CsDhtgTC4gn2U1RB6n8+Uv3S0Y89A/V3TmqeWr77HgDd6X448SqA9HjIbfcadLt8Pwi+MvP3tW/Xvl/74R3xGvQcuuzPMVDSRnvHBRcQrSCRIF9V3NeZEU2x2L+39aUwT1Rwy/R4pBJbFsrehXdGqd9zcj/+BF0RWQhCIARJYgwFxPDPx2CkXZzyL2A3yT9XTeMlcdO2nVpQZioQBU3WeiDeiC5cPCyEU0ogF3JVKRPbJX2BwslXy1IcZmz1vJFzsQwyfWNLRLlVsyKNFi/g5Y3VkSHf/qWYcOsXVCPUAq9j+1UU8D7hTx+DYzEvSMO9MSkmRJj2CQ5AqP48I0hcVAO1sK0vTksq+n1DYi0M+vVpJO3grrtPoDNHnhMlXmei331+YTMUg1cbWhzp+QfpQSi+nZt2qAOxvaJ2Drx4zOdN3uRPbzW9Oqt4jcuU2WmFNAZP4Fpvkhzo8oDFo7lLBQsWznnqe+DjRzgOfxqakdosdbWu0mW9vYIaTKaRKm+WbmDIkzGy56/t1nzpVp6DzW8lErc2/6QPYEXiDEf4zT/DdgCMG4Hw6Ln73P+w2Z98Npg//tIkq5f1X2SmPWDWZO/Dgnn7+H2GP/OGssn6cfgFaO89EuxvcAAHmxFwNErQUqIMkkcElzAnW3czAwb1cm8DDrCt/lQXdNnG7SUFCbL8ya3o7M9tyT1UwWai7AXkoYvvOdB0xCWHTdd0PLtt8VZ31+rNFXff3dQ6lSIwLrt1nuSBhnFQcvXtQ4K7ZOhTypt2rbfWQRiZYg5zm0UcOjikwPVrmw+5vYIof2WR3vLBsuJnHYDQlxy03XLldOJLLLO598MzpBQogrBvEui9vwBkHhdm/V+xxkd1TpBaNckq5xASrIgi1uNRdolI1Oaok8FJMXcpQLU1NWO/C+In60SEM5pbd5nbHJL3xAX+DG2AENVlZ+7HI/7PwUfodfZ+NPpONQH7ybJP7LNmlyZvsXG9Qfaq7zSIW4WivBxI0A2IJHlPfyGbboh+y4S1kor6ug0U/F9J43BBZRJ5t5DhmeyqV9dvgboDZ1wlDSa2EqDdldVvq4W7lohtyQC2ufeFe1ZiW4FE9YAQYGBiqSbAMEjKyOvYxewfcEARGq3l8+yZ8+AHex8pL2pS2ItwGdNkVVAEm9njXnbFdeXATVW3hUxjDSGRUyitFMHxM+aJFcfF0sVtrOWqpTsDIQ2cIvyM7sniNL8dK2Q0Gucztkgi/+8X8ZlJAphTJx5d3Nmpr22t+uaepTXzg/4QoAaihPyvmjUbm2/Tf+ePxpCm9TU7W/z9S3NO5sN8ibPJaF8vN2xkOr+vQO0Z/uv0woIAjoIelS4VQypVk8xNVdc2ripyCrB1y7fuVd8EuSO46oJHXPA58Gfo3QNZxFxV3MtZ0eFvajTmbIkmpXSDIGGycDErrLTrT04xABRqrczBN9iDPMzxAjTEzTgLxvLQcpHf1KWu2VzZOuRq0KgXlM0sKGebGeUTLGreFi09ZlYj3Nnso8zctmCYbWjZtide/ucCeOPWD8EpExkh4I6JWhucsmp9tbHYmq7kcTmclt64yqGY2zjv84fogLQoepVRJQJ2WINk+EWvYEvMT32V7Y3o81LzlydtLyO09AXogZlrYWdv41GgLxYF6m8Lr6+MqqMyv4RvZ8nCD/ubi0v5YB8GlRqc/pv0vP+GxOUAI2HKyaLvH/GUUYf8BJKGUY0NkGNFz37lb0g9DrAkKqpur8tqNEYNoF9/IFvWSo9/ECWZSxa5Kvg/8mwbFODaPAQV1mrVb+HtuzX6w8GnAmcJHn4AUlcseGioGfDYvAKGDNfpeOgB+JhcAjw8E4EKYPDpcDpq1WAfWDJgv/7/EjSUxtNqGMtQWO2huoTEudlveh+DaFPFQ0lKhVoh5YuFWq6CYOcIFC/6pKc60IoU1ASRr8GPocQcKGu1zprSgsR2HqpcaDF6PcCpsuIFWwv0Hqx8DKcfqxsVI3IwdMrVvkCB7Qvg1yNKuxse3xkL1Xq4WZ7K8lOFy2dFMqXsQI/CSNpPVaYPboB0eh20Z2UP0WxIy6+AO6GO4YwrJVEUuQgmaGAAShY2aQzaxxAO7pIKsix4lWI76IouPPLUy2QDXXBy3aqOHnAG0cm+LcqkkXZrCqUKO5AGpnFpM03T913cnzzHf01kwRh8/fBJOK9DCHLFjqU5aj3MNg3H2rJp/TJrnfpmagYcc4gugisCSU6z/Id4yfG0XIgABpYYwwX68nXPz+hXwwktRz8w9+53xKO+Uj+MMCRzIlm9qd3AQX+TJ9h2GI5pPlLHTTjtXm1jfU8rpUoP5LHSK3BUX9bLXPFeMes0c9BxfroDJ0dsy9CiBesIqfgU6TpJrBobI+uIi3kKdx9aHP98TBN1Fp5uEwybTz889CTdgXQDfKPSzqgEy1JcIHrXQlTfykFzPtvuyfBx87SOLxYyEdufJ+YkWC9UwMR2h8QJ1y0h2s1QsWEuQj8o5E0pLyMC/h6IPYx8fqprFUya/TE/bO5Fn7f2KJM9S0iuIMsLVkrpxHA+jho2CfLlm0h4iyGQIis3rQaAA09NDg80wo2Hku0oAoL7CuOpPqZfsXu6/3xs25iCn4Yc8mnKQDv+aNKy5AAobgxejiGcopYtMbp4oYbQl0HTkkezL28vgr3OwaopTBg2pX2seHcPq5jN7kdhyMh6CkbKFHE1cHswmyd/Z5qcVWC4htmvW+p+y4E8D9RyRj5+WuB3yrhIa4Jlwg+Ob+8rhAlU+0KCF/4WjL8GqAw1XDCl04zxRp1gwKfyg7o0VikcKj2TxKkmErPkKnQLSNZXRBJTvnaJ7+m5o5bqGZ0QBkkTYM0JefSaS/aXHTmDvVAdKp4Xv5qsWy8Epuo2sGQCvpDIDNu9qtflzKE8DVhDhPGHg8sn6ve4Lh5cAORTR/AiNoFwmKoXhzZOEwiZvzkgv1Fj54IBg5N0VcJHzFshILQX7nEJpLFcTlwfEke8BcCaLXwjNzWbCCziULiqW2qMq9qlvrW6J6VlDiFSXs3BDtaCAKfUR1dPrVRVV0eU1mGHUPAem7BKijNIa1LAxOCJRG2DtyyzBEhaGERVXxUS1ij4lARNWBjDHm9pJkOvF8GxbtSHzLwmWqYpfMx5y5d64XLivOXiBcqRzU2ad5zKc+SlxvtaGKc+N4pBxCpw8pLoVH7ozHnQ3fE8Z851Tl3gnLu0iQ5vJo8TeObOc8KTXegcBqV5zxUMrd5ShmuQuxSYud8OeAV7CaaCQObhyQmH6OxzYnFOk645OyLyIX6EufF/V2WoERRvztS7viWkdlzZ1LRLoGuh0IS2F94Kzeu1eftaas32DHLM6PMYEkHB5ONbVkTNwExKMiJPaRf/ao/9oFuUmz11BDunDY56vUyp3a9RnZrvgInPZyU6Z4/4yYXN60/J/Kdbw5lWcMuIpUE7V6iM40lnbR+Nca2GrlL6YoBds9pV3dXiNSmJu7hiOkArztA1hZmZzPUyLxbk5yJuTp88Ljveb20xjF9JTHFX7LG9cAAFZNTxPqnoHy86MZkujO76obaAb/fvTy1jmS2hl5LXXxj2L6dwdKPRi8+2Brhuim4Kcls2qd+SsmfHTatKUfkjypsh+FD+7Yq6ZhUGbi4/zrTe75I3y63qB0OzKNse++J5YL+fVKj/WPGFxGfwPngMfiBY0zSLFls7uqZ4tN3Qx+OtCTsDqjwm85aY0wkN5Mmo2OMmbwe0duDrRSFo/+bhTD/B+5h7SzfXHad0pqYQ+9m/MipwjpY2CTpodQpxk6w3OfzGYOcKfz/pin6PdNhNDDKB/B/DZvCPsauCvz5uhx9HvkO3UUVcRuk7sH1U+QsrfNYGpeBpm+1FkHnP4SREZ6+nWSm/ykkd/ReKojSXPPHCa7tKGA33KeoaczLop67Wm6+nVyez6/5yqdInTQavDpH2wMQFGYJUIdn0b7clpBBiu1gxPkncUlD3DGogSw+UvIJlR5S9avQHEkNl9sHMMjD7Bt2WRu3t09+7aWTm4vIZhxhNWLjnD83Gsa7T56aaEOLnnD/m62Abz0/PK48SpAUgCikEm9JIvc6Y98cooTCNyOp9+k55DX9i9I3A1i/yrYHXC6hdQJL/CNJswkI9IKnSJUP7hN0slnXWPQH1VDlttAab30WuGhvkrLTBylZmSwQgiTvUWlJiEvN7xzhbeCss2GIeVDtsg9ptNMgC6826sv9/Fbwn3v9x7SAMEBiFA+MCD5TZt+emNx8Srz2OPzifkMMh/QykXF8nWsakn6dZhg19ExdRKBnzJu7wItnzxB1Q6+SY2HvLx04tPavj82xMscpmi+Edm4mrQl5cI9pekMahrlT01WspRP6vfsuAxaZa49pWiGvsGt0bOFQDCrOQTmNvm9h0oAFKwDLg+oKRCJoygp42YiCroGrQtkfZoI2cPDqhGDBeD0DQzjkR5Cn0NnT0cr5z8PD0+4cNCfF27HwuwBiTZkuRhKswL0l0lBaJ/6CNvcntX3HCj5rx8vAizIvkyfjVh1bu7r+uYqQXvxpSuGL2ErQEhRWdXBsuhByLPpFrWcTPc81vkfCyxNrgOMlNIk4eMFJZnqzYlpsECzFXy3iCyPNryBF/SMjpCjZDIkvtaPa/4HPuhp2u4A1NhG0unVxQgAWGqQKgPuWrgItuSCim3AUzpMSuSeX8waHUAB/UjZPNyxiepZeCJW9zxtNndTaRueXKFs3utFDU2QtUlB0i0cqiMP3tYTdmMhIArNrE4j7mPpRjBbHEJKKEVPRl86kZEHa8BDm+tDs4tBx3KfGpgJcvHb8le3MGkcF8dZCAe7FKDhdu9R4pEEAaGUwud0D0hpyCjUyEUblUy1QNvJfrf17sGRth1x38L9Y+TXNF/rPCs2+s+img310nNtnkqye4nnciw+3octoSZYrxcKET9E+swgeYAYPmgCOpftHKtD+H2UFKodwuoILGskzkFj+cSitNhHDcZGgB5v6X0QF4qudVgqQKMgVb9yYc5wvW3HYWwWawEwePDlnmf01XpPOctLAmdFRty3jeHy0QnKAjfCtik64Fi4JAadoAQPdZuJgGthqxX3kCN6lOU0ySNatNK3sVJmUgfSMwCGwqqvFW1RcDa9WL/yBsiV5labYf0i27kG19ybU60SRkOv1LROWirbBZZEUFkXsBksrKDV3mMGmd4JOGI3skac2pF9uhf2WEflK2x6v7RisEYAZkyVTK0ulJOwnN9ZJ9kJHokRiHJSEswn6VTSjRHzOa1EKHjbwCom950jMZRWwRD2V6PDV9TIL1ItC5sJWTK2vS7/Q7B7Vf5xg5eAdrAX92Ks12MdNLHR7LaQojA9bvoox2Z1RVl2//2CCdipbVP4BGoIi6FN83Kb64GLzgSlv2m2P0TVHgEYH9kW5rMrDezqKcv9S0VBCvZQkyxmXeoF6RfywVg+Qb0rmmXp9Afz4CbgRKXpEb47jCIP5IurCCDAV4NxYz17Oq1CmvGdalN9kTPyQYN1xbAS5wN60cesWktXjJAYn4i1QAVqqwWYTAOjgdA207ecYFX/S4gTnuQs/SqMpJJ1sEjFfkRliLGHCTx5b7OiSyv0+MBItcnMqFKf9WWNtz29ChumY9qcYziol5/Z3l+yAIiSuVlJXajaxcdOaQ1XMNSzp3uovLk5KE4e38qClmvQf0QfkZ13ANXyNL6o1K12QuhNA0p7y6TLRYoZYBovTaOwMZr+auTpDyBjAxGpoVZ6/ipy8r/qfHu2x7W3x/+2lp2SM27NZ4XbFhhjNWhDJjruAh7JWQgyNRXXYqivvM0qhJpyH5e6G2MBhO+05udUX+Y2pn8AH2p9xdW6VW4z9+P+ImaONjpixFWl7Cg1jqZTCVAXimxLG9NFFDUtAGx5c9kxUauHwUULDqPH5PUkotAd84gDpwttUOy58OP+pCoo7SNEq6H1nY2FCaz1nXuas5d0f/e3Vu/RLBY40mcCTFsKn9N+eEXfDIlim/c9FZjEASoxNuaokMoffBXAyKBOuTw/2T8KQzTA84ZJEB8tFiCOmT1cQ928t3PDNb8BFsEVYkvrXGJmaI0DGI6IxdJMlJMsrkNXs68WgHSLzTmquxm8lkixJHs6OwDRFKEfJ9hpTvyOQYZMoczgwidsgsJwn7rEW35ljToVsRMoQIpUHKDLNdHYhMwElseQaE0THYuCFFl6PEo017lzfsXc05C0MkSPzlGAS5eMme2oew4qapAjjsDV4qGhOCR7F0v9iA8jP+MOZi0v4bvwU0aK3J+0I2IGAtPNUERgJsCa/pRPlSIPnfaAS/rNwMysGyzLeil2ikov6ZGHjSKXv9NUFk3haMFAZe2GVfpOq8J3B0hggglTO3gWcecG3fMxndlNixJz/NY5IiP304F2ZL/uYBsC8SwtHD4/xvCG9rBI7OdwQSVxkMZfdLblDQwm8dtNByGg2uXbQWNH9fMly39ihDIcFm1Z174AyAgwbnhARwYqEnq1ZqaYVgrWrhOWo9LAtb0lHsrrrukoHPTImGBwuKfjXAAvpLyuLiBsWCMAdLU1OvtB3R0iGr6AoWYzb8kit0m8Ca/Qv0p+Ut8WsQmL49eFIkE8GtaD30a3NPSaTaQE5q60EjLMH/OvqBMu1tqKVZ1IdWtszosLI0UMHL4O88JIOjRkhQrIjIej0GC9aRDyY2MjOLGFniaAywbqzm8AYNmAQe6oxkqzYCj4xFOkQuDdcB3a8v7ALSre+e0ccghJHsxAsErrsvMwOBGKr+7aN6L68YNLy0jfnStMxqfNbfanwzgl2nSM8R6HU+7E32Fkzr0C2YcBVGYFc3EnT4lSUo7FV4XlUdacJiv73KTeVz39MClQ04HdfEvx7f4LZzTr/eFBMqxsmA63jChpZz2a3XdR5sTsuxLLKTkf1FUOo8wIUjDXTCOM9TxYGDs+ApirvBw5GUg4B0Rpwt/ukz3JbD8FM/wDMeGZpmRXWdlIAC/kHUZDjsCPlSJoYMNDMYF8Gc8JiByT2H4ktoPh9hYQ7dmZDDOXfB4xziHw5HwweOAXJ4eNFHTZ0eDV9nGOJ/bBeH+1/wMyg49u7PABzR8r9jbmUOLJNatl7mI7DG+4484fLzmVLCg7wkjtoH+BOQt7vdvwWmgFHcYzGJ9UORSgEK6fktFB5HuAwW8SefMBirlVvrJ1TEIYDayT0fGeVMwYi2pxN29jZudisczvQnrRg1ap7slD4SkwYKLSYrmOvSZCsMeSREOBYbljvvedt+MhEJVP3ouPf1fllunpXdek0R32vvz0d+tvJG3tUImMv8SwIRKbC9nVpN37mTL2CkwilcBMHKy9GG5rkpZRtTOhGDYaGZMO+Lksqpem1AqYf1JEnNHvl/mZ+v7swz271iGiLUs4yYz51eCddZlMUVKRhA+KAwjiCKRojAxBAN/jaLzuTUZxSc43l2w+r6ZDUUW35TvwABOR+0JCdMN82Iu6g8M+LAa0288Xl6JUHSiRDyQnBpyAhEQJfAraE+FiWscCdCRdq0+eTHxR5YMJjn6+1IN2UWeguJUVdaIT7HDGWjf5xsUiIdljb5A2+QC3grKGqOQOE4ymYCvLWxemXTUk8Grgtl6hChk85FQRIFb3pkLXYjyMMABqcIkCada5zg4MQ1Cp1kolo2L7kvJ9A5UefYnRdpYi5AqIW0xhAuTCdacHxe17MIMT9epNy5yJ7sQvVjttmy9aSFKc4RxI5NL2+jnSHlRw0OHh+5dExru/c0q06XiJgKAnl58UuyQCdo5xRFakedAEuvYzRPUNWBOlACkCZw7qrJAMTv82L4i6QUgWh66OTN9dMTaCdToJJjulrw6mntoR7xZKqARJCHtUXIkx5dy9YiJDtP1JbNbDFnEjj1OTbNQ0fEp7D5/D5bh3otmjGJ1lOq+c2Dm4IxApStaFJTCrqF5KJtpHx+ew7g25UEGglHpiI0G0JS4trie4ghjmKWQnycTesYscn1Vzbj12PTzwUJ7TbGN2IkGrkWo0DggFmY2pdWQDud8ICxctaAmlWnuuhcNcbCHgUFQb+Z/KgNRZjYx4jaD94PIqKhOAQinrNne/RL3XU0rEZg9emxYpmocujhPWdiYbnCRtOndqbt3/j/yGGiDPA1ejaoZhQaEzwQKL4URzM1xCUej8fxbfKTnezGAlsGdrWSAo91GdaLHSc28899SzW4g0sJU/eVLm95S5OCMXL8sEYEwxf8Z/6r8ts9eHLgyT85oVgadmk8ykB1bRxSDoL+jf9rSnit/S6aYcTgXENC3wKFIyga0P+f/2g0MMxg7V+Av9G7cRaAaxA25Q5gjx4DKf8FyhE2wXX+z+Y5ebGE+KoB+MDYom6+j4lRg+aBPKCFsDF16AYyvDd4f3XUm+IKDyMopOr/4j8HBEX6ueNF4pJqUMhbQ4vDOO15GxyQsMEkU4ocvQnUwxkCjt+DryUrENJ+koYBwEY2MRT1MuDyhlp4gUWtXNJtGNShonm3mJJhr76p5Z/q9PCdf640Pxp/2gTyrZyUG1GpHk4pGSUK6qIkE/0x7x60WfwSPB5NC9JEkklPn7W8DbxUJShavxBgRTa1WhlFfRTL+6wkB+2XKZBAur5RZKlmztG9rA+zSsh9oF3TAQ4GcAR+pgLgxomEKLZNokEsEz//1FLDbv61q98CgELxR6Ey+fr0Q66+yr/+/0IkfVzKVcIrmEdS8GxstELC3g8JhniLKiEKPjyJP2VqciBjG6cZlwfLPR6ET3lMgzlwz3f+ev9GFbo2aAoaWZ9xewz4D56Xl7J6+jRu3bboliYKcYAh3YSzzcQn6g+3c0JORE+B6NT5tEau4qjyQeainx4jeuwJ9dDnNGya6KSTZ3WEfdkbreJq2BBpfOAvx6bqFcusLb1qbSjtGoVmqTMInZvfpJaPW8FnF4fN1hvLFP/PUPGVa4UiPY2GEi4gyTMfDSUPFYD7gHePl/Z8g+ir2r5hQMrg1KbSsxaNXRy1JDCtjw8YRnRYibsogSru8CKXflaRCPN60M5nRWPoWy4kzs/sKOIyhuALvNcjxQz8earn5sHXlMYvnOksydvFFkrEOw53b2iRDsj9xYmx4oKT8TR+3W4QFlVi50Wk6p3cyMOfXW9wMXKxKNw2yC9bUdbeMHBHhvqBep+Hhkpgz+Ej81W5EzGVQkmQSe8/5NmQX4plECMwitGhz6b7QZ21DlR2OETvbVArV2t+66xy14/psJSnGHYoJNU+BIJ4quSCBCvEiJEQRkjJKFVEYA/7soW7/WuxZ0HK2nbNNlQIHF+VvASv1EosLQHkeerbsIZvGHyIWBVBrA8jo4rJjTagW8ebN1MmlFUNdK2Mnelmy3UtbrltBw2ZPF1FaskFRY6FgkU/7REUv3oSA7W41USntV7NfGH56DkzMw8vUFLd4REFTrGuVHsU5r9zXPlzUs0mkpJ0p80G8CQUaUN/Gtd8qYqCZlUX804l/TvJlXHjgyNzXXkA7Fojh0cmGREbNDjuoUIXvhRmpQy7D/L2t7BpGckcZzWlO8QgWcShcX1WZmVoYODBwYbn84wZyMvbWPJm1U7dAoAL3ZuZcIj363LfbQvmEqM2Kgg0y6ZtHm6tpsVQceqOA816DvhvZebXy9XAYF7VjNET1wKPGWYCPQBJRBdWUgEtEv9WYpLkN+R8fD9NmCoYgZ7PJAkMG59TBSDApbCp9hNLD/uf6V7ECQq9M6pZWu+xTrTLX3zbGGbppJnpZMU2u8qpNvo9cuAn6gZziYdNaig4ybwuRb1PnDwxcqyTgmAoxZpLOkXyN74lznj7bmtOLMGi0/392IbXhCqJyIH1oDRlymwKvdS8Tl2f+zIO0wI8NgmogbWr5tbcGFopz/3V+ubcYgIcO5S0ITYyKtiYp/h3ngXt9QX+9smtgxEGDVwl8PwyLEDDMuqhkKiXlRLh6acwqYSNeHiDeS0d5yhCEGY4gQwjN8FIi7FDC9u6ToBIWPqzlICDV6f2g3NDlSOoF0YdvRm7como8E7Oc1mrp9IPAIDOTE1X2CWXoCNHgWFNUYiKPedAolYED8k9Es4qUjaouDiFhiD24NBq2+umz6rzi8O9ik5gSPssZCpLLj5U8YPxVKBRk7fXo/PmXgtB6gkKVG1+bubmR20fEcJVOPbClRpCMFwg7y0cyU9b6VmlU1xyuHFV4mAoK7jHgcNQPCkxzi145lqo3tQr0YFTs1fdM19PZGhBG8vHYuFoKyl3DbCJfCtXlLSiQrZqagpt+ZngzOKB07IBn2YaRytwj081Dnz/3DqZW5Nhk1FqkoAGztMjU2d4vDTTKDPHpO0afaAXR5XsS6tZ8x1RwIDWKC+05q7xktKU7fGU8SkqcK9SgznbjoJvGdjdhhPP8ofoBn7cEENTHGkw8xfnBYIaw6n21omrE7mbPXeriScYyJGZgLBYrJHpo2/A2X0Zw/bv5WWVaqdDBSE9I+x93pQc8nUpbkzhkpI7poCeiQlX9co3Fn0mv2CBqbT3hvWbD35TR6LDzOQj0vDz8HN04bf9T89+Wh9M0NmRcW4cnXqjkXcVb0SvEGtdCYePlJ+vsam1JvVHH9Xilp9/TFhdMjXPRWeiSx2Gp3JPL07LngXJzPw6deYCZbKN8JLmQHJcmRtR0++ZhNikEazeMA1hR84VMJFpWe5VItT5J0l1WJgD1bLXZ8ok+2G9hNaVEUoxz24pb90Ddfg2UkF97tYfSmyG7vnN8le9yu6Ab7rHVGItMAYDHFEvwH/8Vb0uH2VQhcZGe3h7U3Q4Lp7Z0X7zwiRkG4dgYjBOsstakU2n1mBVqVD3elJYyhMVOrZbKycz49x+VolIX9qt/MqW6VjRyBSFpsO3k2E0n9PZ9HY/7Tql1NxChHX6RjA+5NaSK4YKdJxvV+AMjVHuwpszYjMAQC1T/hYt1O8SPaieSVFLdDorrfI/vkHOeFd5nSPOFdcGKKL63bBNxlYzCu/yoK0WJZ4DCNvCt0ES7/h131uDsWWJo9vPgEK9C4coYzPk3bVutdl4DKvr5x/l27na8p6f7sa5ROf3aVmPaNv+teP0I0GJDp6TWr9iApYmjroSM5qzy6xxkaWBWWdHwMxlo71jZmq/OZym0zj2J86WlCXRGt0qqiMYRgge9bDOfdR+avzaFiDZnJftac4bQ2hF0mPHUO2nZERO7uQacGEyJRrJrJzjopUH1FSFjVIGilKugblkuYW7m5UdIIKFiV4XSmbmnLMAY3gtHyAFs1J8h4VHKFL1kqvUYkyK6byPLLAYZSBlEsrfvh+ZwCt3gveY64eVWOxUIj2enQeUWPFh/lImmtJF3JRpzzFkeD6FmZxCx858GPdkl4uSeF2fmavPSAdfQXq0iIWx1NX5W/63mTC8MdHN+A8L+R/NzJz8dP2rewlkYbWpL1BbE7IpsUYmBULtyuMrh3FQDABANUISWWYNIOTiLKsBsrz0aUBKB9dmSnlHFsZQFZmUBhUScnzJk0GLxioLEjiEkCLC188dS1BCZOzPUQ23cMKUILhDCSyAZ81mPyrXthlBDQMWZJo7KJ1kImoHVof5mVgGF9T1JgIA0FgDN+fcpboCmqnjxLol/c9uHXHSHbwMbmo2jvQ8qYY9nXwfYO5bwKLtTQOmFR46q/RO7nX7A9c69oI4VnSZNmpnzhkFbtVZd2IPHD5gW8zsHZporhqyPAgUOxKKkBRYYxpB7nMAZkrBq0MGUTMiewxiANbyZlMsa3VFUSCAm2CVdKr6GDbjmCJWRWCYwYq/qcms0mx7bMxgttkgcxgtaLBxRicbzhtesieg9yhoYDPD2jnE8vrkxRVhnB7jXy4o9qdhJKso0JZs3LNScNZ7y6AuY0rY9YAcOY5LHocmsyb4C+BJRsVD+jW81JRzG6gcawv7yqANvel/4HL8+C+c532tOSfFiw3R8wsrLHD2jdJ1imb4e8Jh3Rs4Y+2zp2+7Tw0HnHlU/9Hp+S0YweHQX+R/LZYtgqP8ZZbNussdR7NmnJvz1pvYIaAI03HMnDSwdgBdlaViwkSAJ3qYx5YyVX1ig07E0HCKZCX631x8Ny1B0c7vGpxFziTfujjwC54xezVj5bAehUv6U7DZ3tihHgy3fUZx4dxWovqI3zZtV+26ptGWYonmMHIY58UXNcYOEQomMJfivJ3KsOsa6sQ+Js7JFr4Nn9S1MATeyne+MnHrJIJCHtkSTj2V8Q1/YM2Cw2bWD9VRhZns2DQ8lWcIaEvLbCoLly1asAqDnKuHEpi4jjNU3ZOQagdrL0RHhGTinyOYYobynr+4QKXYWdjIrvYWan+vn6fWtbayvuoJvepLQP5PWw/l3mZYkcych5B3PgHwNXEafpk4HiwO0iExdmaRTWPRxvu3cgZv9w79TefQvuBMkpHvfoAAgt19o7FQtl6376cptm4hRIqQt/BWVMDhlINUZU5TQQVm+4Fs5Ito/Ma+xxdzQOe8j3x7M6bJVHo7TUN1uChu/QNqLWgdqph6abiz+lYUXDO8y+ddNkNJtDJL600ZcB5r3I3e31WvZKziaFreS0BCbKSIwR3BRGs1GCgGAIGQx9fpHASkTapjPsHBoZhLQ/+A9Ge0fyPYF1y7QJrYFJ69g326ezl65ZFPQEkCxYiBy5cEaiYZOCgKzGQjvRqf8iR3wUc2h31h0fEXzHYSyv34vl4oH2Q6CdbzL3mleHUdkqr8ss9SFrJQIssTWZADlwyeZVq9eLVtPpogkQXJxbO6cizrnTMRY0YOud3xDPFyjB3nNPNxOYWrWEtolEc4bMd03VHUQuPQJVzXXMms2x/w238aR/JYUSNzmCkirAXcemUaWSE7/yN4r6tJzByVs+VqbGw/dca0NFGcCv5vmwaS46M32iYcPY2pQxpS3So0oXhihZIRJShFXG6XAgwn4TX8LKm4AGJfWzOzlp6bV9CCgK1J4+Or9Q8f437NSeHsN/P/lqVVcugn7T1yksQjV5rFZ7VRHeX0U2O6jDBwBkU0y0zYnzNuwsN6HDN/FAdhqGykn0Ph4FWzkQuznUlU8PoKCcaswyxmmIqPCpfV8D/meBTEanvCjvDM3puRbbhc2wVL4TewvJuDoZ1Jst0SuD7JlfeibOvgGKrRlffNRZAm2mbWPOU2qOAt7G+ihtTtZg8xbaEAECEfnv1ZC53gw/aTxoTaU4d/2iwDlzYx629VN/zzDoq7Ei/sSI99dyvVJ/KQ/z2Jjbs4reccZQWSvikFTRly7KYEBB67KQKoFoOs5eTf75lQMgUYk36wmyMcnDOXX74rW4jUMvSeiPy+PBBqIZLX0TFkP8aCC2+u9R9Hb+haeEAtRi7J8rhLEb+4UxntwtQUL+cWXsoXYK42YSgYZley0c5XWTTeZcq3z/22axmfPCKqbxsU3rS0w3EXMc7DL1RdYhWyMJqr3UdkC3wLPm+xozhex7BEh6bsgg+zRfEkFdbWyyXWaDnE4VkkJlZ6CRLRn21+ZEOzIKrh8QFu2LsX8j5a79dSGH3k/3kkkIQmIjWRPnbfJTbZBQGFx8+VLCmuD2LecM2oqgY7Z+SBXJHT0P5VBw3YWve1Ct6oKFzpd8dAq0Sr6hWu1IL1ILy4sulOq9WnqwAXfB9rvMllz3B7qdAx4cZZ9Wy+3GNlNc12LCinuRh8g/ItJfpDUG8C0hlAhlKIHIYFxiE5fE4GAQSL+wVosJNDQOPmSnl5KOaF7Lq0N7hDWuMjqE+pR7jSvJU3oyYk1MPIXC4tO4afUmMSDDmSDCji5s6OEQv3KcFGBY2NfOg/tJx0luW5s26kcC/TQxHcSnTQuMK3VEkbm7QdcMVcRv3SOOF76+r9CwCuzUBPcZ1zYn1iY2nTC2sUtn3IFfqZTci+WP6ULpshOCiRp3T6+aw39GwF2k1vjMWPkDyv1f3B3MwCtu1nTZ4vumQ0JSSVFOnAcou0t+oQ2xB+RJlFrPuSirVIv/ru+zPTbmIScu/kVMyorGwJ8mLZxrxCSikownl11j565vDFoUvxXWwUNHWao+BWzR4Y6ZO5r+mRocXzzq8vOwLzUJykCWM8nUgVJrvGwuN7PYhRg6w0vaHYS3gJi/xONe/OiJaTCdUthaCJuUNIm5y/dGHudOPeQEAtdT1Z7vFosgSHHDgHdLFIsCTcNVzHc5ym4XYwinVaw3r0/GHljGro8vHVGmL30KlvEUfsXlwXzNoifcBE5wT5Tp79N7yyqq8cBu875BkmYaCUC8/v79oOQ+dzGgTK9JkFxCwxDL/cD0+qhLCAS1XDOVk2tPTrT1JjTZkr7C99qE95ORyENa/W8wX+1LRbyxaaPghwGFUAg4ElMZ/BA0kCkJo0Kcv4SlJltPK/mgHtoZpUdbOvUlOu+8dx7Mhl0e//OMXKBtvXXv2E8e8vHOWglWDtgFG/Dax428p2PVUJafWvsrBJNSBCS1SqAQDdv5MqSsi4IVt/80XP7ZbEWyKHPrzOXc36jiGf/YvmMSo0cLq1ow2Z6Bheu5kjhDKT61ThVKdxkCFauavNh/Tj67UfsQPOwBVFEtJgiLvv2Tm/nX3uwXBFK9A55JGh7Ni3t/89JbJp0mzLEPvyHf6LYaJ3o+ObpytKpUi6LUVHVzWgR5flJLxUswQwTFwz91vwxc3+YAYz49pE+J25DLq+EfXPAA7iMymPWjooMuj1BHe7movQtSIgF9Ko3+eJY0SEH++uc8Z4axJMmShxNysdByEMMagGasIBmEVacq4OsQomQmqn+NoKpnsE1GucfgyRs43eb98t3p3xeFVKx3B/jdQL61Mj0hfR62w5+r9FkjjgXE0DqYfV7/k52C2qfRzXIEsqZD8C0nCKt7uL9caLGUabpY21/LMeiUlYldL3kPyhDWphCfnlQs0M7w4LZpdRztqt8gmLNBMvO5KuqGPhZniihKciwdo1Y+t+hNhOj8bY5H9ydfBA+uDCbChFXwf3i7D4ANi/65mO3ODbfH/st09w7wyNG/Uk87Bgre1GpPAI9P6f+v0Pz6lpThVWLkCFBPEdRW35xQ2lWKqKwMFtvgSPht4jgh5zoAEAFsP3m80P/DyeU5DFExJfhWoDxxHIU1/avmprGJ63BWl/RtXb6hNRzeMA8zw9PF1PopQAaM8gQJp8yTa0p9m+uxTeDgKLstRvLtDZ2Z5XzQvhW3yXzJWEFebAKTkNw4tWoe3FO7D87cNdsfoDLV0Bf2gkrsuhayDk8RvIqwG3xIMjecxQtgIF36DOabt6kA2j45abq9OwYhgL4eqlsBGzAYY9PTkOh8OrU49aFwmbYmp2nTHpNcOFSwITc1j0ZUNeJDWHyskBj1PW5/94McP1G2yaApCUJZsOPcueiTekuZBoryMZXjeBbIx4j/1GdDQDodk0CWGYoC7hmAAfpGkOLEPAoTp9VbUVLiH7ZroASO8yQPYxzJk0E/3KdcnQTT8cPqy+BGwlX0WoNGWwu5EgNquaMRShwPAUNJGFzrYyV4bSn8wL7ElM6ksBj/UM7t2nit40LkwrV9XOA+/5wPvLAMp9jBIyoo2eZL0nxcDA3xtx+mMFkro6hmw6yPL7az7BYgk8jVxLRQdiRx8T+Ok7jkF56j5+TEJ4IEWp34DzGH3ygbSkGd4+PYOlJ+QbfaCEoayJ3W3ZE+nYFKceBZe2xYwrsqvBFyBIG5P0UDCFNBTwvWS/ZljamTAjSyls4mP3PEcq0ZlWftQ2DrIB4BhgyHLAIcudGFpO+tWKsU5NRlF9Gu4/wXiX/YUsH5iIr3pizV6iwPPqLXmiDMuM8Rx6yXc+lIzzzk9cV/kLQAY5noB3AIAOBxBbNsv72ECei/Vhwg+q9JBNpoCpsueKD0e4muBn6EvmHKU1ejJ6bE5gGNOAngoNntVi36sEKEbcC3IgiO7MjyHAfKi/3yRYUVsCBg/OPNsJxyGGYQVZN5f5E28IEFWvIXyobf2VdWQjWDyurYJmmM3xheumQZjA0bWp4zeITEAW4YAD1SsM4n6C6In/i/i+ittNFl0AsmFzUGtawPI65UH5EEo3oKYxCzWdiOUOwnz7Ys0EsOvzSJtkYaQ/TzXNo8+dG6As3QHtQ9wCI+Qe25upkuDorsNE5xTWFa5MmcjqjXLfwvFPE2U1wGwfDoDaDp/IGTYu1b22gM3DAU7iNWLbkYk2bNCU/87d3JvHS1RxiH1ytw8gAR/SBmUN+EASy2SabAdZKE53S/2wWQxgsOMeVFy7yxfnx2IGkWFt/G2anIbaRtN481TpaAYZvi8SETf4M5LG6W2/cnv1zqxkb8eI3xGZ02qwrgGmBsZuZMwDCxavQHU+YTCzz4vrFoH7udyzDmEs8Hw3BROWNkpno9YzFaTbgjMobwJzZ1PJDmJshsyaOO3xjKJqz90PPcbjbAqiPJ3G3tK7MnnWTt20f4ciUknPoeE9ODfSeJcV/DAnrL3ELWapkmZoHdn1Xv7bHcP5w6P9vlwxEbVFvjpGlgnL3x2W3J2EEX3QCjSj+KLu9FXM7FiEzBoYv9Skz8ZZysGsyiW9JFubVeGHeGHDBrJmAkwIDjlRuM1sIubeTeeXKMJYrYc3XxThkSt/+6fCSqQEbg08dcCgdSskbAtSGTI2YAd4MkV/NqW3O3/WnC7Q+GtkhVa/LN/d5lpKRWV/g9nnhyj6M4HNjIlTs1x3FmcJ//ViSSgm99pPdCrRooT2Z5GQci/MolRkkTjyQf8fuUfCrdWz2q3Z+IT/vnWsEDn73z9+UM1E2GtVtnKzZuU1Z4Y9MDGMXaFX4BhjWCNsnugE/UShxjLAkwU8BKvoKvE3AbhHoo8SuKEILKM+KOIhAGce49mF6YKQWzKDl75x+VT0g8g9cAh3RR2wEeO/W2kY/V+CP6ZdUGzSMgi+ojJeQ2AQ9Eb855F0Tzn+eQ15C/9PsRpMRsWhwXvTcQ/mVfKnEn5g5KTLGf3wR3PLQEDlelW2Z8RXleDmkp13wtWqJ1af4m5MYw1QedEiU6xZu86qYJx4FkForxJMScF/HBy1LaYyVhiO1FlDTxyY7zBu/ChIqcYzYUOdTM+aYR+1vFWLqJDClImxunguU/Fahuw3RzbGTprH4sYBd7TyRSsfJ3abw/qT3EayGVjaY+ocAoZ06Wlnn3pHEK4fPwG3GqyUH14q/jyAQJGHCotcLVRy5Td0nQHk63oTy18wz0rw7Tep1CuAzm82AwAwpy/Tor86HQHAWCFxY5WsDY/IRkgRG83/B5OO8n20aYNVBPHIpuO+SuNiX09Kj165dlggk0gqQqnXhJVOfCj8MjiwvHGaz62lN65tFyn+WuqJJj8n3yPz7cFsYBKfTSJLTRSVeQ9FOXY6tgJwR9lo7BeGucFc5x9+NRpqb5JXddJ+zPvSEarZbwnTJo3vmkCNqfQ43P9MeFlZjDp02BVfGD7/gU3VcuyHf7IJDgVRrZJ8BHTYyOEbXDs2oTsgO9/YrB5Bf3E+lFNTPj/isG6kU3y/9UENm2CzbFOdJyN8edMEo9QFI0nqBFONwqdA8MoJYojHCEUfx+srS8k1Ax1oyIlK0QMGdsyvMRp+6fSZPHn09R26AbOpXGD32T6pJ2pfC/yRrTu1A4/VDhzk+s4Le4kX5488FUOZ1H/3/qxJ/0PJK4FoBZmVOsOvfxo3Jf3bkuu8+BSfyce7WLid21FQ7RsD2/XbwbC3akZ5pseCXh5lGwhIekeGzUac3TvVVUEViiN4RleDGF6s2TC6WZKCO9eRD0CC2uDyMyi1c95ggNqC4DGwBQIxZORqIMb5UNH+AHeTEnWO1MXiIHP7C2GDXEos3jL2uMT065LiI4MvwdskQ5aPr3K+vq+GF4aAjsTM8HMphGBEZg7OOOfzy2QPmOxq3AYxy/xHvpLUkcPnc+93+UylQ62BCPkwfOYItDG59swE87cPgtHVX42EjghNWLareMwggoKOFsQj1hGBMZLVrlRkM5z6CuhfLITxIkxnpTJThArFlurxeERGbrnDsHjDfcyIJvo0hGFWtTsxQoAVY1ukF05zrWM679HNtW6zwnEfO0CMbC37huMV1cgavn3AF+oAsWV0h7Vk7yYPZaymN1QNzCFzXrtooIQjrrrKEU2yw6YGxBhlzbVvf0w+XC8voqPpKeLYviRmWUEpN9cMDkvCbd9J+Bal/JT9JLDO5yMo41n2mtalpPxRhQwqXBNhIeKHH8CkjhlKWR/MWNJb3WcOwVmJFFbULPuyLM+33OfGlLeLIxRAfzW38JkVPPuLlP0gQA1yRa4SODn/OAy0KgMUH3XnXOUOqaseD3GbwTf5xR8ymHwQToZmyJOZSmqSyPeW2zkFpunv5/ZT0WZzHTbPgyp2qpI2zmzKparvznUahpb33BO/+dJ5z1maz1goQwU3WpOsCm2efKuPI4s46ILPjKTqh5kcmUaBVLxI5XUeL/nUQjcOwsmwexIVbwzqAzMIjrCihKoOWeekyLXMXex2KjZZqfpgBW9Z0TonBbb005J91XMTac6JMPerC1LHDxr9u8t15PC80egKvlXA8QnOtVZmnH2nR+ETknfKDWBShLWF8Gkeagx19eWRXkkccZ7w+Dabw0A+21PYPMr8ACsQ0m/yhSDUNAVW7ZcisQomTBRP3EJFpnm4u8p0XLI1IwtjEtWvTAnAR1xsAs5EezQl5U+YzlSvq/um0TnbfaemZlPx7JtUkAJROGuD4yLOsHHM7/xM9M4O0+xp487eblaNGOfm/Jn2waIs+/mO8UzN9O8fqef5kOXt1qQ2VeJomSZtHS5RzOHANKPAE3N7UXvunzy84QYIqo0+w/hVPU6nUllmELSU5M1EnlreaoUvHLlEqho+9mBm0PuNp1RJSR4Oo1B7iLYCkmY571qKrdoCuo9tY1+esrY1wfHh7XjPnRaotYpgpgPKpwFLfXM+voQXnsImIOikMHshOrYnHWYxeODp4jtXgue7lPsikZXKOcvjYutP/kz1/umQnpfT0p4VLgVHob9MtcgNUeHP5rlrnp2H/w0gbmrTh3l0Y0+3zu0eeZBL2fN2AB2kcxReOodH3HGhHOAaFkFTbiuMLmaikntzaJT//7yNNbSXD3ogcTaiNRu8WsHCuv5/ghVEcvh9ZQASUvcta6hfXDw8nvMJwp0JrkwCTMHkXtK+7Dlp8EojovRG9vpTgJ/DI6mdhPbfXnS6dX574mRiTsbAsdwQz/+YDeJA9FlniI8P0rklQZ1DLGbKjRnnYqMNxhOiijDsfgtmbqgRohW/yqlmr7pr5Q3NY6WrmDSvn0mzTEbx1b0pD2dsZrAicxOS14SRH66O5I+OXTTk1WbjlCPfkH3UhErA9NQfBYTzoatCoXxHm3i7Zu5UvNv+oz/dM1ha/Ku852skbhCVuOUoPISInl4hYsGyxWfFVOccq4pusMq8EKjg+Xk3MtWHgGVyHERjMTFUua2eVERnhUaXlWwpWxOuYz9XgyTkLksLdnD/4KnlROs3VHwRqfFFFCo8O4V/rMdYFudOr7riAbpTLNi7b1DUZehFVrH3isnh0dhiGh7wmdrwnSWrGgpihHPyi4zG8yS2jwIGpqbuBLVSgJ4ouH05wl+WW2Qgw/PRxpAlnuBInTZtIyn9S9S/v8gGv8pAG0QRedLyTpB+6szYZGg+oFRil0L1YpsTy6MUrGFDHuP7nc32iDSgwOVBrmlQJFGhRhJBDWPc9vgFVSqhsvaAbWli5LRv55EYAzfrLbRpf7wv8my4oaEuKw6q4dBV16Obq6Xr+8tGSbsxc8UH4dwp3HUMrT0bs3OiuV1dHEHka8NCRM4+5sd1XIgWc2kZCmLB0VST7iJaSxRPtqyWijrS+/l6YDG9WQIjmsgTrljfr5Xv3Hm7Gt/AM9jYQKFnm8s08KNH17V6B60UVgw7UMY33L+F8NCuHORXVZeiA9YpL/qTNYSWg38jvjILaPyMfqZt9VhoQWpVKVbn28zG48hHjtQ95RSDn0w5Hkbfr7bjoW8v282hHyrbm0OvSytfv8s0nPxPrU2jQMgO+Jm4hdaW7r5A5s9nFuBsXyqODPXqXRwqWsBY6+wYYzXoto8RyUk73Nr/pto66URtnXJ8t0/KUJt7doyriGA8kPzP4P7kDcsCZ//9KqdyIcnyUY9gkkbl5+p2a6/gb21JF+yzD3cxSocWmsDnau9dpKiiodfd+kkNkVgCk/yshiQ8F5RTPNbASi8++u4Xsh9KIG6yq9q44fK34vhuSZmquMib6dg35Zi3j46gnhOht0XKlwrp2uaeVftfTFcy/YIH41nZ8lw+ik8QxzKVtxWQPcoD0eQlFdhoHqJIyrfRKQsfY3h+c3te18u3RQ9G+o8eMwPIBsqsm+HltCMjmmrvX03AlkP5Si1/54oSlFVQi+qv0LJnKwEQauFdA9l2Ga4LKSXID5wuuAGgKCIIBU0k3GCwHzx5RV4gK2ri+GllLPUt0sQq7eYXVNq4QjSivgz9LpJf9y5UlsbQpEvWHpgTI5mC3Ahlc52puVffBci9xqZphIM6ef9C8CBECsYghMqouEvYerbZNbplFxO+7BXdWrF8oXetucmyBjY9SCGvJimlzFfM5KQOD6LYMc2qMT/9w6RgcjUErWI9Gbc/X16jFyg1Sduq2ZwU4DKyfiwiWOoTDVShO/KhOkragDAyEhZf0CX5F1wjYTULzOFrULSoO/6iRUsKI4lI6potFJ0E1t2mAKkfEwD4Ta6Zp2oMA3DK3XogNq2+otAbZSg1/4Jd2f06WgW0fLuVC/c/Po27I7lIwIB61SJZkZdKasLK+Wq5U8xQ5R6v3GWDl39McMlPxDc16f5ldjMy8kpJ4G+Tnj/lB6enCma0By/MJEkD0tpdGj2z+R/0ncndiHU3uGYgjcbr0fyd7UiuVGKqrIghFNjUigeR4eLdwACJZXmxRCw76zsaQ1nMWAqXR5edttbVnAbym5vK+YNyLuabvIpKtFmvSPYHKT1CLSY2mKzi89niN6jcpvjKLR8q8ZrQ9b6ohv+h3gH9JvV24+fQe5tQL+OSOz+zv59xIdLoxQJwRNSydcC8lhYgBrhX8CtAjwCN5R/+PIhozpl34PGV5xsAaWHD7A51iRv1hBoTbWLxqB4xbaHWtXPbtlZNm03LuyXz1dZx71ytE7HbElTReqp1XdGXteTU2uq9rI6TKIFexPcq0eyc+Z3v8Eq7eA/NzxD0Y436ZgOQdIbsGz2RMhu6Bhqf3N7Kr+6tC3hM+gf3jpz0lRrox4djLbWX455P4olRAJsqBJvUFEd0Tm9E3kXvtNa/YIj60x3zb1o4KBfSkOYsVu+osrb02lE1J2GD3up7x1OnRRFNeBu2A1gupzstWGVv2uL1VjLAVmi/CdihoXMqVuxguPFjogaZcWnxky6P589pQGeq4Sm0VydwuOIajvWY55e7tTV5r67Myz2ROoCYjiQSiVEfd/cBZnJ8VwgTzCHGOnxGCMVmWh2FbvT7kWd3RCdOTiUBrVDu2Tr2bZEEYthnKdWIJ1LrsfR98/QQmvMa91EJLjIQpJIkDcOwSMfcbq680Jt4eaG51FU7CnA0Y0VfGzdz6KG4P64sQPJYyaI7nNsV1S6LGMxTLUf2sVyWub9EfBYO7H/xUvXaS2OCuZY+AKsk/FWcwUAnhwVaVcqwUG5ic9NIcVFcj9Kbq8vArpJkBSPCaFAADy9u9u4RduZHGDGEFVfiYF458XyTzfCVFYxxVGEb9dj7cNOD4ZbwHpk3wH7Q5OcE1Lww8/mfSZ5VtItHYfWEOayvhhFfAVw8m3mqNEYpnmyVTWoiw8fqxy3ah0VVdN1c8X4lZzpE5oRHyUwY2sEuhZ4fCRzH9oLjIIni4CIz4AUoR3DKCfpCfNKhUSy93NCxvBae8s8cwQX+YFs6KySHbopiobEjyU4MY5OnVIMHfbNV5BJEPaqoo3xcsSswU0eaX6Iq/zF9rvU6zMIjk8wGoqmSXbOT2NcokTsmzvnEj0zWTj5zQHY3V/fABMhvslOWdD2e8zyGDrgocFqDHjfH0waiASybvnQk3JpqqanjARFK4n2cKOLFxzjqDsbPIdz0bzYpgUcEC6eQlIHYvBYFHEcz6nSHnpSiZ+54QtWL8k0gwIn/LfM/tqSqyUN9lKmZOFTccZr3xFBoy7ptoKfI7POZOnWw+ij0+mP/G5vpQqCrq40CJnlqfHDYUpfYuX6/i+GjjkLVKgalS25BbG260nu0w6DMi7raAOhxu8fBR5bUIv6FyWBVzsN2RHzhjlNe3mXDhKn9sWmx65jkOXaYqkvH5Sp24X7R5OSibEbwBrqsqzt1g6fhif2IPaW10Xg7NM6Vt/gpJnvjgA5PZr5Hun5nAFsBRheWKIJIvfI23lfBNCTR7sdRsLdWPpNVhwWw4rma/EpwbeRJulzyxFmCg2NpYIctjWrMMWbauptYpmX5MAIyik+Yk4wbxCaZFznZ2wic0JZjgtgNFtBqZzuBl+OzHywHXckbWGWpyGMYcnowzUGEFKxYjzHtSnH0+jOS6rHG6ort1+SmB55bxBEbOd5dwnSTMHu73gMReRPKbCh1i6cklyWlv1k3+C/bsFqElifMXLswzTaZAwZ3rRoPkQxcrh9+P4Vso6NBF/wntKihsrGXOIgXFGg5qx9E/gjfuekI/JBtnoQwH0K17fE2MChICix+5dZH7Yhg1RYu76/cBKwgaH15hCFdoKv1yrNNzV4ukl365mr4Vu47gbFbi54jxhU45fVzlA8ksv5EN5TisVZkBq9JgwduHieHtuhorUOgPZhR5utX94al1/tT7h1s4/qGZpWtOZblxUS9mr6PaaPjFMMDyWhoopyg6nJiqqEtlHFlF2O5kas+vexJL46qy7l00iy6x8zCb8TSWfAaPV+3YVqi3TmDF/xdsTDWZpPr59fls1TR6uinZbnGfavcssZ/bA+tHWrBrtEt4n22p2J0QSuoC+QYyhVlj7h1FZm4g/+sGKW+VVs9UecFlAaDYOkGoL628PLAzfeYEhaAUjNYKqF1uBLBu8bbSSUCxpOv3gYK+IXfJluEMSrQcSMpAvbXfNF/pW7tCZD7h5pqRsuw9TFLgzv65GyNVyUJ5cUz/67DI/agIM28+RvesB7XyIsfRLKliJJNB0YG6b04rz6J356ubuM0FGU0vWpWAgiBdiZ5oH54y7J91q5bu5muds0Yw5YM3yGEsq0OeDOPjAPT6lcTaeo8U6nPBJxt4DaqL7hb4K1ls1n2033Tzte+1pI2jtDBhhKZSOZZLLHxpAu0KGL4k32jMabRr10/ZlkH4TqZjiv+H60P5lblDlrurbVUqWKbPM691CaOkMlRTFBj0ovwqfalCK6UIGXYs8XGbusjBfPKEBZQsvDQhdZlz6grC6zOmgWbzVq04lF+z2Lt9PxLNlhapJcuG87MMBF2msS6LDX0svxlXw9jogUh/uZrjEhDxWdKqJbGObTVUI0JyMe2+4A6A5ukFqeFhDc99HFg0smCstUSSD8+5QPcjzOdUXF8zhb7RU3DTz3aKMcrdOmVNz264vR7J2/zzMaIphp74/si+RyeorNv1jgkB5BSDsUHtSU7yf+yAFC/ns3LT+4GYJXUVzqTwzVhPowGt/wUpT8WpybOsc5mYRiYdkg0dkgqBDM5B1+LdaG5kUWdH4yaY6Ly1ZOGZoTvmt2pPUv/2Pi4lHSOMBXXThv65nhet4NCOz+jhZ+QeuIGK9vd0rH0GpdiBbTekNhxu+FhcfRcZaMRCN7YrfQ3bGndMAwayn3bWeDX8beTCy/zk57gtlIl7w35GCmUD4djA+/hQMT2OntZifyjBZ62eo0tOu5wLmy62bDtmGnjzXhRorQrNRzVS6YXyW1Nws3MsR7AStrZIQSDfT4VZrIaHWORhSLo2qTWGrJW7EG/schUfRsHiCTd9TqjF3zKHCm6IqEJA601uGi9722eTWQdVmwjgWCslUGAhWEmCroU6EBpjT+bUha8qbuodS/MFGzPRoftH/3fqrrFDOD41lNlfRgzMW4R5Ndxl9PegcMLcZJ7s1AmPjyN/hCqp7Px+4cTyizZvUAhO2ZKK6SOzOmtq3MjkMc+4dM18WTbUmx621KJJKdaW503Jt9QoPgV+KWh1nmorbCZ/DQlDvqHoWS96jJYKJ4F/HqNaqj7sMenbJ01pksp62M7LCv/GNwvcRokormuZuaItGy+PWMWsuCK1+WS0P7INmNe3fiUcGzlvk6vm3zuxuFcjyBq1l+Pv9WamvXVJtdjj5ADTHijVa+kD3A2h6xeFYMcl9J0fvWU3tNk1i+segkIsy1jsQeBF/s84fGLSfaUwHsb/iAcg4t7nR7j3WvSh7HVbHvNDcZH4XUle41S1tk1JNsgqtQGgQ+CxyDmSAx5imDgQ2LdSQZL3fN+i2XG0dw4N+VbRpVGop+NT3U4YEk4nEM2w5TwtZQ9k/RMfhoJZHHpfADAyP8GJ8FXEtX7Ws1miIzfAqAOpMMH6yDTsRS8ZQGqB8usRxG5/juNfL5JD/EVNE9lWTFzTcd3IOa/3fINXMA/BQARwevLf8wfBUXo2VGC2vB5CqM6eHrsNXwDf0I3rJWr84+jRa46CqN1VsJDDwR6Dtz9StF1QZ67QvUQxBeJAtPyPRI+oLpvyUcWrisH1YK5460o4bl4URukNyO0Sbs70M+NV16TgrGEVS2V9TJznj+nauxrr/vDJCrrfsuM4FP1MiT4VvzxDY98ydWzd7H+dTqxjoLaLAxIPiZcgUkzRyF+NmN5fU3UXB/C2MdcRiW9x1SuEUHnWMRoxAD4ylcMcxuqVb+Rj/uNvtZoWQb5IaeI73zV0ZpcdD0hiH2uHoXm16zk9zHB/roYN+pmRxCbXcNSNLVmm+vGbNkl6NDgP9TATQMpoA7UgTpQB/JAHtCAAiyu1nJBv3UpMx1uWHpfnpLQGk7oC2NI0hTSeX5tl3osx643dGYA9ovKHpqkyayXIkB97ElvT7Viwd//duNlCzX5tRR4SM9vigbKpFRpHWrrUB3iH+FsUMZCdF561tWffWGHua7n11Yyfy0yeDH6f28sHAsU/SKbl1vob8G+cxbbho3vxhmS8YymZP2O+aVcyD6RwZ4UlCu+0zsqHlnH+VtKmbTGEjj2L2wMH+7itZVY8YPXSnLTMSDTW2mJJffCJlpuHmaMC0g5T9wuWBFZFgIP1Y27POXjpl0QqaMEWGoElHpf7FcwAc2wsL2/9WAQT0Uuba7MwnmqbkIdVuvQUBQ4ppbB2vsrpLGXc+jGuR1i2CvKn04TGXl5i4Hd2oEA9/IeHAyXA9aamotEQkDiY8YqDKWlGfZzixc7GPah+3hjaEHr9pOpkIb+ZIEx7CDDbPg597REwrQHV3o9bcGC9ffu/yN7O7Af17IEmra4WMVljenKWwNDmMRyasaVGbWTpsTKnwCPQPh8Wlk9sWE2qRazEnJ60L21RPjF6MI7CQRQBx5z5Dyfu6asnERWkCkH3ugtQORTA62JHn7QH2ZAFYDCjUU1Pr49vnHdl7x2tnHt/z1IKZASPfGJM0AkhZJW6U+qgyZ6ImGIX8jlHn4olvOt1PsM9BKvH58RXzBDtwngsGG/58xU4oR/XjqikdeYxPEXWSPSmtnb+Bux1nhEV5tSSGabYrPNwObTXv71pCpA6HfUfYhZZUxl5pf30+4Hk2SvORyvtpQQq0Dhz0rDRJ9NL1GlsnQ+/wa5m3Ps+TX+kUBG998goM0qhWgZESPNhScbYrvzI0zW5i2FxAc6FpbbcXVPbqQQAscgNnoZ7CbxDVNOv+Kcwi6FzsCUS0hR7jAMpGZSM5ipbITcRgNd0VDTk3yvZUy/DViXmMGPxXcnDDWtVhWN4ihMDhUXcLIYlDHCwxipVMtgFUzCaR44JFSZThNfiFalO4HJ5cxFQ9Orsr3BKiZYAvt+oH1VAoptPGfeBX+6rQDqbjsGQao19bQ3XozbL3wPLILruDG53zmGRZDCS4FcMUIfO9nX89htBUhqTCLYFFlGww7E52lm2tvpp0HNRp/omCVrna4Wy74QSLLhe6WM2fasUfiiohKXHGs4NdjGKptPh3jI/nQV0BdwbnaqNd0uEfdgnv1xTmcXKykPtyNorgPwN/h6qasEpuNDlMXUnTQyzrgBV7KP9bd3vBPL7diUIeF/r9tOsHFV4KrP68b2sD5WFb+6HJyECRTZwS/1hP88oWBofkrY9GeRJXqnGL8+HWvjW+Nn+j68pHpovQcz6/IcNAzc73gr9f382VzQyoEAIaDDZSDPxeWjUA6XkZ8rjKQEoCv8BQDYjJVQ/R4wKTIhbYC+excGh6Wx/lrEnE44+s1h8bhY257srz4fChNAlzLGT/1yuwREjw7RdJNi+lT9ny2IY4u1z6DHcvHulfS07QgPzVEONyC5C8mu0x6J2yVXmj4gYiJ/b6m7IIDRlbbCOw2BhaSNgm7rncPGLsXyhf5SiCbXj1aZtr7bPr30SL4oEabsuJFCKicDAMILDMsB0ED1BTfKYXNVOLRCcoZjNMwSpWr23g7ka5Rk+1M4dbSCROPDjHlchWLX3mGO/xgt1lEYVK7ryN6UkwKVQav4TMKd7TpYP6UWjxbLCRSYtF2H68hEg9GYleD9INx8koPwOrAPw7aN5MPtw0FgpmMAe0caHNTKggWHI3zCUM1uCkvgWagoVb7xrS6seApM1E+hvKcW3saZQeo9ingdUgzzrD6P76cXRbq+qjsXVHyNlLp+xjd6OSfT7ejyV1DGB+ddgEdNdQDfVA6ub2Gn1VeGubBThQtmB96xi8pRrSxZ/dJeH0aCTGF8XB5Nrclaaf3yjPJ/JPUGf/HfB8QEPymKk4ge8zPL9w+aaPhVVta9fmMwYY9JTvh7v9/svt90329O328m2udD7ggJbLjyyVwdvbAa/xtHF78U9Wd3AWrF3eduUWzTkNTgOFayTltEo9Fj98PPLaTNm+rhs2kShZViEaJrDAbBh8opwF6cEfl/j47iwvj2tTp+0LD77bSEfxRjkLDtyXjD5gbqovngmbOgBVUBJW8McX+4ojKPY1unya6wdCGV2fdiAkf/m5Co4DWkv6tKV5eKyhwOSteekOVtTTXcuJspQ/DXf+LtWrwrusdoeA6vDBplwnxyVlL7oCWzfLlVxF8kBSEHS8Vg4/PwbLOkHx8QBTj7tN0S/6lgGkUsBk8ZHW9wN5EnX6/dgKdQEk4ffBjcGMn+T1H8MbMIaEUMlq6VPz7P874mIhPYyvarsS7hFk2atDQHcWZuVPBD/gaa7nO4TXqaC9B1W3Lf1y34bqMDfzYmen0OCCAnqnLjHyEPaWSJbJ/Fi4I+oUzEar/LJKi5doZM6Zq4ixBJvO1c4hktNu/xvice06dCpVg7toyAUN6CLmiMxvbbWcgWEamq46k+FryoADnnnAZUU9D5zEgRwf2fFJwqnvgzbMRUXb/K+7PjljHpLkD83pOrtrzrC0P02wgeNG7f7rPOMRFQ1NgWPb0kNDPsV3zrGjMRfS5oDJH9OhPn54ImON7xSM0+1U0fZFHmsXCgzIWd12Ssg0I11uUJp1OPH/S3cFExlNkfbDod3sQcdJL9K3mhGjXvuqF17lkX6TYhcXegQZjISYS/04Kek+pwwBd5Nqp7PjT2Lrh9Pi45DR3e819DKDmANqEfbYm7FFiJRhZsP9KcABNN6Jy1CqKFQDoHnF3Pneg08jEWKeNg1y1IORmARNvvO2IJHfc/K3o/Odna0snUXo9NtVchy3v/b6w9m5AK+14OEg7nZts3lAJBRbBFGPsdzjxlhNtHJeFoEKx/9ruc8Xd0TAimS8joEPuXjnBIx/yPutWk/T8qDtPJkh7pji81T6SJaV6z1bNOxkiKvqQFrSGL5IQ5qaf5M+okFCnNsnBnVoeZHtWJyLOVf7h3pyfW/30pkrRnZ2Zq6wLEYob2HSRe0OqAh7QJJOmlrnrMRSfLf231Ssx9sfEkzXku633ATsjjpPuD72UTsla0G/H/doYnjn7V6m4QWdwaN/2s+VRw3CXu8MEpBbvLJ8E7N6l9o1QEBTc864BCkFCnkFyErbGL0zDgmiVtgxC3vf91Eej5b1Eg7Cwo9RS8BuTJvuPOADna9Sz11A45bbEcBZTf0owc21U3052sDbJsKHv2Z1kBFt2+g1y+qCdZm1xiXUW2DV5zokd0K7UsyOK/m3K88ry2Hsjpuo/q5x3c9dPJyoPhJcnjviroj9TlZPqXzuKRWcyAN7ZxVwVOe9WDSJ1S61bDV+VTC8rQ4Q1DOh7suq5ZV4N8Jlhth16t5vZr4o7ag7WbjUChRIPSQF2LZzDYXpW2Vbemrktr5+d2PQ/lxIKOvPPSgWjTnkx/usFXM9T2F18MXFa6PHHvf7gqwM6lVy57N0ipxNv1xLDvShfUyHn2BRM7pSZBXpkKiZO7sx54ILvHQ7OIQU43wc/DxuZtTP+UX+xz+x5nP6ZEheW/9ReMAx6lhv3fqb65wjABWg4epIZkzrZBMeALTbLjqGIZtlQ8qRF0t0PUHyPnSVCqWB30QVTC4o261TawPutkgm7g4o8xAzvRdNH/8GyZMFkENiBxU/RfXH0Gi8PUtAuqLBDYfuIK6XLg9AWqdgR656qHE9/FghYiOEOEGmoR/Uv4jSXGf14qyy7uZTQTH3JbpWTM/eWB98ViF6XR07hhRZhw/THlpJWJacmb6XnLe7yrfC9ZR32J+VvvrDwVppv+Lj3TR2bVcLP9BvBRmphVFgxIeG6xRikoyvmfzigzW3U1UVsV9jsP6iWkrKH16Fy8/dvmgVjKylgVdLx5+AcbIupUoU/IJWFSrTzy2icp5KBtbJOug2qve/T1t+jh4UW/N+Nz+r5svOYykU7tB9Huzt2hc1mWVnUZWHJkw7AEjPcdkl26TdMGpkrqwn1qKsg33QdkXbK1LKjYmGzUCX+uZaoG5a6CAZ5B3omoCVwP/lic9YWQDuN/e2UH8jYj/t+xz9avDTSO3dsRJt42iDNQL0U0p8kjI3bIdR01VIyc3/TiY68nc84vgE8F6K2iEe3jNmPz2mxXK/6DOovc5IAEGO9MyDXx/EqrgY/7WGq3w0G12oJzpUQSozNPxWZwMxqpOAN1DDqCbRtF0PtAkCSV+P8tP3tq9c253/67zYeb1Ifub6aCoRDVWzaW6cFsc7+7Nq9RarwnekaWJKxn8pPDJkGnqsxbPTn/gxglxq3IL5ZlStkyYFvv0iUhDJIXVtGxybJQjfmiZ6afyfGZBMNtI+LKf97B3b9C9PfE1XPCaa9fi10fiWtQu7EcE/FlL0lGbWCW46dv04Y+iShZ1A/bYn96TLBtqT+Hm9JPsMbcO39CzHF47WL4wUmjnULvIRA8FmIkQMO57MNOcNHHNsLeVdf5h9Dci8D1NhLAvXQ1d2cGvZFargRiasSfkrvKkbS4/tYRv8LlEgeK9kd83HQ5s/HFfRBLtzQgZ4aUP0PkNSXWUMwNC+4/Z/MUQbzFU7KMV8HMQt+G5dMPZwi9wNPhY4kT0Blj+v+I50McPMkXxL2+G6MaYWrqX5x/lCvDK7/4EDmWXJ7cQ9OIVu3ECFdoT7357i6BcFRKQU2LUZ0ecN/mqr0KquaooWbDq8jyWj3YDv1cFJ2zyyjKUTiKmFnpCbJaI72y6Y0ycDHcuNi8P+hltk4yH/0kIf/ep184e4muj74VJKjRgfaA0ikBl+1/KPj8dsMupCFzz8eZP4ZCXIeErzPBU8k7L1DT4mq7UTo7nVrXZIk2EcWjPqJX8GsT4bPi16lGe6Vkr67JdY7fPymWK1TtxTV0TmPZONaI6vbydYvmOr5PFgzJkU00W9TTTxVmRS04E/dadg0hZ0o711L+SlP50lrlh2sFI1sVxWMyewNjVhzQV+C4sAXrYoGU5ksSwtoKAKoXZCiC4L/FPPmWtgbr0tNbiJ5ByKJKZdCxoTxM6NWDcud0WxFnEx+EbU6IbZ7Jsxfgn4XgsTG1Dhb1jcxt30yvLprsboh9tQZSioV6zqYSGkb3Co7ojUHkH6WmiYXUymYwbNyZEV0K2tXK6k23+uRZieRMxchWS/zakn4zdSNSSpZugN2rxjfpauuUUTnVkgJrLRj5H0ufbhLtf1y4qbA1XU3nUMbCdlapDlYxgjefcsipxX8hCYvHT5f7nhVctv48lxv/STSex70BHGNM+6ccR1S0+Pz4XbkPK1NnN32X7KU8YThmFu/R3h4rjAHxcNptm9hkj/AifoVU8NUGzJIxe/rrXzuAKkMcongdvvLl/5//byjiTr8F/cgTvKU8DwqI/wyaE7eu3Jslis8XqvLkPnB5ZToNqF3WfO985zvn4KXDaKgGcyfVNHn+cdYRPeXw+LQezmxOISQe+BV5nrTf2aFko8JpDhgJsbsXcfrhSbWWHHReD6sJ9Gw2QgTwkms+GGuIsVZIaKwEKLHz9UW8dm+x900mjKt19PGjH15o+PmAsP/O/ae0/GLLYbb1HoyQYfgGgL8GfQcOF4cmfgaaXE/51Gp+YzowbUtWsfGuYsX0YIh6jPNdWF+ygvH8SOoMOT7hGNLeWHrq+QqE7IP1Abn9e/ydpyVsSA2IINKnxT8JOIepHAg1QJ3sPtgb5Uxi9/fOotL+EdFfFu+p7x0bKZSyVQMDPHBCWSMe/OV7ArNyerKoCLElDYPISOw3WR5HqqK7iNV8L+bf30lGDXQCut8FHFg35MArv2AjA7BqOACcJQDEQ4HDo09n4C/LU7RJ0fJeSJK74fiFB6fHY774Kit6MHVyEk7NpzzVndBtTfJWb/nijLLHjAG4keNlpV0GrhSCkJi9jF/cpCJNlNaQjQLk1Nt5al0lmbHGu83VJKiuuQj5a7fjnALzzwwF5WeTdbmoCGBw245Gq+3XsLHFA2LkBdL2Gw6Ov/xyuByVAuk0dsEtAlCe5ZC1DV14Ett533xQuJHZQUwmoG4aDMJH0Pmk+buAXmWi5ZblRu/CMdbgALVA0KlwWpbQ1OrHhSyYGEd06s2NSdQ9yH/ZBTMy/tlOkCtJx6m+3/7DCz1wSL+hpVgHd1lQuZvAKa8KFljHRezGhl0ohrzGVOnIfE3qYGk862dB8uX6DZX9iuyWaPKMEUtuo41pbORzqd8A+8rC6/P261viHCuU6ossN/0Rfknw9XDbTdc1wm3XqiNd5CFNxkTOXvZCm+VknyIeQmxSLX30srurRUoVIxjfaHlxRK4/C7DAA5RcHF0oizs0YsiB+01q353NCJ8d2pXrZ0zocKL4jyRh2BnEGl5iFIGzyOfDMlAUYhQzTqcP2Dqu0+lyk8HiXVhIsMYIsOXTp657fvMN67It1MHO01t8pKXd5kLJ8SrM36tzx+OOFS7hs+cNSFQfwW1+bfegobfrmat1GzXbNPRKMx0Kiu1oEhjD9t58lwCtHX7wemxzs+k6vTs/dyWEjScB8QzJ35YQKL2f0i/WTfa3KeIjbXQtehf7gi4Mlhx7r+qS2uqxhMgYmGPYHmN9pmKfSOxOw03w/QcCs5uxQPk/sOFUw+dK2mvaY4odoBnOF+Aquog6utW38opfGSxeXoByzOzzVUSky8JvixU0kB/HSd0mNOsbcjZ2T0U/qnyIorNDcG+Dm/Es7sgx5dDld5HIcHdNsFJz0AKI8N/3SVs8Fu8AEc90O8wq1eBfSFyMzb1rz6K94we3Nmc0BiDBYWuA2XDs4uRbUcDaOrNnka/OkbLOT7jIfrhpPsM+/dSACEncbZE08Y6QHh5SkNeOkc8+FtbOQRMN2pwQn9RH7VTixGqudE/Pz2nwTpPRgxsXlKjwjhVEuPEv4lBUobAf5Lb3V8ugZQ3M+KAsktA/lRH+3aM9pqKwcgLToTn6dZ52uA99HdTg3scYHdnpNIISX1zlay0DmPCjh9pD1+so4F4S1rqvV1zqawsDLl4hjBH6wwSjngj/L4KPQmF8ihm4h3RzkMdA+wAqfhcKvxMChNIDwM9YgIFnAOLWEvGO9uNxd5F24yvpVatvBba9364nvxkYvBYPpYidsII4reX70HAuZNhkixIscEnb4sgbSVhCb6SAT7TOxPgWKNxmzuiO74+wwPc3UA7Yh1i3WFpggl07Exq8edORvyUunIVNQrdJF5Wx9WrTkrxlsmVCVtcyRIebPg6/JHj4sbsubTfznnrWoGHjGxRnqZxwWA9VLig3i1uaYJTNaa0ralB3wiPXdUSkHw2GIE9v5srQ2SHh9MPImxvGuNAcZk5VLKkXIcjg00bBoIvtUv483ZrMZY5II6/Zw+yXOCPvAojtNVt7CQFoYE5756DcT+T0RlxjeuX05Ur2HsNBXjSYu8tiAs9NdlkMj6cK93Y7KE4chOSnCr9zAiKWA3YwWznrQNPngm1YDyczJao4xmT3bSsQWn8xDhwn6PmWWt8dX+AbVJF/dwE7LRlFVsiWTTpHjdA0T/IJAeDM+GkEKGjt8sDERQ1iChXiregxIe5atfzHQPOdLao3ahu0nr5Uhpk3EMmrRK9N7RbI17ThehDxOfoysimNOubr/6k0nkc3qzn0nKiHhyCc+juDj0H/qkfAsYVa10TeB7r5ZE7dHU9nuzwtzGbUI6/VnIpb9M8scMkbi+pUHUwOKi8bdqHWdMK6ugn+A8vXyeF7GiWIlaEiJplNfhhJOzd1i+mNnj0pJYIun2mVUMaGCrAfnhf2cO6rKdza0DnpJBGmblArzxNwLijVHQA+tZWtkgE9Qac0Fq1WWxCjEOVBjZB/XBJNPsuygS75zA6ycHjk27eKpDEvQt74HsogXLONSGuwzljB6mUxOEwTjkpCh1ZzOZ4Sqaguot1XlGjegLj50wblfdiBujtvQ21MjkmPD9yzhSmnk7YKZRqnqAlwyIIXUiijExtZVeghsJ69ZVH2T6mZYTJkNQ2PthObDiyoWhIDEx/2Ls+J3jhIMdGGb4XccxaFS93dfgYFPK83Wdrqk7PhSUlZcpF6Kst+J4XfOeF3mfDZhVeqaUkNrAm4yb5UPvVBQiTKk+AfL8/9AUnzR6is9aSROgemqpoTlNPAFAQleIGt9EyuRCt9yQzsyOqNAD40SckUN/vKyOxHxw0YZdyxb2e1Fvdmm/SahS2KhJRlSqpofa53PuDM4p3Ffl1llRIGIf2CZgn78pL01NWzUF6eg1BRvsNGw8STCvYDg3ROghCuHqouFuuG5/GLCoF5K9t2k+Cn6DJc9PrZbPmUBniebeG5GEUavwLXS6Q1HPv+5c+CLC3K5lHl259Si0SKdD3aWyH4D/ZuqvYLHMtKnIh1PQGqtfhQ2xtIbNMupJjuq+7w3aGQntNCiOwf+9ql4GdPGT6nE7kgjNCavkYQweRZyK0gJwtAXTXN14e4JLJeyTFfV9R+v+wx4NI7XAkPsgE3uV+Ur5TrNiFlxdVqXFUYrOoDzTFZ1XVWaT38li9vAwOgGnATtw+gnv5VNw0vyisSOgxA5wKz3bWVVpXcaX4+UmUNZ8aowhf6x5YBlqzNlG6Hmi4ILBp4H/0WHu0GBTC0hVH6RrW8XUjYBGDvd6xPyYRZrntOBQBdy2JDyXql5+u7ePHX1xidnX6su7WdL/pr8EaYAHYIe09alKBHbdjGFzDVG1MQLcphi0Zc2fV6RDOac4fxw4+eb5UVJI02owQwld2yKEH5fdvDTSX0L1pPHOtjNNn1sNYJyWAoaoCl3SPkJtRyPwYSHpbemx9QsE4r8phzjtJ72c30Xqb91o/+vbivWbE+81xBVJqomUdpFKLVlkpuTezAwKvUr5y9tYLs2P6wTVWw+2W2DjY1VL3uQhz1XOY/v4PB2JSf/kzEcmPjsI7QVAIF1s1NpbBd0Sf+4pfxQnzQ81kFO3dxjNg92lSCwoG1yT+tj9WDR2iLqyb4B//86xPX35zhdgVCRKQIIQFIVHoAKnWl70HRAapRw61HVGXaoPpdI7wk/BbBAAeUviMAatQAPaKAaQOAIDEwEUdvMYenKXNi+HgS4ClvQm2RkFncHvbNOTia118ckKJMOtDK9lebJAoH00TxYImgWVQnU3fbOFhAOMwS0kIW4QZN7gbmvrP72XMC/96YsFd5gCXBm7CPFLxh0mvc0E0UByPNj+iLqkkL1G96s3PvH1VInBw3AVeJ6EwWMIuM04pebNYDsLGcE9TI3SASy8nSfCM/X3lKs5oCLOapleNdZigCLopQcfyqU2gI1St59fftjj1uLM80eYPlGZYfPtwF7hfhYprpu9O7fMJ0/h7JUOnJDMiyNn5FL2EKaeI62C11ppaAx0SzV4XueNd29hCZ/3lEJsyrIlc4LZPDTQ58+9J7/2T35sZ3r+QbBfDIeZJtacCu/GUjB3YuLLs6f7WCqhGG1h3FlqcU1dEmVxygECJhXZTyeyjnw+X8i7QgmYPWuFyv6lxdptdVdoD0Vjtwjvwh5xl/WteZNuzVvZbaqqriwJl6TpDqquLUWuWmMpNpAE5fO9pj9Kxty6gxRxF28OiiXtmlcGt/sKc+Kapl+lAybEY3A76xog3gsTPIyOfU4tXMu/Ax0jzyvkL1+NmrEn5m7nKwIB3DKRDUGKoSCRU28gLHwB8LNv0WYqRbIix+yQWBRxe8qmg2bW0uIGpu/6Ir+ZarZNtul71JUQWpGGzS5fcltr4PuxApJJwQRt24mi0NH28yXpMPouFmRCb0hKu6O5XR5tnPBttIW/qSqdT+h1+PcK+IJurU5xDPRRsnfYSXhw1/FLvmP09FXt2TjoC1Qq5C8LQDteJUTQ/jfajiNbwhlGl3ADIXU44+qfA0yt0sHMwpFyfFzfTo0Prt/74+uOAt1N4KQNQ5JS0PXPo9rckWrP1iq5hAlQ2ZcF93aEJOBio1oZvSiZxP4xDP4/qlCXgNqCC9XvXjWHU1M61ncFj0nLvujORUqbQin2l4RI/6kj8kA88TZw9KGB+FFkQsMFuHaL9j2FPsTUOl6YfHXOoDqcpvbGEyOQvzbJmaMC3hMd+8yWbxM6dKRlzDv4tL9vcUJDZtT1ne4ZAw8p23aMXMgNqT8zC6nVOoGT7NtUrSKbzjMhoqpUOc45Dhd6/e2733EO+oDp29LSI6MibuuycOS4kJE2hrY4WJuIQOUlDEhWtgj/Nn7Dx6ex7c2iPKuS0iuNUhvHVttelKanT9UxPNr0V78XHfG1mRZhNnLA4LP3Vkf6T7EupoSDxb3lTRSkkkYtLY6FL4JPjyQh6m1x568aFeMCbFHbCCZEf2OqsW2w9dQ8kCOm2syEHbvgG+Gkfp4n/BLTKIYzxMbJ3ZR5YpthJ48EWKK1DDV6nFIlIb/gsezHfSsFYPWLvBXFBwnfWyxUD9zYZRiT7WYgWDJCdQISFjLpMBAjyBSWAf6MtGrkGQ+gTJzi4TOH/vNq/Rg03UxM48jlD667T1chM2Pk8rZIrLRX9buSwfEPPBnXiFSgNjlGmMJrJF09Dw41OnixUsyhopYqwktuSpj1jq3BPUm9BW81qTe38rmGKFPCZLRPx3lVTEdS7c3lZwa5NYETz5Zdr108kiRy+QgGDrDJlYA7OvJ5ilLR6H9E4xhspBgk9ApwZjS1s4thFY2zx/bh3pcU8njf9hs7gAInibhjskFQ/AMiQ+i5TPY+3e8nlsET1ykixVlgZxsYUCtsr0OhHzFS2Hjf2zMwugpu0NE7LBU0SOOao66J5CninYgVHXpPA+keQh7JmkXNL7Q1oG8aFMRnh/5HLJXLOo1gDp8ICW5lPSYJdDP06Ke0xCynPVe6YWrRsgPgMmw9EVt7m5/QnfM4p7101gmDbYbbmZ8G6KT5lJH8mbMC3+7SNR0Pi261bT65vVr2eSTtPMgrwbiV3+XLOfF8+opnJSxvIuHIdsqRaJdOtZV0bBOUNu5s17WuabULx3t97k8WzlgE9PnAXBm3LTVB8DZAqfFiuy68S+Btvs3TSgyBBy74zOoXMlTzoQ8PNdB+Tw8gAgBGC5xCrhYK+Z+YVEcQPST9cBviHVWLAEtWLatfiMA/kUTmf1bFmnTjrHHpwMsO3zemKfkJO9XK/HerazzkOwFYWILGwqZCfaNdDcJbwaFo5LjgQgiv56ouNOJ3zOuiiRc2Kn2IwDpMaZTOP891Pl1PmgepxxqVV+TCUD9RA4EVfkLGbHBPTe5RpGAuLCR9A1qF/gr4A7ULCZinA042wITN4czaXZmdXCeb+Ydcxf+TPRUX/2JNyIaLjcTqcAZZyexmwrz/Gej5wuXQYIu0Demvx51TyNCT8Fkd4syx1vWRVcFEK0fTys6M//gG2cQLCEb/LfrRgDB2H9+xvq4PfaMLdgMBglXn66TEP4WUAXLMJ9u563f4Kcfzc377oGBvp7X6PB4Ftm5di1yzfzzhzrbYJu78XWpH01KzMCpiK5qmYpvz63oD5IMkILo+Jec2jehWaDtNAx2a4lurJgTJDpZ4xd51NsI1GZac6tkJ4pjBFK9jTOzfRvdGV4r6Y2Gk10oC10korVB+RuRFg0x6FeK8XYhSuFOc6w0vpNRAZhgR4RESDkx6pgXvvzruZ9zeOGrRhUf4EwTYjbpzAvSS5gEEtesFspn2HGU29h0ECtkBKs/EhpnTikzmS/rKOwBUG2yxaUntC0UIA07Ik+hzfHr8aCw/fZcb3BYU4IqoUzQE6E6txo+m3wqtc0DCeJHX+1E2ilTdUwXDE8TjU89k04pD/TS3Yud4pVVlQm5FlK/i2V1PJxiH1mdz35+/VhFkiIiYLPo+UxrLnwpOi7pfirvXSs+Du9tFaACEze64vLK+h0PkTuzlyLWENlOuZFMJBOmYmVdirFUZJhw9UmRaQCoJ2ehYvoiAaG8mjLLEfo4ICeMiE5DpSuBik22l3SMRrEg5AGP3N0xj7yGtVqVtR2RZw5bLWn3uviAFZQIETemIoNku+qT7BsYe4F7hiwpsBN80Ti8zpRFP3EUJnl8zc4mgMOZ/6IqJ7AKBkG8J/BHIOikzSuV3Au80GAKtfBff0H7MCdyzkAtT2vCOTsP7pq+ySKYk37F+kDbXT9vvqTKHJns8rprJN9aJJxnxC239i6A7EkV+mHgnAlIYVdHHD9XZaImDy/H+9hi9bNJIZVAeENGjIRWvLvBhPygoM1DfSQRq6U48iGgQ2Zf3HubkbKjOFRAORKcNelvd3UTya/fDFsQPRCax9ziVEYLcz76QGbf/CvP3dtbVnjuuUlSBR0KT71yLvdUuBLNsSxrx/F77typypW+MQy7QOrUeBLggthkHpDM2rkN4x5AY201RfvniWyV24OCmOcQJkHNeT2JQsmPevPfzHv4dixzgg4t2v2YQ0l0kLJdYBHh+JgUaw3kHPrXMCkSwdAVJe7G8Lknaqb4JuqEef7Hr0ZtvLH7iS7BoeBZm76BIZpxKLyM9Qvqmnx6ZpjHaYdx2E0jrgWateVP78y3WYHQSpQ1jz+KW0/6Hc++r69bSUHDhp9S2tA1FDGPbM4USITUfiBjYhib+QGRF1RNJljZgxpB+dOxc495kp5si7QK8ngOhkSGwPnJNfGq1XO6uVr28LWca1ymlF6qE+tQujl/NY7AIsFNPikiOoRwXozxS6xpc+ltrJ5FKGonWqVHBBT6rAgRzO3HcULxoASMIT8GB+A9tP7nRu3ubffKXwwbr07FSH07imabxRt3plbUCsa1TDmDUAjB4UWe6Rs1a21MrWZG9v5aImWdIZhdNl6tSMsJPCo4SN46VvkiRecKCW0OFr2xrKA/o4FPBNDXbJT8RmfPuFNZY+KdK0epDfKohy1is2LLZYsg9s1bX7TIIc3c9oaNFbW6tOujwENWM0ZgTAX9BT6iGAuae/fC18ARBwfKqKYt2O+WWv3WvEm3MSa77UXAsz6FwfAKs6lGJIFBNP4+LvrId3M4K9Ec9nm2H5Q+j/UfpO1M+iiMk0W1E5r2aXgQC7003xl+k7CCCuWnG2dCo1VXzKF8wRWfzJx8gEcvGtljpkDMF65c27cyE9YD1+9lVHb7vRYD3IoRVAelQR3QBftprVxk7gAjyMace2Aw9z/6pgOg01KwkDYwMY5c6MhqZqRHCjcqRSHxff5/FkmU+88XZH6uyRGwSg2a9y5jQnXjZU/gMIuD+yzRYtibOGb4rRFRLxFyVMPc/oeR3ITb861j6MiE5WtGY2V2Nn3pru14MR/xCmbn0QYk9OAGQVx1DFnZ3C1OGJCZVUtYwT5ecPX6ctHpqoDlVnT9ps40FnFt0eAJ8QvYi/ipRvPZph2jyXs13iu+e4s0usJ53sdcEWdSbdkCC0kGrI58N8ZEgEsuPw4x52XRnNXu8z09FILByavk7nA9WtfUnIDnJ5hN/s+kmGLhX5zygtv5oTLb8PtjldVXeD01VNk2yvMZ8jYS5oMwEuXCgA/uTvr/tI2sQq5ovu7BY+rgLFc0Rgk+EHQi1NWH73xxXlDhaHM39IkS+3qFOWlVlUMUqj9ewZ79i8oK8hkOVOa2NVTFwHVxZSEi0xATT0WC4IVKmtWklNsQsyMdQh6+QvzIW9bpwS5x8vrXfqIqYtwXKzkvJDlCskXstwbR//mGY3A68g75M+rmI8dFv0YwM2M1FVaqNvdsJXnkoWLwv6ednkO7ixj6yaLKA4MmIibF8gtWmK8e6GYvzbdbchW1fq48UQQT3JE02zhrAxqCH/FY/EGub4/c/kb+XPtxv1TziNOzpBDTlBgi/daOFjom2UyEHCsxHSrPFBc6Ypbw7DNN5HlwKBNrqB5V3jZKi9jwoKh5z3qu7evFDxE0h87YT3NfZlkwqQJ91oPz2C8A8dsb5JWpRK43OiqbBjSzP6sMJauZZq68W1xivOZX3I0JB9UBOSGr1Hz5H9GqJZal1XLmILz8iqOaLse71LlRNSEAGetYjxsZ4zZRuYUtlNZplKgxE63CruJ9SsqXKRYg8Og4GJ2fdQUrG+L3EbI160fJjG6FfIW1SKBlGdbrI7Smo1jPPkSHmbwm8BR3DOQHHgJovfGe/0A48uhq8/uMFk24MKpc/eHGNSEQrObdZERMafvT22WMEpSOFwYf/f5jaC2i5fTGSILAlEG8kGXnuLUl4VxkkU56mz0jIdKAm/ru009oGTZU7HWMZSo7VCdO1UjKA4CIi/CbR48WYtTwCR45Ur4fIvvYC7b7MMAkfScuTbaJqDhMWx42lQ4/T1BdVG2yuL6nE0Tg/HkpS14ES9Q6GLL3LFVsijhsWnmqfa41B1pCE9tI4QHupiYnAG4wrtdgwnCkbAV4B8KwIhvS2+YqnWn5uGTwHRWbmX7tU2I76wl8hJAWGXKOYkDshrAh0+M6HiPtHya9YGIkGAJN31Xz+Uc5khIPKy2kaz/oNS6wLZbLCi9HgAJonB+jmj48W0S0YsBhEgtzpEHW5hKi+RNXYQmPud7MiAMKRescNrsqi/U3WeFMUYsBlxVIdTXHfcDRstO1fQqMepXmad0At/7aQKD6olByRVRfD2dYTwHOraumrF23+bYlAd2U5Ni4/eTkDzcTJOX/+bvhN85QZozBaIwkrVQFeQV21Ea2LrE3cs4fm27o/xBMYxjBxCGcCRao8W78IMUjshGgd0aiIqDQAOQIvmH5iFvqVApDZgEB7Ejxybu94rCXp+bqZfbq9insB34ndUceurw7N7slW3JJTkqFCGDj5JZmTkS7flyvqKs68Tqb46QyzhwOZ7o28ShLlRfTMtJD3xwWyrH/ZuSxyQaIUJnpmnzq066eOfMx/566rZaIt4zGL+6CrBXLaXq7YFvf+zD1F+5Z+MfFYVoBsjtA+fLaw8fTwcKE5Wl+qT39EBjB4/jteUluFrnxMAy9tX7dQxYVdssv/x0f7AtYiFvECXsVjsZoL52AwmDbd5mIcFD0o7BHFTgAwB2f0uCLr5dfnsfb8nNpTf9dTecpibb3mSr850iEcn1bwc6i7CcXp2r+ANmjQQAQxdQZ56cPg1MXVCmmQDQt8I4r/wqbya/JwEHsqnAZSRJcNlzCrxO3+JPB8mSQhzersE9aOrYCht7oirMHoyWSef94fEbhzoAvW6E1lcph8eJaVw1XXPkcg+QgGWZx5weuh5Wh9s2ih/knL9+NcPPG7OJFQhpS+Z0v1XL3xuLw9ss3hiefiGBTS4DhqoTBFV8y4neeOkDrOlX9TmnR4YzFkq3xsgStn56LRNQ/fnMiZvSWeqwpN66DgNVDyIqwX/3/UUB4nvWd6EXyKOtk1+lvDR+qn9l/abC+OsurRa82Mli3xTeRCkmQiw03chasjovJ8NepCWkFxMdWUhNm8n6yXeEtqnNrveQigbvBlK8VTEmWSmYYzU1dedb1MXTMxx+/P7ClTktpuJcMxzfw1n9E4zum+5hophO1WJ1vJBjxWr3peqHT1nqCgewl2VzAKS8ieiXFPA+MAiuOXP4PmgEoMPVrdlfu1bQdha+rH8m8Pbnh2rWaevgcsrVL4l7oMjLWieDqdHhDIfGY9F2C1Jt9+LGklSYSp0A8stTA2Ow5L4bD3t6xoS9PJP/cA4yMg5xr+5reBgVaOHNfMpM2CtUCJ2IH5JB0qnbzwH9hAT4+FRLRc8PjsuGM6p/aFscsRz0GDzFUSbJj75OiuAMhXyIyNZ9ThQu6c3NPnIf5UD66qPbxzRjXlAitc9VvXLnPyP/6ilYwRHa0eNV9AkCmjMscQ2lllgB1GOM78HkLqH46vKZiNh3c7oXeXWRzqJab3AOgYxXexpytTXnrwOLhRVOBEW0ldQqXd4WsV6PwD5H3vdyqp1kupSh5/eg6KBiZUG2qcBAdzAMdxwMDyroUF25hLLuNEmo9r5xnCh2ODrD35wEPmTU+AdLu70WrT97fahXpeUOXoiwDJfeKqh8iaJ1hvN3SQAHwXCgLGAKetzAjbBdBl6HAw/52mMzgT88/mbROZJO0P2H7+yyThSumdpF03VkTyoiMttc9qKU/Z6MB8ce3Ub7Hc5GS6QlrdF6bT8zSqSz4A2nMnmE3+4QSMbkPgaaE3lEaXs+4ox+oDUbK1vou0ZdabR99ZhjMpWRlFZmjUuh9qycQdES3FickOYP8kQ0mrF+SDBzB7mLqtKq+mYmH4eODv2v9cxzksppqO7PkAWZEXJ5ZLCwfMW0Q32FeczmGdB+XyylMn6jGNtUrKt94fpadH0V2sAZuulcvzmnviJfvumnfpP1sAFqcGO+flXMLYh3/lvOF43xUX7fkbJYgmclkv/t2+eo3pBQhlCwRevUAlqtCjKM8ucQ3Xgz608Qm3z37VCti0Lp+/2YoRl74f1gAivftOSo9e3lC+2eOaHjT67xjtVAMB/EnYXKmn16PvWafUbybioguI/b/Q9cEcI6tegUSPie1Ry7V2HvZHir0LFNiAZE8OqzAFuSa3S41u+K0Hyv6Ujr7MD4ZxV+BwVNzwgwHXBDVe8Cu+UYUKCrfNYm6M2g39jBmMrTVLDmkyNvCnry07wddTg2RA6SCamVw1sAxR4UEX1S5TXeA2/xhvPKsFnJj3Kam9aoN0KUUn5ADnmgpSgNISkDlYaeTHU+GrdD8exBz3kyKnBwt+CQsjBQWBfilv+wmDJOnZ227BNjr/kLHE9PlOZl8bUJJ3zGAeE0Bdv4NQU1Sw6D7/wMP1ZhPmUUUiVYfZ+tFjDrO5wZiu9uPiy9zpuNH7+rKMFHRSOq6gsYpX3d2KjWQ+NUarMSH8gYTyvjApG5NXUF14lVSaEPTxLdwKJJ+QO8swmDcFpTvRl5+SUHIAMpmNSm+H45wY59inKOdfjDN9RkSlUjkINarBkksNTdmoKsYTElvjYnj0Acz39S3nEIaHtLRWIhAtsa+XFGTlmrmFM1Vvam0MPuLI4mO2oXw9LwSonufky57ZzOgI1tcFNIZBekM82Xdv1N7OmO1S4jA1zTcPBdmvzk9OUmnIaCSk+EaOGmojzJkHTZFwaWDYCoHDClFzKrBXe5j8Q8QmCQxvhmYHbN8CPRqsRLnavl/mwjpcaELwzw76iSyqVf0oyXxM24hi/Fi3M3QraM4noERTgxCWBw8Hv2GVNKONUj4J7ZKuBiFX4EGAO537+mWHE1EDJL4Cgha7S7QrTgGvsLA9dSX9RudD5msfb1KyvWhs350Ub2USYVq/F6FB3BRolhVkVIf/RJEGgXBZruwAMT/Z6hwCbJf5agXm1Mq2Kvwn5wQ6O9G93u9H5Cr+XNTpZc7n2OKhnKJbiR00DqmmIpZ0K3Pi+EzFFyKQ5ekQLKVYPDptnhdvKRtErfhM29u0eNlyYLsQ7eklroWwktHtm4GM+I81Ny8nvTogo/9eVPh4eHFvGyWrKjOZx10Npjc36iUZwdPHMnK0cnVosehI49h4+7hvHxw+qfBiEB2pelUkv8S3NIbNMtmxXZRoCHkqS+JpSvs86KAFI7atZRhTk/vIFyffFifpjToPUj6Rab1hxtxzmKFqdWoERR2VARZyjnm3zcoWBrYZ59WUMD6whAO8tBmCAQ8McHKAqLEdLJFissSli0sIyECcIiBOzyDgNeLUfxGL+mckiCjQtOBIr8YnnKamCETx2PU2pDkL622nT5BVmvOR/2touQWlckN0ue8Rv17/8IHkzn9MBl/rRanB2UCbO+OYlWgSqGY2jLP/9wFaPYwljd/TUloPMQi8lWi9iPA8s4vOVoDzggZ3FAlhWmPSCis9JoEHmmRqPq7ZiISU7GCN2+OATRRRc4cN5Xmx7euwlWW3tQOMzNXWGBBLWl5fZSwn1TdDxk1ds+kZRoeBCNvSrUbb9BoPJ2a0wZCK2dxW3YlK8P5VeEsgOnV/UA2sZ/RGoKx5J552euCFcr4SIJM7on+1U4m7hqWKNGY5PZX1Ywi9zgtB0NSkeKFMC18u1Z0wj2MZMWPj0hSUZSa/s4mnR5AXdODis42ztKmdmP4SmTYPxuYty/QRX6BH9Wg8XOcA9u6BXb6/y+1aB9Lt8oqOTi7tyr6pj8fiFtvN4amPmrQA9w553hCDtdHnn2YD7K6U/X+i4+M9r6zOO7rBQNR/vLITm7HX5xgszvr8xTfSVF4t+KzKoMD9Id4jFNhEoCKLUUtEeAgOwx3qywl0mTNpdBppZrPTzIlBTUzONIDbvwV8l1hS7X5Rqu4d2/eJgEPGCCQaBLQ7VCxzkJLlA3xnzg3/fFTVBViy7eIDeHq8YQJx49APlJH88He89c6wtO2EMk/kWdOLxDiCyKygf02S36NbkP9yswzlM/FV+IDZ9c+4Tw5hfEA9a2AWx9taBeL7tYQAKK/DEf5F30g2rbHrTdL9zJBudm9t5i+L2sPb0twblpgt0LNBdzn33fipicPbpD7Ldntw6rGzVX6a8LGBAusaQkf0pW4WASfMhOlUVcWr1TYaaQ2qmEe2olPQFO/bM6lbp3VImo/FZ8y3jF6L8IuJYdrXW3E8nwidU0WTnTsKE0Vric67T4orseDTsC95v3qVcgf7ZCBUByJ7xpdVWJzXVRJAJEPAKnXieerzSVOBHHyeUoXURciiQm+mtn7SEOIbCQWThx/1ZDkczSxKuoJTEZms9qTsWPWWkYxHXBFXuTb80KWYVtWbOQg2y8jyNYuzIZmMGWPuNOMmxQlxmyMmEYbQM2eLHfsXcEAsNY+/7lwyv2rs5fLC4XZiOuMlrp4S9TJZo6H7OpL5Rk5SR7+lr/K2uUja5XDeIs6nJR6DIVjprKpSrGtB6aAofK9Sb92q6MpfdI025v3F0U7WStiJzrtPFkDRkmfSs95p0t1z23PH0jojPsYzOQiGjwTluoGsiakW1jqVdfH2/wYzXqKgWjny4QD06nWUhduKj6EQFCUimuzvGpT1CGDu5+jw6gYAMwXjw1RCz5vkXKNyWVXlx2lRrjc/L05yCEy1lf8mIt1xL9m7M0nGkKy0kHiwRQsGdinhoWAH5iDYu4dzKjDcGbJfpMg9ZlYZskxaLf2eGo1Xz5kq88q7+UuaGSTRJdqn6/7B0rjepdxT9wLfiBgsytUV16/m3Rl/sGPkEAxlFzjU4uzzeiRVq5BIyP7yGmYoLl0Mp5MnDSVan1kA26QfVQ4hUIwcywwcqmY03a9wVGvWvW2nnVOeXxLQopvIbjTYp3leumTY2Yv34/1AmsQPGfgkfxbzAvf7rl6xjxNOA1PI20BeP3uB24Y+uE34r7hAeNcD9eWVFmlAry6ejDMoTsu4knbG32Idm2X7atwNROzqj6QZ8fwEntcImXj00hzi8KuwOrlTAzdq0nvH49G47ZmYALilI8b62ScjgwfTHFY3EvmONYnx2c9EH9az2p7cFk18prOfkPu6Hi7InSvHebW6MS6w+NnSdZUXFTlEzMTSIBYUWa+Zsu3js/UPorCBxD2GoyYHjxBsXrA658BWdCxUb5cuvm/fD3k2u7bLsnuNkfQPr0qrlO85RDlZo09LeUYwqPFNMt9XXQKwaz2QVpEy72V8NubChkl92A8FpvXuuNIMKp1y7dHxEn4Tt3ojmKAHB4xQqLiMJE8mDxqG0nUQMe94OsQDRZ7mZyQo0YmOxMK8YQF5o4ixPHEPrux1emk30MKCGY+d3anNuY7r5GfggMfD5idEOYHghcvnmBY/8TB3htNwhtCIV+CvTk/QuAnH55kjiN/M3yPL/V50oMGcBmHICcLjLENKsEEcOQ9WhrT7b9wXXjK4//5A99KRmSzp95mvSF01wNQgm1958b+/Sek5BEwAnQsqC6BVZ8ybKKgwvCmdn/9wZAOze2zhK84oqKzKqz+LNpYI7mQYWoh/ek7bE00B6IMFMxm5ZTSUP8pCJToMHo2F3CVL8zsq6KFIf5G/bVBkuVox0P8Xw6D6jc7WrEHVkvUF0zgfr2ELEiQb5uXRrqXwfulhNQ3FNpwcGlM7yPFdJhIu84YqLouARz9SSdJ0gAzJCIuRVQ3UPNOfrOR8AUbCfjtkUZKK6An+F7UX8oGoC48TXUgcyU4W6pmWB6xbxxCG5dattz4Pgi4xaMgNlZ3twkJ0T9ZlOfT8uAi/p/7h7rI5VVE956er9r66pJOuDC2rxX5y/jF1tL/z+3Hq6pMHijh84W8GFb8cf+qdBojbvoWwxYd7d1iytTVs5t5Yu+A+jTgGqKU3mqmMaRqnIByLDFW5giuJDhsbp4oifQbxXdibleQDldazNxfcb6AnpfmWf7dsZDdLOZmUHQsXAmKqUp1GDVGipjuZfe02Xr/WmSQE0Z8F578dpXHM4t+3PAd7us29TKeive69cj41aQ35a4x5xo+zJk6ZR/tkNPPL2/u+oEngVURSVvW2YP1BmI8uysVg/Sx+ISVYaWK7LSR8Z/4viRQWQ8RrHaqirrk556jTq887nbZuAR2/SoJq2M1L0BrGjjkuA/YeXmjTY/JcK/Kht1/kDupfvYHvViz6E8DiAWSTil4wUhyBqQhOXxXi9SLBSgh102la1nrO4wjyB3ouAIUtrByftqgvZl6yvr4ak4xX1JdKRgkC8fee7N6g+7Gc/Pnr+Fwfh0L9lu+jqR/PYEA2oA91vlQPW8L6DZi+tHf8fNkslsUw7Lmum6ZHtWW+jvxy+i4zwli+Vu3k5QQWaesiOijpwC45RBoYti7HMEfMbXn/H1a1l/xtf90ZkBS9uG5MZgocEjbNlRUX6miiIurYCf5GIFMUILWDeKdEfcgTyMAtgl1Hchhkw9itiFVuIyF2UdvBUF7HxML/+8/xaG27C6WO7tr5h0STm6bbS81vFKuU7VT9RgAGkXhLa1ezFayPcIgC+i0WAF8nNI9ZX1j7RKdGHQEb68eOHptU+dm17o2cCFl+D6QyUcMVpex863vc++d3NqP/39wrq8PP9bFY04tNmxwjcMQCfRL6qpMNMQ/HBVtmoJUC0we24ZnPIkiFHErVmSX8zfvEW7Z1We1oa6XewjtcdgC+uL/LOopmBFj315eiGzULLtWvZgCSXhcaaTN95Vekq8om+iM7LfzSQA5eJIFT1q3L/zJOQqTp1+9X05CT91cXLemNONdwqgqp4BHXlSw+uK74483nhxPJXwRKr4bc1n/55QYKfjOLrXwU31pSqx08/Er9T0bSyPP3mKVWrEq9ZqbuH3cti5oV5n9uOMSJeeymvH6DrGh//4Q4wcAR2j+ZR6+c1Z7q9O3eIKOpSgpEu/JUCJd7oEEHBWo4z36PCFSr6OVaRW2b6Jf8s6jgnzghKWdQlgwHky3O/GqMshOz3AurJeXmjkfi9Ci9PDgMagNovxDu3EPLSu+jXbSlqCRv5U09lcIdtKMcf3x9P7p64Y/1KjaLI8ZXmT5Zq6M30X/1KTu7HmkqcagnCerSvGrf+lOiBG5StyAUF8hHD6j+gV46NswH+Ia0K8A3/1vzyegBHfOMfcoEYOoJ0YYInCXe9r9kV9tZc9H3bvJgrjPQWJR7gPxyzFUdFYfLGIU4+Zhp+VfZMRbanS+a/eiRX2xhZwvWp+24lnWuZydXjioYSAqZCIhEaWqpxy3sepE+mtMSoZY3Nnbh/xvE6M2QQlPBFNg+dV+xLz2/pp0nnVMzUayfAPekkDBNDkWm6Nt5++Rt4+EHsfQILw3dW390qyy5FpgXIYNTOneHE+d9J+YLYnRRuCYIH0L5PP3sXJsl7MPu7w94vsQy6epbrTgidaJpnvj2OxTw6ZsVoIe8J3/qbNoW/Fkz2lotiT+baR5OHmluvH3YwPqiOKbGq94phkEdoyBtRAJoA/1Wp9534Ox56vqb7QnWmknxbFOrNRIcV7/HqAJQUpzyFH6LO6dKu6KSHwE0m8YfXwidZxgKp5rD6Mb66Lh1PXz0xZ47NzftBqKg0/Dcb7AJvu2f/AV7CkWPPAWX14rPiYP5Bh1/ryqVKN07xqFXGVJIuEDtMGz9DtMU5BgNahpB5TD5Z9M/vPCYW1vGN2b/cBMKrGVf+gp/u9nk9Y4hRxMF18iZpG05oz4TsHX4psYDy2rjSZR857hzFrR2VNTa6+wq6SzulSjHa3noQGQne9xHMlpmKhEQcBdIUsRAcmGC8vSEpM1ZjEXYmnp3jWBG4/Ghe4VJjYuxH6344nnFnT9midsCN8xgxESC1x2yB6Mi/Lw+IWUmDTQvK4PCY280BUBYREFXgydMTEUsAeW1UWzMLSutQo7EuuKokYIijcgEk+w322B11QPNdsI6GbKueCneic77NY/HwxlWbj7/nnYiYKjKUTKBmtBi7ws3hAuRIZ18/L4oVsbZnczZ9FcbOkiNolgHGNC44Ojgp+bhP/YXuKA5As6KZ9yRpviXZzr3XbsxR6uAxXh7jDZaBbpii0NNetxTbhNK2xx5JGgQkWXMeAlXa0Xf9PRIYtsaTyh5F4Iy7Hn2n6CDfbg19UDne3DdytglcmFKS/vKOpWLMYfqbKyMRfszSBnCgIpJoRqtAngSE1jV3MTCsAcz3hQs3cozb+YPpcST0sgh7zj8O+SxT7j9/oI4ezNJWw3eEn2GALDw3DyCsy3lS3Jzy8lkLvqYsxEn2niP0z9HK+bsvETqtmlzBYjvst/ayEPzFMCY6Cbd8jzMKAZafHiI6sh8tbBQcpz83TvHzx2rHU5ICEAcBDXctnJHArUy/oZ9+eLW5jPtVMuKB33QQ=","base64")).toString()),yR)});var y_=E((wR,I_)=>{(function(t,e){typeof wR=="object"?I_.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(wR,function(){function t(n,s){var o=s?"\u2514":"\u251C";return n?o+="\u2500 ":o+="\u2500\u2500\u2510",o}function e(n,s){var o=[];for(var a in n)!n.hasOwnProperty(a)||s&&typeof n[a]=="function"||o.push(a);return o}function r(n,s,o,a,l,c,u){var g="",f=0,h,p,d=a.slice(0);if(d.push([s,o])&&a.length>0&&(a.forEach(function(I,B){B>0&&(g+=(I[1]?" ":"\u2502")+" "),!p&&I[0]===s&&(p=!0)}),g+=t(n,o)+n,l&&(typeof s!="object"||s instanceof Date)&&(g+=": "+s),p&&(g+=" (circular ref.)"),u(g)),!p&&typeof s=="object"){var m=e(s,c);m.forEach(function(I){h=++f===m.length,r(I,s[I],h,d,l,c,u)})}}var i={};return i.asLines=function(n,s,o,a){var l=typeof o!="function"?o:!1;r(".",n,!1,[],s,l,a||o)},i.asTree=function(n,s,o){var a="";return r(".",n,!1,[],s,o,function(l){a+=l+` -`}),a},i})});var x_=E((Uct,bR)=>{"use strict";var pTe=t=>{let e=!1,r=!1,i=!1;for(let n=0;n{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(t)?t=t.map(n=>n.trim()).filter(n=>n.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=pTe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),r(t))};bR.exports=S_;bR.exports.default=S_});var Na=E(TR=>{"use strict";Object.defineProperty(TR,"__esModule",{value:!0});TR.default=L_;function L_(){}L_.prototype={diff:function(e,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=i.callback;typeof i=="function"&&(n=i,i={}),this.options=i;var s=this;function o(d){return n?(setTimeout(function(){n(void 0,d)},0),!0):d}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var a=r.length,l=e.length,c=1,u=a+l,g=[{newPos:-1,components:[]}],f=this.extractCommon(g[0],r,e,0);if(g[0].newPos+1>=a&&f+1>=l)return o([{value:this.join(r),count:r.length}]);function h(){for(var d=-1*c;d<=c;d+=2){var m=void 0,I=g[d-1],B=g[d+1],b=(B?B.newPos:0)-d;I&&(g[d-1]=void 0);var R=I&&I.newPos+1=a&&b+1>=l)return o(yTe(s,m.components,r,e,s.useLongestToken));g[d]=m}c++}if(n)(function d(){setTimeout(function(){if(c>u)return n();h()||d()},0)})();else for(;c<=u;){var p=h();if(p)return p}},pushComponent:function(e,r,i){var n=e[e.length-1];n&&n.added===r&&n.removed===i?e[e.length-1]={count:n.count+1,added:r,removed:i}:e.push({count:1,added:r,removed:i})},extractCommon:function(e,r,i,n){for(var s=r.length,o=i.length,a=e.newPos,l=a-n,c=0;a+1h.length?d:h}),c.value=t.join(u)}else c.value=t.join(r.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=e[o-1];return o>1&&typeof f.value=="string"&&(f.added||f.removed)&&t.equals("",f.value)&&(e[o-2].value+=f.value,e.pop()),e}function wTe(t){return{newPos:t.newPos,components:t.components.slice(0)}}});var M_=E(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});Cd.diffChars=BTe;Cd.characterDiff=void 0;var bTe=QTe(Na());function QTe(t){return t&&t.__esModule?t:{default:t}}var T_=new bTe.default;Cd.characterDiff=T_;function BTe(t,e,r){return T_.diff(t,e,r)}});var OR=E(MR=>{"use strict";Object.defineProperty(MR,"__esModule",{value:!0});MR.generateOptions=vTe;function vTe(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}});var U_=E(Ng=>{"use strict";Object.defineProperty(Ng,"__esModule",{value:!0});Ng.diffWords=STe;Ng.diffWordsWithSpace=xTe;Ng.wordDiff=void 0;var PTe=kTe(Na()),DTe=OR();function kTe(t){return t&&t.__esModule?t:{default:t}}var O_=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,K_=/\S/,md=new PTe.default;Ng.wordDiff=md;md.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!K_.test(t)&&!K_.test(e)};md.tokenize=function(t){for(var e=t.split(/(\s+|[()[\]{}'"]|\b)/),r=0;r{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});Lg.diffLines=RTe;Lg.diffTrimmedLines=FTe;Lg.lineDiff=void 0;var LTe=NTe(Na()),TTe=OR();function NTe(t){return t&&t.__esModule?t:{default:t}}var OB=new LTe.default;Lg.lineDiff=OB;OB.tokenize=function(t){var e=[],r=t.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(var i=0;i{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});Ed.diffSentences=MTe;Ed.sentenceDiff=void 0;var KTe=OTe(Na());function OTe(t){return t&&t.__esModule?t:{default:t}}var KR=new KTe.default;Ed.sentenceDiff=KR;KR.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};function MTe(t,e,r){return KR.diff(t,e,r)}});var G_=E(Id=>{"use strict";Object.defineProperty(Id,"__esModule",{value:!0});Id.diffCss=UTe;Id.cssDiff=void 0;var GTe=HTe(Na());function HTe(t){return t&&t.__esModule?t:{default:t}}var UR=new GTe.default;Id.cssDiff=UR;UR.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};function UTe(t,e,r){return UR.diff(t,e,r)}});var Y_=E(Tg=>{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});Tg.diffJson=jTe;Tg.canonicalize=UB;Tg.jsonDiff=void 0;var j_=YTe(Na()),qTe=KB();function YTe(t){return t&&t.__esModule?t:{default:t}}function HB(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?HB=function(r){return typeof r}:HB=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},HB(t)}var JTe=Object.prototype.toString,bc=new j_.default;Tg.jsonDiff=bc;bc.useLongestToken=!0;bc.tokenize=qTe.lineDiff.tokenize;bc.castInput=function(t){var e=this.options,r=e.undefinedReplacement,i=e.stringifyReplacer,n=i===void 0?function(s,o){return typeof o=="undefined"?r:o}:i;return typeof t=="string"?t:JSON.stringify(UB(t,null,null,n),n," ")};bc.equals=function(t,e){return j_.default.prototype.equals.call(bc,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function jTe(t,e,r){return bc.diff(t,e,r)}function UB(t,e,r,i,n){e=e||[],r=r||[],i&&(t=i(n,t));var s;for(s=0;s{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});yd.diffArrays=WTe;yd.arrayDiff=void 0;var VTe=zTe(Na());function zTe(t){return t&&t.__esModule?t:{default:t}}var wd=new VTe.default;yd.arrayDiff=wd;wd.tokenize=function(t){return t.slice()};wd.join=wd.removeEmpty=function(t){return t};function WTe(t,e,r){return wd.diff(t,e,r)}});var GB=E(HR=>{"use strict";Object.defineProperty(HR,"__esModule",{value:!0});HR.parsePatch=_Te;function _Te(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.split(/\r\n|[\n\v\f\r\x85]/),i=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],n=[],s=0;function o(){var c={};for(n.push(c);s{"use strict";Object.defineProperty(GR,"__esModule",{value:!0});GR.default=XTe;function XTe(t,e,r){var i=!0,n=!1,s=!1,o=1;return function a(){if(i&&!s){if(n?o++:i=!1,t+o<=r)return o;s=!0}if(!n)return s||(i=!0),e<=t-o?-o++:(n=!0,a())}}});var V_=E(jB=>{"use strict";Object.defineProperty(jB,"__esModule",{value:!0});jB.applyPatch=W_;jB.applyPatches=ZTe;var z_=GB(),eMe=$Te(J_());function $Te(t){return t&&t.__esModule?t:{default:t}}function W_(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string"&&(e=(0,z_.parsePatch)(e)),Array.isArray(e)){if(e.length>1)throw new Error("applyPatch only works with a single input.");e=e[0]}var i=t.split(/\r\n|[\n\v\f\r\x85]/),n=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],s=e.hunks,o=r.compareLine||function(F,D,he,pe){return D===pe},a=0,l=r.fuzzFactor||0,c=0,u=0,g,f;function h(F,D){for(var he=0;he0?pe[0]:" ",Pe=pe.length>0?pe.substr(1):pe;if(Ne===" "||Ne==="-"){if(!o(D+1,i[D],Ne,Pe)&&(a++,a>l))return!1;D++}}return!0}for(var p=0;p0?ne[0]:" ",A=ne.length>0?ne.substr(1):ne,V=L.linedelimiters[J];if(q===" ")K++;else if(q==="-")i.splice(K,1),n.splice(K,1);else if(q==="+")i.splice(K,0,A),n.splice(K,0,V),K++;else if(q==="\\"){var W=L.lines[J-1]?L.lines[J-1][0]:null;W==="+"?g=!0:W==="-"&&(f=!0)}}}if(g)for(;!i[i.length-1];)i.pop(),n.pop();else f&&(i.push(""),n.push(` -`));for(var X=0;X{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.structuredPatch=__;Bd.createTwoFilesPatch=X_;Bd.createPatch=tMe;var rMe=KB();function jR(t){return sMe(t)||nMe(t)||iMe()}function iMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function nMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function sMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e0?l(L.lines.slice(-o.context)):[],u-=f.length,g-=f.length)}(H=f).push.apply(H,jR(R.map(function(X){return(b.added?"+":"-")+X}))),b.added?p+=R.length:h+=R.length}else{if(u)if(R.length<=o.context*2&&B=a.length-2&&R.length<=o.context){var A=/\n$/.test(r),V=/\n$/.test(i),W=R.length==0&&f.length>q.oldLines;!A&&W&&f.splice(q.oldLines,0,"\\ No newline at end of file"),(!A&&!W||!V)&&f.push("\\ No newline at end of file")}c.push(q),u=0,g=0,f=[]}h+=R.length,p+=R.length}},m=0;m{"use strict";Object.defineProperty(YB,"__esModule",{value:!0});YB.arrayEqual=oMe;YB.arrayStartsWith=Z_;function oMe(t,e){return t.length!==e.length?!1:Z_(t,e)}function Z_(t,e){if(e.length>t.length)return!1;for(var r=0;r{"use strict";Object.defineProperty(qB,"__esModule",{value:!0});qB.calcLineCount=eX;qB.merge=aMe;var AMe=YR(),lMe=GB(),qR=$_();function Mg(t){return gMe(t)||uMe(t)||cMe()}function cMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function uMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function gMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e{"use strict";Object.defineProperty(zR,"__esModule",{value:!0});zR.convertChangesToDMP=dMe;function dMe(t){for(var e=[],r,i,n=0;n{"use strict";Object.defineProperty(VR,"__esModule",{value:!0});VR.convertChangesToXML=CMe;function CMe(t){for(var e=[],r=0;r"):i.removed&&e.push(""),e.push(mMe(i.value)),i.added?e.push(""):i.removed&&e.push("")}return e.join("")}function mMe(t){var e=t;return e=e.replace(/&/g,"&"),e=e.replace(//g,">"),e=e.replace(/"/g,"""),e}});var CX=E(br=>{"use strict";Object.defineProperty(br,"__esModule",{value:!0});Object.defineProperty(br,"Diff",{enumerable:!0,get:function(){return EMe.default}});Object.defineProperty(br,"diffChars",{enumerable:!0,get:function(){return IMe.diffChars}});Object.defineProperty(br,"diffWords",{enumerable:!0,get:function(){return fX.diffWords}});Object.defineProperty(br,"diffWordsWithSpace",{enumerable:!0,get:function(){return fX.diffWordsWithSpace}});Object.defineProperty(br,"diffLines",{enumerable:!0,get:function(){return hX.diffLines}});Object.defineProperty(br,"diffTrimmedLines",{enumerable:!0,get:function(){return hX.diffTrimmedLines}});Object.defineProperty(br,"diffSentences",{enumerable:!0,get:function(){return yMe.diffSentences}});Object.defineProperty(br,"diffCss",{enumerable:!0,get:function(){return wMe.diffCss}});Object.defineProperty(br,"diffJson",{enumerable:!0,get:function(){return pX.diffJson}});Object.defineProperty(br,"canonicalize",{enumerable:!0,get:function(){return pX.canonicalize}});Object.defineProperty(br,"diffArrays",{enumerable:!0,get:function(){return BMe.diffArrays}});Object.defineProperty(br,"applyPatch",{enumerable:!0,get:function(){return dX.applyPatch}});Object.defineProperty(br,"applyPatches",{enumerable:!0,get:function(){return dX.applyPatches}});Object.defineProperty(br,"parsePatch",{enumerable:!0,get:function(){return QMe.parsePatch}});Object.defineProperty(br,"merge",{enumerable:!0,get:function(){return bMe.merge}});Object.defineProperty(br,"structuredPatch",{enumerable:!0,get:function(){return _R.structuredPatch}});Object.defineProperty(br,"createTwoFilesPatch",{enumerable:!0,get:function(){return _R.createTwoFilesPatch}});Object.defineProperty(br,"createPatch",{enumerable:!0,get:function(){return _R.createPatch}});Object.defineProperty(br,"convertChangesToDMP",{enumerable:!0,get:function(){return vMe.convertChangesToDMP}});Object.defineProperty(br,"convertChangesToXML",{enumerable:!0,get:function(){return SMe.convertChangesToXML}});var EMe=xMe(Na()),IMe=M_(),fX=U_(),hX=KB(),yMe=H_(),wMe=G_(),pX=Y_(),BMe=q_(),dX=V_(),QMe=GB(),bMe=cX(),_R=YR(),vMe=uX(),SMe=gX();function xMe(t){return t&&t.__esModule?t:{default:t}}});var WB=E((agt,mX)=>{var kMe=As(),PMe=Nw(),DMe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,RMe=/^\w*$/;function FMe(t,e){if(kMe(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||PMe(t)?!0:RMe.test(t)||!DMe.test(t)||e!=null&&t in Object(e)}mX.exports=FMe});var Gs=E((Agt,EX)=>{function NMe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}EX.exports=NMe});var zB=E((lgt,IX)=>{var LMe=Ac(),TMe=Gs(),MMe="[object AsyncFunction]",OMe="[object Function]",KMe="[object GeneratorFunction]",UMe="[object Proxy]";function HMe(t){if(!TMe(t))return!1;var e=LMe(t);return e==OMe||e==KMe||e==MMe||e==UMe}IX.exports=HMe});var wX=E((cgt,yX)=>{var GMe=Ks(),jMe=GMe["__core-js_shared__"];yX.exports=jMe});var bX=E((ugt,BX)=>{var XR=wX(),QX=function(){var t=/[^.]+$/.exec(XR&&XR.keys&&XR.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function YMe(t){return!!QX&&QX in t}BX.exports=YMe});var ZR=E((ggt,vX)=>{var qMe=Function.prototype,JMe=qMe.toString;function WMe(t){if(t!=null){try{return JMe.call(t)}catch(e){}try{return t+""}catch(e){}}return""}vX.exports=WMe});var xX=E((fgt,SX)=>{var zMe=zB(),VMe=bX(),_Me=Gs(),XMe=ZR(),ZMe=/[\\^$.*+?()[\]{}|]/g,$Me=/^\[object .+?Constructor\]$/,eOe=Function.prototype,tOe=Object.prototype,rOe=eOe.toString,iOe=tOe.hasOwnProperty,nOe=RegExp("^"+rOe.call(iOe).replace(ZMe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function sOe(t){if(!_Me(t)||VMe(t))return!1;var e=zMe(t)?nOe:$Me;return e.test(XMe(t))}SX.exports=sOe});var PX=E((hgt,kX)=>{function oOe(t,e){return t==null?void 0:t[e]}kX.exports=oOe});var UA=E((pgt,DX)=>{var aOe=xX(),AOe=PX();function lOe(t,e){var r=AOe(t,e);return aOe(r)?r:void 0}DX.exports=lOe});var Qd=E((dgt,RX)=>{var cOe=UA(),uOe=cOe(Object,"create");RX.exports=uOe});var LX=E((Cgt,FX)=>{var NX=Qd();function gOe(){this.__data__=NX?NX(null):{},this.size=0}FX.exports=gOe});var MX=E((mgt,TX)=>{function fOe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}TX.exports=fOe});var KX=E((Egt,OX)=>{var hOe=Qd(),pOe="__lodash_hash_undefined__",dOe=Object.prototype,COe=dOe.hasOwnProperty;function mOe(t){var e=this.__data__;if(hOe){var r=e[t];return r===pOe?void 0:r}return COe.call(e,t)?e[t]:void 0}OX.exports=mOe});var HX=E((Igt,UX)=>{var EOe=Qd(),IOe=Object.prototype,yOe=IOe.hasOwnProperty;function wOe(t){var e=this.__data__;return EOe?e[t]!==void 0:yOe.call(e,t)}UX.exports=wOe});var jX=E((ygt,GX)=>{var BOe=Qd(),QOe="__lodash_hash_undefined__";function bOe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=BOe&&e===void 0?QOe:e,this}GX.exports=bOe});var qX=E((wgt,YX)=>{var vOe=LX(),SOe=MX(),xOe=KX(),kOe=HX(),POe=jX();function Og(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{function DOe(){this.__data__=[],this.size=0}JX.exports=DOe});var Kg=E((Qgt,zX)=>{function ROe(t,e){return t===e||t!==t&&e!==e}zX.exports=ROe});var bd=E((bgt,VX)=>{var FOe=Kg();function NOe(t,e){for(var r=t.length;r--;)if(FOe(t[r][0],e))return r;return-1}VX.exports=NOe});var XX=E((vgt,_X)=>{var LOe=bd(),TOe=Array.prototype,MOe=TOe.splice;function OOe(t){var e=this.__data__,r=LOe(e,t);if(r<0)return!1;var i=e.length-1;return r==i?e.pop():MOe.call(e,r,1),--this.size,!0}_X.exports=OOe});var $X=E((Sgt,ZX)=>{var KOe=bd();function UOe(t){var e=this.__data__,r=KOe(e,t);return r<0?void 0:e[r][1]}ZX.exports=UOe});var tZ=E((xgt,eZ)=>{var HOe=bd();function GOe(t){return HOe(this.__data__,t)>-1}eZ.exports=GOe});var iZ=E((kgt,rZ)=>{var jOe=bd();function YOe(t,e){var r=this.__data__,i=jOe(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}rZ.exports=YOe});var vd=E((Pgt,nZ)=>{var qOe=WX(),JOe=XX(),WOe=$X(),zOe=tZ(),VOe=iZ();function Ug(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var _Oe=UA(),XOe=Ks(),ZOe=_Oe(XOe,"Map");sZ.exports=ZOe});var AZ=E((Rgt,oZ)=>{var aZ=qX(),$Oe=vd(),eKe=VB();function tKe(){this.size=0,this.__data__={hash:new aZ,map:new(eKe||$Oe),string:new aZ}}oZ.exports=tKe});var cZ=E((Fgt,lZ)=>{function rKe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}lZ.exports=rKe});var Sd=E((Ngt,uZ)=>{var iKe=cZ();function nKe(t,e){var r=t.__data__;return iKe(e)?r[typeof e=="string"?"string":"hash"]:r.map}uZ.exports=nKe});var fZ=E((Lgt,gZ)=>{var sKe=Sd();function oKe(t){var e=sKe(this,t).delete(t);return this.size-=e?1:0,e}gZ.exports=oKe});var pZ=E((Tgt,hZ)=>{var aKe=Sd();function AKe(t){return aKe(this,t).get(t)}hZ.exports=AKe});var CZ=E((Mgt,dZ)=>{var lKe=Sd();function cKe(t){return lKe(this,t).has(t)}dZ.exports=cKe});var EZ=E((Ogt,mZ)=>{var uKe=Sd();function gKe(t,e){var r=uKe(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}mZ.exports=gKe});var _B=E((Kgt,IZ)=>{var fKe=AZ(),hKe=fZ(),pKe=pZ(),dKe=CZ(),CKe=EZ();function Hg(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var wZ=_B(),mKe="Expected a function";function $R(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(mKe);var r=function(){var i=arguments,n=e?e.apply(this,i):i[0],s=r.cache;if(s.has(n))return s.get(n);var o=t.apply(this,i);return r.cache=s.set(n,o)||s,o};return r.cache=new($R.Cache||wZ),r}$R.Cache=wZ;yZ.exports=$R});var bZ=E((Hgt,QZ)=>{var EKe=BZ(),IKe=500;function yKe(t){var e=EKe(t,function(i){return r.size===IKe&&r.clear(),i}),r=e.cache;return e}QZ.exports=yKe});var SZ=E((Ggt,vZ)=>{var wKe=bZ(),BKe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,QKe=/\\(\\)?/g,bKe=wKe(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(BKe,function(r,i,n,s){e.push(n?s.replace(QKe,"$1"):i||r)}),e});vZ.exports=bKe});var Gg=E((jgt,xZ)=>{var vKe=As(),SKe=WB(),xKe=SZ(),kKe=gg();function PKe(t,e){return vKe(t)?t:SKe(t,e)?[t]:xKe(kKe(t))}xZ.exports=PKe});var Sc=E((Ygt,kZ)=>{var DKe=Nw(),RKe=1/0;function FKe(t){if(typeof t=="string"||DKe(t))return t;var e=t+"";return e=="0"&&1/t==-RKe?"-0":e}kZ.exports=FKe});var xd=E((qgt,PZ)=>{var NKe=Gg(),LKe=Sc();function TKe(t,e){e=NKe(e,t);for(var r=0,i=e.length;t!=null&&r{var MKe=UA(),OKe=function(){try{var t=MKe(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();DZ.exports=OKe});var jg=E((Wgt,RZ)=>{var FZ=eF();function KKe(t,e,r){e=="__proto__"&&FZ?FZ(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}RZ.exports=KKe});var XB=E((zgt,NZ)=>{var UKe=jg(),HKe=Kg(),GKe=Object.prototype,jKe=GKe.hasOwnProperty;function YKe(t,e,r){var i=t[e];(!(jKe.call(t,e)&&HKe(i,r))||r===void 0&&!(e in t))&&UKe(t,e,r)}NZ.exports=YKe});var kd=E((Vgt,LZ)=>{var qKe=9007199254740991,JKe=/^(?:0|[1-9]\d*)$/;function WKe(t,e){var r=typeof t;return e=e==null?qKe:e,!!e&&(r=="number"||r!="symbol"&&JKe.test(t))&&t>-1&&t%1==0&&t{var zKe=XB(),VKe=Gg(),_Ke=kd(),MZ=Gs(),XKe=Sc();function ZKe(t,e,r,i){if(!MZ(t))return t;e=VKe(e,t);for(var n=-1,s=e.length,o=s-1,a=t;a!=null&&++n{var $Ke=xd(),e1e=tF(),t1e=Gg();function r1e(t,e,r){for(var i=-1,n=e.length,s={};++i{function i1e(t,e){return t!=null&&e in Object(t)}UZ.exports=i1e});var jZ=E(($gt,GZ)=>{var n1e=Ac(),s1e=Qo(),o1e="[object Arguments]";function a1e(t){return s1e(t)&&n1e(t)==o1e}GZ.exports=a1e});var Pd=E((eft,YZ)=>{var qZ=jZ(),A1e=Qo(),JZ=Object.prototype,l1e=JZ.hasOwnProperty,c1e=JZ.propertyIsEnumerable,u1e=qZ(function(){return arguments}())?qZ:function(t){return A1e(t)&&l1e.call(t,"callee")&&!c1e.call(t,"callee")};YZ.exports=u1e});var ZB=E((tft,WZ)=>{var g1e=9007199254740991;function f1e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=g1e}WZ.exports=f1e});var rF=E((rft,zZ)=>{var h1e=Gg(),p1e=Pd(),d1e=As(),C1e=kd(),m1e=ZB(),E1e=Sc();function I1e(t,e,r){e=h1e(e,t);for(var i=-1,n=e.length,s=!1;++i{var y1e=HZ(),w1e=rF();function B1e(t,e){return t!=null&&w1e(t,e,y1e)}VZ.exports=B1e});var XZ=E((nft,_Z)=>{var Q1e=KZ(),b1e=iF();function v1e(t,e){return Q1e(t,e,function(r,i){return b1e(t,i)})}_Z.exports=v1e});var $B=E((sft,ZZ)=>{function S1e(t,e){for(var r=-1,i=e.length,n=t.length;++r{var e$=ac(),x1e=Pd(),k1e=As(),t$=e$?e$.isConcatSpreadable:void 0;function P1e(t){return k1e(t)||x1e(t)||!!(t$&&t&&t[t$])}$Z.exports=P1e});var s$=E((aft,i$)=>{var D1e=$B(),R1e=r$();function n$(t,e,r,i,n){var s=-1,o=t.length;for(r||(r=R1e),n||(n=[]);++s0&&r(a)?e>1?n$(a,e-1,r,i,n):D1e(n,a):i||(n[n.length]=a)}return n}i$.exports=n$});var a$=E((Aft,o$)=>{var F1e=s$();function N1e(t){var e=t==null?0:t.length;return e?F1e(t,1):[]}o$.exports=N1e});var l$=E((lft,A$)=>{function L1e(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}A$.exports=L1e});var nF=E((cft,c$)=>{var T1e=l$(),u$=Math.max;function M1e(t,e,r){return e=u$(e===void 0?t.length-1:e,0),function(){for(var i=arguments,n=-1,s=u$(i.length-e,0),o=Array(s);++n{function O1e(t){return function(){return t}}g$.exports=O1e});var e0=E((gft,h$)=>{function K1e(t){return t}h$.exports=K1e});var C$=E((fft,p$)=>{var U1e=f$(),d$=eF(),H1e=e0(),G1e=d$?function(t,e){return d$(t,"toString",{configurable:!0,enumerable:!1,value:U1e(e),writable:!0})}:H1e;p$.exports=G1e});var E$=E((hft,m$)=>{var j1e=800,Y1e=16,q1e=Date.now;function J1e(t){var e=0,r=0;return function(){var i=q1e(),n=Y1e-(i-r);if(r=i,n>0){if(++e>=j1e)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}m$.exports=J1e});var sF=E((pft,I$)=>{var W1e=C$(),z1e=E$(),V1e=z1e(W1e);I$.exports=V1e});var w$=E((dft,y$)=>{var _1e=a$(),X1e=nF(),Z1e=sF();function $1e(t){return Z1e(X1e(t,void 0,_1e),t+"")}y$.exports=$1e});var Q$=E((Cft,B$)=>{var eUe=XZ(),tUe=w$(),rUe=tUe(function(t,e){return t==null?{}:eUe(t,e)});B$.exports=rUe});var M$=E((lpt,N$)=>{"use strict";var pF;try{pF=Map}catch(t){}var dF;try{dF=Set}catch(t){}function L$(t,e,r){if(!t||typeof t!="object"||typeof t=="function")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t);if(Array.isArray(t))return t.map(T$);if(pF&&t instanceof pF)return new Map(Array.from(t.entries()));if(dF&&t instanceof dF)return new Set(Array.from(t.values()));if(t instanceof Object){e.push(t);var i=Object.create(t);r.push(i);for(var n in t){var s=e.findIndex(function(o){return o===t[n]});i[n]=s>-1?r[s]:L$(t[n],e,r)}return i}return t}function T$(t){return L$(t,[],[])}N$.exports=T$});var Nd=E(CF=>{"use strict";Object.defineProperty(CF,"__esModule",{value:!0});CF.default=uUe;var gUe=Object.prototype.toString,fUe=Error.prototype.toString,hUe=RegExp.prototype.toString,pUe=typeof Symbol!="undefined"?Symbol.prototype.toString:()=>"",dUe=/^Symbol\((.*)\)(.*)$/;function CUe(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function O$(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return CUe(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return pUe.call(t).replace(dUe,"Symbol($1)");let i=gUe.call(t).slice(8,-1);return i==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):i==="Error"||t instanceof Error?"["+fUe.call(t)+"]":i==="RegExp"?hUe.call(t):null}function uUe(t,e){let r=O$(t,e);return r!==null?r:JSON.stringify(t,function(i,n){let s=O$(this[i],e);return s!==null?s:n},2)}});var La=E(ci=>{"use strict";Object.defineProperty(ci,"__esModule",{value:!0});ci.default=ci.array=ci.object=ci.boolean=ci.date=ci.number=ci.string=ci.mixed=void 0;var K$=mUe(Nd());function mUe(t){return t&&t.__esModule?t:{default:t}}var U$={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:r,originalValue:i})=>{let n=i!=null&&i!==r,s=`${t} must be a \`${e}\` type, but the final value was: \`${(0,K$.default)(r,!0)}\``+(n?` (cast from the value \`${(0,K$.default)(i,!0)}\`).`:".");return r===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};ci.mixed=U$;var H$={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};ci.string=H$;var G$={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};ci.number=G$;var j$={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};ci.date=j$;var Y$={isValue:"${path} field must be ${value}"};ci.boolean=Y$;var q$={noUnknown:"${path} field has unspecified keys: ${unknown}"};ci.object=q$;var J$={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};ci.array=J$;var EUe=Object.assign(Object.create(null),{mixed:U$,string:H$,number:G$,date:j$,object:q$,array:J$,boolean:Y$});ci.default=EUe});var z$=E((gpt,W$)=>{var IUe=Object.prototype,yUe=IUe.hasOwnProperty;function wUe(t,e){return t!=null&&yUe.call(t,e)}W$.exports=wUe});var Ld=E((fpt,V$)=>{var BUe=z$(),QUe=rF();function bUe(t,e){return t!=null&&QUe(t,e,BUe)}V$.exports=bUe});var qg=E(n0=>{"use strict";Object.defineProperty(n0,"__esModule",{value:!0});n0.default=void 0;var vUe=t=>t&&t.__isYupSchema__;n0.default=vUe});var Z$=E(s0=>{"use strict";Object.defineProperty(s0,"__esModule",{value:!0});s0.default=void 0;var SUe=_$(Ld()),xUe=_$(qg());function _$(t){return t&&t.__esModule?t:{default:t}}var X$=class{constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,SUe.default)(r,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!r.then&&!r.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:i,then:n,otherwise:s}=r,o=typeof i=="function"?i:(...a)=>a.every(l=>l===i);this.fn=function(...a){let l=a.pop(),c=a.pop(),u=o(...a)?n:s;if(!!u)return typeof u=="function"?u(c):c.concat(u.resolve(l))}}resolve(e,r){let i=this.refs.map(s=>s.getValue(r==null?void 0:r.value,r==null?void 0:r.parent,r==null?void 0:r.context)),n=this.fn.apply(e,i.concat(e,r));if(n===void 0||n===e)return e;if(!(0,xUe.default)(n))throw new TypeError("conditions must return a schema object");return n.resolve(r)}},kUe=X$;s0.default=kUe});var EF=E(mF=>{"use strict";Object.defineProperty(mF,"__esModule",{value:!0});mF.default=PUe;function PUe(t){return t==null?[]:[].concat(t)}});var xc=E(o0=>{"use strict";Object.defineProperty(o0,"__esModule",{value:!0});o0.default=void 0;var DUe=$$(Nd()),RUe=$$(EF());function $$(t){return t&&t.__esModule?t:{default:t}}function IF(){return IF=Object.assign||function(t){for(var e=1;e(0,DUe.default)(r[s])):typeof e=="function"?e(r):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,r,i,n){super();this.name="ValidationError",this.value=r,this.path=i,this.type=n,this.errors=[],this.inner=[],(0,RUe.default)(e).forEach(s=>{Td.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,Td)}};o0.default=Td});var a0=E(yF=>{"use strict";Object.defineProperty(yF,"__esModule",{value:!0});yF.default=NUe;var wF=LUe(xc());function LUe(t){return t&&t.__esModule?t:{default:t}}var TUe=t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}};function NUe(t,e){let{endEarly:r,tests:i,args:n,value:s,errors:o,sort:a,path:l}=t,c=TUe(e),u=i.length,g=[];if(o=o||[],!u)return o.length?c(new wF.default(o,s,l)):c(null,s);for(let f=0;f{function MUe(t){return function(e,r,i){for(var n=-1,s=Object(e),o=i(e),a=o.length;a--;){var l=o[t?a:++n];if(r(s[l],l,s)===!1)break}return e}}eee.exports=MUe});var BF=E((Ipt,ree)=>{var OUe=tee(),KUe=OUe();ree.exports=KUe});var nee=E((ypt,iee)=>{function UUe(t,e){for(var r=-1,i=Array(t);++r{function HUe(){return!1}see.exports=HUe});var Od=E((Md,Jg)=>{var GUe=Ks(),jUe=oee(),aee=typeof Md=="object"&&Md&&!Md.nodeType&&Md,Aee=aee&&typeof Jg=="object"&&Jg&&!Jg.nodeType&&Jg,YUe=Aee&&Aee.exports===aee,lee=YUe?GUe.Buffer:void 0,qUe=lee?lee.isBuffer:void 0,JUe=qUe||jUe;Jg.exports=JUe});var uee=E((Bpt,cee)=>{var WUe=Ac(),zUe=ZB(),VUe=Qo(),_Ue="[object Arguments]",XUe="[object Array]",ZUe="[object Boolean]",$Ue="[object Date]",e2e="[object Error]",t2e="[object Function]",r2e="[object Map]",i2e="[object Number]",n2e="[object Object]",s2e="[object RegExp]",o2e="[object Set]",a2e="[object String]",A2e="[object WeakMap]",l2e="[object ArrayBuffer]",c2e="[object DataView]",u2e="[object Float32Array]",g2e="[object Float64Array]",f2e="[object Int8Array]",h2e="[object Int16Array]",p2e="[object Int32Array]",d2e="[object Uint8Array]",C2e="[object Uint8ClampedArray]",m2e="[object Uint16Array]",E2e="[object Uint32Array]",lr={};lr[u2e]=lr[g2e]=lr[f2e]=lr[h2e]=lr[p2e]=lr[d2e]=lr[C2e]=lr[m2e]=lr[E2e]=!0;lr[_Ue]=lr[XUe]=lr[l2e]=lr[ZUe]=lr[c2e]=lr[$Ue]=lr[e2e]=lr[t2e]=lr[r2e]=lr[i2e]=lr[n2e]=lr[s2e]=lr[o2e]=lr[a2e]=lr[A2e]=!1;function I2e(t){return VUe(t)&&zUe(t.length)&&!!lr[WUe(t)]}cee.exports=I2e});var A0=E((Qpt,gee)=>{function y2e(t){return function(e){return t(e)}}gee.exports=y2e});var l0=E((Kd,Wg)=>{var w2e=WP(),fee=typeof Kd=="object"&&Kd&&!Kd.nodeType&&Kd,Ud=fee&&typeof Wg=="object"&&Wg&&!Wg.nodeType&&Wg,B2e=Ud&&Ud.exports===fee,QF=B2e&&w2e.process,Q2e=function(){try{var t=Ud&&Ud.require&&Ud.require("util").types;return t||QF&&QF.binding&&QF.binding("util")}catch(e){}}();Wg.exports=Q2e});var c0=E((bpt,hee)=>{var b2e=uee(),v2e=A0(),pee=l0(),dee=pee&&pee.isTypedArray,S2e=dee?v2e(dee):b2e;hee.exports=S2e});var bF=E((vpt,Cee)=>{var x2e=nee(),k2e=Pd(),P2e=As(),D2e=Od(),R2e=kd(),F2e=c0(),N2e=Object.prototype,L2e=N2e.hasOwnProperty;function T2e(t,e){var r=P2e(t),i=!r&&k2e(t),n=!r&&!i&&D2e(t),s=!r&&!i&&!n&&F2e(t),o=r||i||n||s,a=o?x2e(t.length,String):[],l=a.length;for(var c in t)(e||L2e.call(t,c))&&!(o&&(c=="length"||n&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||R2e(c,l)))&&a.push(c);return a}Cee.exports=T2e});var u0=E((Spt,mee)=>{var M2e=Object.prototype;function O2e(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||M2e;return t===r}mee.exports=O2e});var vF=E((xpt,Eee)=>{function K2e(t,e){return function(r){return t(e(r))}}Eee.exports=K2e});var yee=E((kpt,Iee)=>{var U2e=vF(),H2e=U2e(Object.keys,Object);Iee.exports=H2e});var Bee=E((Ppt,wee)=>{var G2e=u0(),j2e=yee(),Y2e=Object.prototype,q2e=Y2e.hasOwnProperty;function J2e(t){if(!G2e(t))return j2e(t);var e=[];for(var r in Object(t))q2e.call(t,r)&&r!="constructor"&&e.push(r);return e}wee.exports=J2e});var Hd=E((Dpt,Qee)=>{var W2e=zB(),z2e=ZB();function V2e(t){return t!=null&&z2e(t.length)&&!W2e(t)}Qee.exports=V2e});var zg=E((Rpt,bee)=>{var _2e=bF(),X2e=Bee(),Z2e=Hd();function $2e(t){return Z2e(t)?_2e(t):X2e(t)}bee.exports=$2e});var SF=E((Fpt,vee)=>{var eHe=BF(),tHe=zg();function rHe(t,e){return t&&eHe(t,e,tHe)}vee.exports=rHe});var xee=E((Npt,See)=>{var iHe=vd();function nHe(){this.__data__=new iHe,this.size=0}See.exports=nHe});var Pee=E((Lpt,kee)=>{function sHe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}kee.exports=sHe});var Ree=E((Tpt,Dee)=>{function oHe(t){return this.__data__.get(t)}Dee.exports=oHe});var Nee=E((Mpt,Fee)=>{function aHe(t){return this.__data__.has(t)}Fee.exports=aHe});var Tee=E((Opt,Lee)=>{var AHe=vd(),lHe=VB(),cHe=_B(),uHe=200;function gHe(t,e){var r=this.__data__;if(r instanceof AHe){var i=r.__data__;if(!lHe||i.length{var fHe=vd(),hHe=xee(),pHe=Pee(),dHe=Ree(),CHe=Nee(),mHe=Tee();function Vg(t){var e=this.__data__=new fHe(t);this.size=e.size}Vg.prototype.clear=hHe;Vg.prototype.delete=pHe;Vg.prototype.get=dHe;Vg.prototype.has=CHe;Vg.prototype.set=mHe;Mee.exports=Vg});var Kee=E((Upt,Oee)=>{var EHe="__lodash_hash_undefined__";function IHe(t){return this.__data__.set(t,EHe),this}Oee.exports=IHe});var Hee=E((Hpt,Uee)=>{function yHe(t){return this.__data__.has(t)}Uee.exports=yHe});var jee=E((Gpt,Gee)=>{var wHe=_B(),BHe=Kee(),QHe=Hee();function g0(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new wHe;++e{function bHe(t,e){for(var r=-1,i=t==null?0:t.length;++r{function vHe(t,e){return t.has(e)}Jee.exports=vHe});var xF=E((qpt,zee)=>{var SHe=jee(),xHe=qee(),kHe=Wee(),PHe=1,DHe=2;function RHe(t,e,r,i,n,s){var o=r&PHe,a=t.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(t),u=s.get(e);if(c&&u)return c==e&&u==t;var g=-1,f=!0,h=r&DHe?new SHe:void 0;for(s.set(t,e),s.set(e,t);++g{var FHe=Ks(),NHe=FHe.Uint8Array;Vee.exports=NHe});var Xee=E((Wpt,_ee)=>{function LHe(t){var e=-1,r=Array(t.size);return t.forEach(function(i,n){r[++e]=[n,i]}),r}_ee.exports=LHe});var $ee=E((zpt,Zee)=>{function THe(t){var e=-1,r=Array(t.size);return t.forEach(function(i){r[++e]=i}),r}Zee.exports=THe});var nte=E((Vpt,ete)=>{var tte=ac(),rte=kF(),MHe=Kg(),OHe=xF(),KHe=Xee(),UHe=$ee(),HHe=1,GHe=2,jHe="[object Boolean]",YHe="[object Date]",qHe="[object Error]",JHe="[object Map]",WHe="[object Number]",zHe="[object RegExp]",VHe="[object Set]",_He="[object String]",XHe="[object Symbol]",ZHe="[object ArrayBuffer]",$He="[object DataView]",ite=tte?tte.prototype:void 0,PF=ite?ite.valueOf:void 0;function eGe(t,e,r,i,n,s,o){switch(r){case $He:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case ZHe:return!(t.byteLength!=e.byteLength||!s(new rte(t),new rte(e)));case jHe:case YHe:case WHe:return MHe(+t,+e);case qHe:return t.name==e.name&&t.message==e.message;case zHe:case _He:return t==e+"";case JHe:var a=KHe;case VHe:var l=i&HHe;if(a||(a=UHe),t.size!=e.size&&!l)return!1;var c=o.get(t);if(c)return c==e;i|=GHe,o.set(t,e);var u=OHe(a(t),a(e),i,n,s,o);return o.delete(t),u;case XHe:if(PF)return PF.call(t)==PF.call(e)}return!1}ete.exports=eGe});var DF=E((_pt,ste)=>{var tGe=$B(),rGe=As();function iGe(t,e,r){var i=e(t);return rGe(t)?i:tGe(i,r(t))}ste.exports=iGe});var ate=E((Xpt,ote)=>{function nGe(t,e){for(var r=-1,i=t==null?0:t.length,n=0,s=[];++r{function sGe(){return[]}Ate.exports=sGe});var f0=E(($pt,lte)=>{var oGe=ate(),aGe=RF(),AGe=Object.prototype,lGe=AGe.propertyIsEnumerable,cte=Object.getOwnPropertySymbols,cGe=cte?function(t){return t==null?[]:(t=Object(t),oGe(cte(t),function(e){return lGe.call(t,e)}))}:aGe;lte.exports=cGe});var FF=E((edt,ute)=>{var uGe=DF(),gGe=f0(),fGe=zg();function hGe(t){return uGe(t,fGe,gGe)}ute.exports=hGe});var hte=E((tdt,gte)=>{var fte=FF(),pGe=1,dGe=Object.prototype,CGe=dGe.hasOwnProperty;function mGe(t,e,r,i,n,s){var o=r&pGe,a=fte(t),l=a.length,c=fte(e),u=c.length;if(l!=u&&!o)return!1;for(var g=l;g--;){var f=a[g];if(!(o?f in e:CGe.call(e,f)))return!1}var h=s.get(t),p=s.get(e);if(h&&p)return h==e&&p==t;var d=!0;s.set(t,e),s.set(e,t);for(var m=o;++g{var EGe=UA(),IGe=Ks(),yGe=EGe(IGe,"DataView");pte.exports=yGe});var mte=E((idt,Cte)=>{var wGe=UA(),BGe=Ks(),QGe=wGe(BGe,"Promise");Cte.exports=QGe});var Ite=E((ndt,Ete)=>{var bGe=UA(),vGe=Ks(),SGe=bGe(vGe,"Set");Ete.exports=SGe});var wte=E((sdt,yte)=>{var xGe=UA(),kGe=Ks(),PGe=xGe(kGe,"WeakMap");yte.exports=PGe});var jd=E((odt,Bte)=>{var NF=dte(),LF=VB(),TF=mte(),MF=Ite(),OF=wte(),Qte=Ac(),_g=ZR(),bte="[object Map]",DGe="[object Object]",vte="[object Promise]",Ste="[object Set]",xte="[object WeakMap]",kte="[object DataView]",RGe=_g(NF),FGe=_g(LF),NGe=_g(TF),LGe=_g(MF),TGe=_g(OF),kc=Qte;(NF&&kc(new NF(new ArrayBuffer(1)))!=kte||LF&&kc(new LF)!=bte||TF&&kc(TF.resolve())!=vte||MF&&kc(new MF)!=Ste||OF&&kc(new OF)!=xte)&&(kc=function(t){var e=Qte(t),r=e==DGe?t.constructor:void 0,i=r?_g(r):"";if(i)switch(i){case RGe:return kte;case FGe:return bte;case NGe:return vte;case LGe:return Ste;case TGe:return xte}return e});Bte.exports=kc});var Mte=E((adt,Pte)=>{var KF=Gd(),MGe=xF(),OGe=nte(),KGe=hte(),Dte=jd(),Rte=As(),Fte=Od(),UGe=c0(),HGe=1,Nte="[object Arguments]",Lte="[object Array]",h0="[object Object]",GGe=Object.prototype,Tte=GGe.hasOwnProperty;function jGe(t,e,r,i,n,s){var o=Rte(t),a=Rte(e),l=o?Lte:Dte(t),c=a?Lte:Dte(e);l=l==Nte?h0:l,c=c==Nte?h0:c;var u=l==h0,g=c==h0,f=l==c;if(f&&Fte(t)){if(!Fte(e))return!1;o=!0,u=!1}if(f&&!u)return s||(s=new KF),o||UGe(t)?MGe(t,e,r,i,n,s):OGe(t,e,l,r,i,n,s);if(!(r&HGe)){var h=u&&Tte.call(t,"__wrapped__"),p=g&&Tte.call(e,"__wrapped__");if(h||p){var d=h?t.value():t,m=p?e.value():e;return s||(s=new KF),n(d,m,r,i,s)}}return f?(s||(s=new KF),KGe(t,e,r,i,n,s)):!1}Pte.exports=jGe});var UF=E((Adt,Ote)=>{var YGe=Mte(),Kte=Qo();function Ute(t,e,r,i,n){return t===e?!0:t==null||e==null||!Kte(t)&&!Kte(e)?t!==t&&e!==e:YGe(t,e,r,i,Ute,n)}Ote.exports=Ute});var Gte=E((ldt,Hte)=>{var qGe=Gd(),JGe=UF(),WGe=1,zGe=2;function VGe(t,e,r,i){var n=r.length,s=n,o=!i;if(t==null)return!s;for(t=Object(t);n--;){var a=r[n];if(o&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++n{var _Ge=Gs();function XGe(t){return t===t&&!_Ge(t)}jte.exports=XGe});var qte=E((udt,Yte)=>{var ZGe=HF(),$Ge=zg();function eje(t){for(var e=$Ge(t),r=e.length;r--;){var i=e[r],n=t[i];e[r]=[i,n,ZGe(n)]}return e}Yte.exports=eje});var GF=E((gdt,Jte)=>{function tje(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}Jte.exports=tje});var zte=E((fdt,Wte)=>{var rje=Gte(),ije=qte(),nje=GF();function sje(t){var e=ije(t);return e.length==1&&e[0][2]?nje(e[0][0],e[0][1]):function(r){return r===t||rje(r,t,e)}}Wte.exports=sje});var p0=E((hdt,Vte)=>{var oje=xd();function aje(t,e,r){var i=t==null?void 0:oje(t,e);return i===void 0?r:i}Vte.exports=aje});var Xte=E((pdt,_te)=>{var Aje=UF(),lje=p0(),cje=iF(),uje=WB(),gje=HF(),fje=GF(),hje=Sc(),pje=1,dje=2;function Cje(t,e){return uje(t)&&gje(e)?fje(hje(t),e):function(r){var i=lje(r,t);return i===void 0&&i===e?cje(r,t):Aje(e,i,pje|dje)}}_te.exports=Cje});var $te=E((ddt,Zte)=>{function mje(t){return function(e){return e==null?void 0:e[t]}}Zte.exports=mje});var tre=E((Cdt,ere)=>{var Eje=xd();function Ije(t){return function(e){return Eje(e,t)}}ere.exports=Ije});var ire=E((mdt,rre)=>{var yje=$te(),wje=tre(),Bje=WB(),Qje=Sc();function bje(t){return Bje(t)?yje(Qje(t)):wje(t)}rre.exports=bje});var jF=E((Edt,nre)=>{var vje=zte(),Sje=Xte(),xje=e0(),kje=As(),Pje=ire();function Dje(t){return typeof t=="function"?t:t==null?xje:typeof t=="object"?kje(t)?Sje(t[0],t[1]):vje(t):Pje(t)}nre.exports=Dje});var YF=E((Idt,sre)=>{var Rje=jg(),Fje=SF(),Nje=jF();function Lje(t,e){var r={};return e=Nje(e,3),Fje(t,function(i,n,s){Rje(r,n,e(i,n,s))}),r}sre.exports=Lje});var Yd=E((ydt,ore)=>{"use strict";function Pc(t){this._maxSize=t,this.clear()}Pc.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Pc.prototype.get=function(t){return this._values[t]};Pc.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var Tje=/[^.^\]^[]+|(?=\[\]|\.\.)/g,are=/^\d+$/,Mje=/^\d/,Oje=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,Kje=/^\s*(['"]?)(.*?)(\1)\s*$/,qF=512,Are=new Pc(qF),lre=new Pc(qF),cre=new Pc(qF);ore.exports={Cache:Pc,split:WF,normalizePath:JF,setter:function(t){var e=JF(t);return lre.get(t)||lre.set(t,function(i,n){for(var s=0,o=e.length,a=i;s{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});qd.create=Yje;qd.default=void 0;var qje=Yd(),d0={context:"$",value:"."};function Yje(t,e){return new C0(t,e)}var C0=class{constructor(e,r={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===d0.context,this.isValue=this.key[0]===d0.value,this.isSibling=!this.isContext&&!this.isValue;let i=this.isContext?d0.context:this.isValue?d0.value:"";this.path=this.key.slice(i.length),this.getter=this.path&&(0,qje.getter)(this.path,!0),this.map=r.map}getValue(e,r,i){let n=this.isContext?i:this.isValue?e:r;return this.getter&&(n=this.getter(n||{})),this.map&&(n=this.map(n)),n}cast(e,r){return this.getValue(e,r==null?void 0:r.parent,r==null?void 0:r.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};qd.default=C0;C0.prototype.__isYupRef=!0});var ure=E(VF=>{"use strict";Object.defineProperty(VF,"__esModule",{value:!0});VF.default=Jje;var Wje=_F(YF()),m0=_F(xc()),zje=_F(Dc());function _F(t){return t&&t.__esModule?t:{default:t}}function E0(){return E0=Object.assign||function(t){for(var e=1;e=0)&&(r[n]=t[n]);return r}function Jje(t){function e(r,i){let{value:n,path:s="",label:o,options:a,originalValue:l,sync:c}=r,u=Vje(r,["value","path","label","options","originalValue","sync"]),{name:g,test:f,params:h,message:p}=t,{parent:d,context:m}=a;function I(L){return zje.default.isRef(L)?L.getValue(n,d,m):L}function B(L={}){let K=(0,Wje.default)(E0({value:n,originalValue:l,label:o,path:L.path||s},h,L.params),I),J=new m0.default(m0.default.formatError(L.message||p,K),n,K.path,L.type||g);return J.params=K,J}let b=E0({path:s,parent:d,type:g,createError:B,resolve:I,options:a,originalValue:l},u);if(!c){try{Promise.resolve(f.call(b,n,b)).then(L=>{m0.default.isError(L)?i(L):L?i(null,L):i(B())})}catch(L){i(L)}return}let R;try{var H;if(R=f.call(b,n,b),typeof((H=R)==null?void 0:H.then)=="function")throw new Error(`Validation test of type: "${b.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(L){i(L);return}m0.default.isError(R)?i(R):R?i(null,R):i(B())}return e.OPTIONS=t,e}});var XF=E(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.getIn=gre;Jd.default=void 0;var _je=Yd(),Xje=t=>t.substr(0,t.length-1).substr(1);function gre(t,e,r,i=r){let n,s,o;return e?((0,_je.forEach)(e,(a,l,c)=>{let u=l?Xje(a):a;if(t=t.resolve({context:i,parent:n,value:r}),t.innerType){let g=c?parseInt(u,10):0;if(r&&g>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);n=r,r=r&&r[g],t=t.innerType}if(!c){if(!t.fields||!t.fields[u])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${t._type}")`);n=r,r=r&&r[u],t=t.fields[u]}s=u,o=l?"["+a+"]":"."+a}),{schema:t,parent:n,parentPath:s}):{parent:n,parentPath:e,schema:t}}var Zje=(t,e,r,i)=>gre(t,e,r,i).schema,$je=Zje;Jd.default=$je});var hre=E(I0=>{"use strict";Object.defineProperty(I0,"__esModule",{value:!0});I0.default=void 0;var fre=eYe(Dc());function eYe(t){return t&&t.__esModule?t:{default:t}}var y0=class{constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let r of this.list)e.push(r);for(let[,r]of this.refs)e.push(r.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){fre.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){fre.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,r){if(this.list.has(e))return!0;let i,n=this.refs.values();for(;i=n.next(),!i.done;)if(r(i.value)===e)return!0;return!1}clone(){let e=new y0;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,r){let i=this.clone();return e.list.forEach(n=>i.add(n)),e.refs.forEach(n=>i.add(n)),r.list.forEach(n=>i.delete(n)),r.refs.forEach(n=>i.delete(n)),i}};I0.default=y0});var Ma=E(w0=>{"use strict";Object.defineProperty(w0,"__esModule",{value:!0});w0.default=void 0;var pre=Ta(M$()),Xg=La(),tYe=Ta(Z$()),dre=Ta(a0()),B0=Ta(ure()),Cre=Ta(Nd()),rYe=Ta(Dc()),iYe=XF(),nYe=Ta(EF()),mre=Ta(xc()),Ere=Ta(hre());function Ta(t){return t&&t.__esModule?t:{default:t}}function ds(){return ds=Object.assign||function(t){for(var e=1;e{this.typeError(Xg.mixed.notType)}),this.type=(e==null?void 0:e.type)||"mixed",this.spec=ds({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e==null?void 0:e.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let r=Object.create(Object.getPrototypeOf(this));return r.type=this.type,r._typeError=this._typeError,r._whitelistError=this._whitelistError,r._blacklistError=this._blacklistError,r._whitelist=this._whitelist.clone(),r._blacklist=this._blacklist.clone(),r.exclusiveTests=ds({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,pre.default)(ds({},this.spec,e)),r}label(e){var r=this.clone();return r.spec.label=e,r}meta(...e){if(e.length===0)return this.spec.meta;let r=this.clone();return r.spec.meta=Object.assign(r.spec.meta||{},e[0]),r}withMutation(e){let r=this._mutate;this._mutate=!0;let i=e(this);return this._mutate=r,i}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let r=this,i=e.clone(),n=ds({},r.spec,i.spec);return i.spec=n,i._typeError||(i._typeError=r._typeError),i._whitelistError||(i._whitelistError=r._whitelistError),i._blacklistError||(i._blacklistError=r._blacklistError),i._whitelist=r._whitelist.merge(e._whitelist,e._blacklist),i._blacklist=r._blacklist.merge(e._blacklist,e._whitelist),i.tests=r.tests,i.exclusiveTests=r.exclusiveTests,i.withMutation(s=>{e.tests.forEach(o=>{s.test(o.OPTIONS)})}),i}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let r=this;if(r.conditions.length){let i=r.conditions;r=r.clone(),r.conditions=[],r=i.reduce((n,s)=>s.resolve(n,e),r),r=r.resolve(e)}return r}cast(e,r={}){let i=this.resolve(ds({value:e},r)),n=i._cast(e,r);if(e!==void 0&&r.assert!==!1&&i.isType(n)!==!0){let s=(0,Cre.default)(e),o=(0,Cre.default)(n);throw new TypeError(`The value of ${r.path||"field"} could not be cast to a value that satisfies the schema type: "${i._type}". - -attempted value: ${s} -`+(o!==s?`result of cast: ${o}`:""))}return n}_cast(e,r){let i=e===void 0?e:this.transforms.reduce((n,s)=>s.call(this,n,e,this),e);return i===void 0&&(i=this.getDefault()),i}_validate(e,r={},i){let{sync:n,path:s,from:o=[],originalValue:a=e,strict:l=this.spec.strict,abortEarly:c=this.spec.abortEarly}=r,u=e;l||(u=this._cast(u,ds({assert:!1},r)));let g={value:u,path:s,options:r,originalValue:a,schema:this,label:this.spec.label,sync:n,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,dre.default)({args:g,value:u,path:s,sync:n,tests:f,endEarly:c},h=>{if(h)return void i(h,u);(0,dre.default)({tests:this.tests,args:g,path:s,sync:n,value:u,endEarly:c},i)})}validate(e,r,i){let n=this.resolve(ds({},r,{value:e}));return typeof i=="function"?n._validate(e,r,i):new Promise((s,o)=>n._validate(e,r,(a,l)=>{a?o(a):s(l)}))}validateSync(e,r){let i=this.resolve(ds({},r,{value:e})),n;return i._validate(e,ds({},r,{sync:!0}),(s,o)=>{if(s)throw s;n=o}),n}isValid(e,r){return this.validate(e,r).then(()=>!0,i=>{if(mre.default.isError(i))return!1;throw i})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(i){if(mre.default.isError(i))return!1;throw i}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,pre.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var r=this.clone();return r.spec.strict=e,r}_isPresent(e){return e!=null}defined(e=Xg.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Xg.mixed.required){return this.clone({presence:"required"}).withMutation(r=>r.test({message:e,name:"required",exclusive:!0,test(i){return this.schema._isPresent(i)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(r=>r.OPTIONS.name!=="required"),e}nullable(e=!0){var r=this.clone({nullable:e!==!1});return r}transform(e){var r=this.clone();return r.transforms.push(e),r}test(...e){let r;if(e.length===1?typeof e[0]=="function"?r={test:e[0]}:r=e[0]:e.length===2?r={name:e[0],test:e[1]}:r={name:e[0],message:e[1],test:e[2]},r.message===void 0&&(r.message=Xg.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let i=this.clone(),n=(0,B0.default)(r),s=r.exclusive||r.name&&i.exclusiveTests[r.name]===!0;if(r.exclusive&&!r.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return r.name&&(i.exclusiveTests[r.name]=!!r.exclusive),i.tests=i.tests.filter(o=>!(o.OPTIONS.name===r.name&&(s||o.OPTIONS.test===n.OPTIONS.test))),i.tests.push(n),i}when(e,r){!Array.isArray(e)&&typeof e!="string"&&(r=e,e=".");let i=this.clone(),n=(0,nYe.default)(e).map(s=>new rYe.default(s));return n.forEach(s=>{s.isSibling&&i.deps.push(s.key)}),i.conditions.push(new tYe.default(n,r)),i}typeError(e){var r=this.clone();return r._typeError=(0,B0.default)({message:e,name:"typeError",test(i){return i!==void 0&&!this.schema.isType(i)?this.createError({params:{type:this.schema._type}}):!0}}),r}oneOf(e,r=Xg.mixed.oneOf){var i=this.clone();return e.forEach(n=>{i._whitelist.add(n),i._blacklist.delete(n)}),i._whitelistError=(0,B0.default)({message:r,name:"oneOf",test(n){if(n===void 0)return!0;let s=this.schema._whitelist;return s.has(n,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),i}notOneOf(e,r=Xg.mixed.notOneOf){var i=this.clone();return e.forEach(n=>{i._blacklist.add(n),i._whitelist.delete(n)}),i._blacklistError=(0,B0.default)({message:r,name:"notOneOf",test(n){let s=this.schema._blacklist;return s.has(n,this.resolve)?this.createError({params:{values:s.toArray().join(", ")}}):!0}}),i}strip(e=!0){let r=this.clone();return r.spec.strip=e,r}describe(){let e=this.clone(),{label:r,meta:i}=e.spec;return{meta:i,label:r,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(l=>l.name===s.name)===o)}}};w0.default=Do;Do.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])Do.prototype[`${t}At`]=function(e,r,i={}){let{parent:n,parentPath:s,schema:o}=(0,iYe.getIn)(this,e,r,i.context);return o[t](n&&n[s],ds({},i,{parent:n,path:e}))};for(let t of["equals","is"])Do.prototype[t]=Do.prototype.oneOf;for(let t of["not","nope"])Do.prototype[t]=Do.prototype.notOneOf;Do.prototype.optional=Do.prototype.notRequired});var yre=E(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});Wd.create=Ire;Wd.default=void 0;var oYe=sYe(Ma());function sYe(t){return t&&t.__esModule?t:{default:t}}var ZF=oYe.default,aYe=ZF;Wd.default=aYe;function Ire(){return new ZF}Ire.prototype=ZF.prototype});var Zg=E(Q0=>{"use strict";Object.defineProperty(Q0,"__esModule",{value:!0});Q0.default=void 0;var AYe=t=>t==null;Q0.default=AYe});var vre=E(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});zd.create=wre;zd.default=void 0;var lYe=Bre(Ma()),Qre=La(),bre=Bre(Zg());function Bre(t){return t&&t.__esModule?t:{default:t}}function wre(){return new b0}var b0=class extends lYe.default{constructor(){super({type:"boolean"});this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,bre.default)(r)||r===!0}})}isFalse(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,bre.default)(r)||r===!1}})}};zd.default=b0;wre.prototype=b0.prototype});var kre=E(Vd=>{"use strict";Object.defineProperty(Vd,"__esModule",{value:!0});Vd.create=Sre;Vd.default=void 0;var Ro=La(),Oa=xre(Zg()),cYe=xre(Ma());function xre(t){return t&&t.__esModule?t:{default:t}}var uYe=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,gYe=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,fYe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,hYe=t=>(0,Oa.default)(t)||t===t.trim(),pYe={}.toString();function Sre(){return new v0}var v0=class extends cYe.default{constructor(){super({type:"string"});this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let r=e!=null&&e.toString?e.toString():e;return r===pYe?e:r})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,r=Ro.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,Oa.default)(i)||i.length===this.resolve(e)}})}min(e,r=Ro.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Oa.default)(i)||i.length>=this.resolve(e)}})}max(e,r=Ro.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(i){return(0,Oa.default)(i)||i.length<=this.resolve(e)}})}matches(e,r){let i=!1,n,s;return r&&(typeof r=="object"?{excludeEmptyString:i=!1,message:n,name:s}=r:n=r),this.test({name:s||"matches",message:n||Ro.string.matches,params:{regex:e},test:o=>(0,Oa.default)(o)||o===""&&i||o.search(e)!==-1})}email(e=Ro.string.email){return this.matches(uYe,{name:"email",message:e,excludeEmptyString:!0})}url(e=Ro.string.url){return this.matches(gYe,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Ro.string.uuid){return this.matches(fYe,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Ro.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:hYe})}lowercase(e=Ro.string.lowercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toLowerCase()})}uppercase(e=Ro.string.uppercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toUpperCase()})}};Vd.default=v0;Sre.prototype=v0.prototype});var Rre=E(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});_d.create=Pre;_d.default=void 0;var Rc=La(),Fc=Dre(Zg()),dYe=Dre(Ma());function Dre(t){return t&&t.__esModule?t:{default:t}}var CYe=t=>t!=+t;function Pre(){return new S0}var S0=class extends dYe.default{constructor(){super({type:"number"});this.withMutation(()=>{this.transform(function(e){let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)?r:parseFloat(r)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!CYe(e)}min(e,r=Rc.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Fc.default)(i)||i>=this.resolve(e)}})}max(e,r=Rc.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Fc.default)(i)||i<=this.resolve(e)}})}lessThan(e,r=Rc.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(i){return(0,Fc.default)(i)||ithis.resolve(e)}})}positive(e=Rc.number.positive){return this.moreThan(0,e)}negative(e=Rc.number.negative){return this.lessThan(0,e)}integer(e=Rc.number.integer){return this.test({name:"integer",message:e,test:r=>(0,Fc.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,Fc.default)(e)?e:e|0)}round(e){var r,i=["ceil","floor","round","trunc"];if(e=((r=e)==null?void 0:r.toLowerCase())||"round",e==="trunc")return this.truncate();if(i.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+i.join(", "));return this.transform(n=>(0,Fc.default)(n)?n:Math[e](n))}};_d.default=S0;Pre.prototype=S0.prototype});var Fre=E($F=>{"use strict";Object.defineProperty($F,"__esModule",{value:!0});$F.default=mYe;var EYe=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function mYe(t){var e=[1,4,5,6,7,10,11],r=0,i,n;if(n=EYe.exec(t)){for(var s=0,o;o=e[s];++s)n[o]=+n[o]||0;n[2]=(+n[2]||1)-1,n[3]=+n[3]||1,n[7]=n[7]?String(n[7]).substr(0,3):0,(n[8]===void 0||n[8]==="")&&(n[9]===void 0||n[9]==="")?i=+new Date(n[1],n[2],n[3],n[4],n[5],n[6],n[7]):(n[8]!=="Z"&&n[9]!==void 0&&(r=n[10]*60+n[11],n[9]==="+"&&(r=0-r)),i=Date.UTC(n[1],n[2],n[3],n[4],n[5]+r,n[6],n[7]))}else i=Date.parse?Date.parse(t):NaN;return i}});var Tre=E(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});Xd.create=eN;Xd.default=void 0;var IYe=x0(Fre()),Nre=La(),Lre=x0(Zg()),yYe=x0(Dc()),wYe=x0(Ma());function x0(t){return t&&t.__esModule?t:{default:t}}var tN=new Date(""),BYe=t=>Object.prototype.toString.call(t)==="[object Date]";function eN(){return new Zd}var Zd=class extends wYe.default{constructor(){super({type:"date"});this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,IYe.default)(e),isNaN(e)?tN:new Date(e))})})}_typeCheck(e){return BYe(e)&&!isNaN(e.getTime())}prepareParam(e,r){let i;if(yYe.default.isRef(e))i=e;else{let n=this.cast(e);if(!this._typeCheck(n))throw new TypeError(`\`${r}\` must be a Date or a value that can be \`cast()\` to a Date`);i=n}return i}min(e,r=Nre.date.min){let i=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Lre.default)(n)||n>=this.resolve(i)}})}max(e,r=Nre.date.max){var i=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Lre.default)(n)||n<=this.resolve(i)}})}};Xd.default=Zd;Zd.INVALID_DATE=tN;eN.prototype=Zd.prototype;eN.INVALID_DATE=tN});var Ore=E((Ndt,Mre)=>{function QYe(t,e,r,i){var n=-1,s=t==null?0:t.length;for(i&&s&&(r=t[++n]);++n{function bYe(t){return function(e){return t==null?void 0:t[e]}}Kre.exports=bYe});var Gre=E((Tdt,Hre)=>{var vYe=Ure(),SYe={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},xYe=vYe(SYe);Hre.exports=xYe});var Yre=E((Mdt,jre)=>{var kYe=Gre(),PYe=gg(),DYe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,RYe="\\u0300-\\u036f",FYe="\\ufe20-\\ufe2f",NYe="\\u20d0-\\u20ff",LYe=RYe+FYe+NYe,TYe="["+LYe+"]",MYe=RegExp(TYe,"g");function OYe(t){return t=PYe(t),t&&t.replace(DYe,kYe).replace(MYe,"")}jre.exports=OYe});var Jre=E((Odt,qre)=>{var KYe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function UYe(t){return t.match(KYe)||[]}qre.exports=UYe});var zre=E((Kdt,Wre)=>{var HYe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function GYe(t){return HYe.test(t)}Wre.exports=GYe});var fie=E((Udt,Vre)=>{var _re="\\ud800-\\udfff",jYe="\\u0300-\\u036f",YYe="\\ufe20-\\ufe2f",qYe="\\u20d0-\\u20ff",JYe=jYe+YYe+qYe,Xre="\\u2700-\\u27bf",Zre="a-z\\xdf-\\xf6\\xf8-\\xff",WYe="\\xac\\xb1\\xd7\\xf7",zYe="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",VYe="\\u2000-\\u206f",_Ye=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",$re="A-Z\\xc0-\\xd6\\xd8-\\xde",XYe="\\ufe0e\\ufe0f",eie=WYe+zYe+VYe+_Ye,tie="['\u2019]",rie="["+eie+"]",ZYe="["+JYe+"]",iie="\\d+",$Ye="["+Xre+"]",nie="["+Zre+"]",sie="[^"+_re+eie+iie+Xre+Zre+$re+"]",eqe="\\ud83c[\\udffb-\\udfff]",tqe="(?:"+ZYe+"|"+eqe+")",rqe="[^"+_re+"]",oie="(?:\\ud83c[\\udde6-\\uddff]){2}",aie="[\\ud800-\\udbff][\\udc00-\\udfff]",$g="["+$re+"]",iqe="\\u200d",Aie="(?:"+nie+"|"+sie+")",nqe="(?:"+$g+"|"+sie+")",lie="(?:"+tie+"(?:d|ll|m|re|s|t|ve))?",cie="(?:"+tie+"(?:D|LL|M|RE|S|T|VE))?",uie=tqe+"?",gie="["+XYe+"]?",sqe="(?:"+iqe+"(?:"+[rqe,oie,aie].join("|")+")"+gie+uie+")*",oqe="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",aqe="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Aqe=gie+uie+sqe,lqe="(?:"+[$Ye,oie,aie].join("|")+")"+Aqe,cqe=RegExp([$g+"?"+nie+"+"+lie+"(?="+[rie,$g,"$"].join("|")+")",nqe+"+"+cie+"(?="+[rie,$g+Aie,"$"].join("|")+")",$g+"?"+Aie+"+"+lie,$g+"+"+cie,aqe,oqe,iie,lqe].join("|"),"g");function uqe(t){return t.match(cqe)||[]}Vre.exports=uqe});var pie=E((Hdt,hie)=>{var gqe=Jre(),fqe=zre(),hqe=gg(),pqe=fie();function dqe(t,e,r){return t=hqe(t),e=r?void 0:e,e===void 0?fqe(t)?pqe(t):gqe(t):t.match(e)||[]}hie.exports=dqe});var rN=E((Gdt,die)=>{var Cqe=Ore(),mqe=Yre(),Eqe=pie(),Iqe="['\u2019]",yqe=RegExp(Iqe,"g");function wqe(t){return function(e){return Cqe(Eqe(mqe(e).replace(yqe,"")),t,"")}}die.exports=wqe});var mie=E((jdt,Cie)=>{var Bqe=rN(),Qqe=Bqe(function(t,e,r){return t+(r?"_":"")+e.toLowerCase()});Cie.exports=Qqe});var Iie=E((Ydt,Eie)=>{var bqe=ZP(),vqe=rN(),Sqe=vqe(function(t,e,r){return e=e.toLowerCase(),t+(r?bqe(e):e)});Eie.exports=Sqe});var wie=E((qdt,yie)=>{var xqe=jg(),kqe=SF(),Pqe=jF();function Dqe(t,e){var r={};return e=Pqe(e,3),kqe(t,function(i,n,s){xqe(r,e(i,n,s),i)}),r}yie.exports=Dqe});var Qie=E((Jdt,iN)=>{iN.exports=function(t){return Bie(Rqe(t),t)};iN.exports.array=Bie;function Bie(t,e){var r=t.length,i=new Array(r),n={},s=r,o=Fqe(e),a=Nqe(t);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)n[s]||l(t[s],s,new Set);return i;function l(c,u,g){if(g.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch(d){f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!n[u]){n[u]=!0;var h=o.get(c)||new Set;if(h=Array.from(h),u=h.length){g.add(c);do{var p=h[--u];l(p,a.get(p),g)}while(u);g.delete(c)}i[--r]=c}}}function Rqe(t){for(var e=new Set,r=0,i=t.length;r{"use strict";Object.defineProperty(nN,"__esModule",{value:!0});nN.default=Lqe;var Tqe=k0(Ld()),Mqe=k0(Qie()),Oqe=Yd(),Kqe=k0(Dc()),Uqe=k0(qg());function k0(t){return t&&t.__esModule?t:{default:t}}function Lqe(t,e=[]){let r=[],i=[];function n(s,o){var a=(0,Oqe.split)(s)[0];~i.indexOf(a)||i.push(a),~e.indexOf(`${o}-${a}`)||r.push([o,a])}for(let s in t)if((0,Tqe.default)(t,s)){let o=t[s];~i.indexOf(s)||i.push(s),Kqe.default.isRef(o)&&o.isSibling?n(o.path,s):(0,Uqe.default)(o)&&"deps"in o&&o.deps.forEach(a=>n(a,s))}return Mqe.default.array(i,r).reverse()}});var Sie=E(sN=>{"use strict";Object.defineProperty(sN,"__esModule",{value:!0});sN.default=Hqe;function vie(t,e){let r=Infinity;return t.some((i,n)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(i))!==-1)return r=n,!0}),r}function Hqe(t){return(e,r)=>vie(t,e)-vie(t,r)}});var Nie=E($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});$d.create=xie;$d.default=void 0;var kie=Fo(Ld()),Pie=Fo(mie()),Gqe=Fo(Iie()),jqe=Fo(wie()),Yqe=Fo(YF()),qqe=Yd(),Die=La(),Jqe=Fo(bie()),Rie=Fo(Sie()),Wqe=Fo(a0()),zqe=Fo(xc()),oN=Fo(Ma());function Fo(t){return t&&t.__esModule?t:{default:t}}function ef(){return ef=Object.assign||function(t){for(var e=1;eObject.prototype.toString.call(t)==="[object Object]";function Vqe(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(i=>r.indexOf(i)===-1)}var _qe=(0,Rie.default)([]),P0=class extends oN.default{constructor(e){super({type:"object"});this.fields=Object.create(null),this._sortErrors=_qe,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(i){if(typeof i=="string")try{i=JSON.parse(i)}catch(n){i=null}return this.isType(i)?i:null}),e&&this.shape(e)})}_typeCheck(e){return Fie(e)||typeof e=="function"}_cast(e,r={}){var i;let n=super._cast(e,r);if(n===void 0)return this.getDefault();if(!this._typeCheck(n))return n;let s=this.fields,o=(i=r.stripUnknown)!=null?i:this.spec.noUnknown,a=this._nodes.concat(Object.keys(n).filter(g=>this._nodes.indexOf(g)===-1)),l={},c=ef({},r,{parent:l,__validating:r.__validating||!1}),u=!1;for(let g of a){let f=s[g],h=(0,kie.default)(n,g);if(f){let p,d=n[g];c.path=(r.path?`${r.path}.`:"")+g,f=f.resolve({value:d,context:r.context,parent:l});let m="spec"in f?f.spec:void 0,I=m==null?void 0:m.strict;if(m==null?void 0:m.strip){u=u||g in n;continue}p=!r.__validating||!I?f.cast(n[g],c):n[g],p!==void 0&&(l[g]=p)}else h&&!o&&(l[g]=n[g]);l[g]!==n[g]&&(u=!0)}return u?l:n}_validate(e,r={},i){let n=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:l=this.spec.abortEarly,recursive:c=this.spec.recursive}=r;o=[{schema:this,value:a},...o],r.__validating=!0,r.originalValue=a,r.from=o,super._validate(e,r,(u,g)=>{if(u){if(!zqe.default.isError(u)||l)return void i(u,g);n.push(u)}if(!c||!Fie(g)){i(n[0]||null,g);return}a=a||g;let f=this._nodes.map(h=>(p,d)=>{let m=h.indexOf(".")===-1?(r.path?`${r.path}.`:"")+h:`${r.path||""}["${h}"]`,I=this.fields[h];if(I&&"validate"in I){I.validate(g[h],ef({},r,{path:m,from:o,strict:!0,parent:g,originalValue:a[h]}),d);return}d(null)});(0,Wqe.default)({sync:s,tests:f,value:g,errors:n,endEarly:l,sort:this._sortErrors,path:r.path},i)})}clone(e){let r=super.clone(e);return r.fields=ef({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),i=r.fields;for(let[n,s]of Object.entries(this.fields)){let o=i[n];o===void 0?i[n]=s:o instanceof oN.default&&s instanceof oN.default&&(i[n]=s.concat(o))}return r.withMutation(()=>r.shape(i))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let i=this.fields[r];e[r]="default"in i?i.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(!!this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let i=this.clone(),n=Object.assign(i.fields,e);if(i.fields=n,i._sortErrors=(0,Rie.default)(Object.keys(n)),r.length){Array.isArray(r[0])||(r=[r]);let s=r.map(([o,a])=>`${o}-${a}`);i._excludedEdges=i._excludedEdges.concat(s)}return i._nodes=(0,Jqe.default)(n,i._excludedEdges),i}pick(e){let r={};for(let i of e)this.fields[i]&&(r[i]=this.fields[i]);return this.clone().withMutation(i=>(i.fields={},i.shape(r)))}omit(e){let r=this.clone(),i=r.fields;r.fields={};for(let n of e)delete i[n];return r.withMutation(()=>r.shape(i))}from(e,r,i){let n=(0,qqe.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,kie.default)(s,e)&&(o=ef({},s),i||delete o[e],o[r]=n(s)),o})}noUnknown(e=!0,r=Die.object.noUnknown){typeof e=="string"&&(r=e,e=!0);let i=this.test({name:"noUnknown",exclusive:!0,message:r,test(n){if(n==null)return!0;let s=Vqe(this.schema,n);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return i.spec.noUnknown=e,i}unknown(e=!0,r=Die.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,jqe.default)(r,(i,n)=>e(n)))}camelCase(){return this.transformKeys(Gqe.default)}snakeCase(){return this.transformKeys(Pie.default)}constantCase(){return this.transformKeys(e=>(0,Pie.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,Yqe.default)(this.fields,r=>r.describe()),e}};$d.default=P0;function xie(t){return new P0(t)}xie.prototype=P0.prototype});var Tie=E(eC=>{"use strict";Object.defineProperty(eC,"__esModule",{value:!0});eC.create=Lie;eC.default=void 0;var aN=tf(Zg()),Xqe=tf(qg()),Zqe=tf(Nd()),AN=La(),$qe=tf(a0()),eJe=tf(xc()),tJe=tf(Ma());function tf(t){return t&&t.__esModule?t:{default:t}}function D0(){return D0=Object.assign||function(t){for(var e=1;e{this.transform(function(r){if(typeof r=="string")try{r=JSON.parse(r)}catch(i){r=null}return this.isType(r)?r:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,r){let i=super._cast(e,r);if(!this._typeCheck(i)||!this.innerType)return i;let n=!1,s=i.map((o,a)=>{let l=this.innerType.cast(o,D0({},r,{path:`${r.path||""}[${a}]`}));return l!==o&&(n=!0),l});return n?s:i}_validate(e,r={},i){var n,s;let o=[],a=r.sync,l=r.path,c=this.innerType,u=(n=r.abortEarly)!=null?n:this.spec.abortEarly,g=(s=r.recursive)!=null?s:this.spec.recursive,f=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(h,p)=>{if(h){if(!eJe.default.isError(h)||u)return void i(h,p);o.push(h)}if(!g||!c||!this._typeCheck(p)){i(o[0]||null,p);return}f=f||p;let d=new Array(p.length);for(let m=0;mc.validate(I,b,H)}(0,$qe.default)({sync:a,path:l,value:p,errors:o,endEarly:u,tests:d},i)})}clone(e){let r=super.clone(e);return r.innerType=this.innerType,r}concat(e){let r=super.concat(e);return r.innerType=this.innerType,e.innerType&&(r.innerType=r.innerType?r.innerType.concat(e.innerType):e.innerType),r}of(e){let r=this.clone();if(!(0,Xqe.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,Zqe.default)(e));return r.innerType=e,r}length(e,r=AN.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,aN.default)(i)||i.length===this.resolve(e)}})}min(e,r){return r=r||AN.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,aN.default)(i)||i.length>=this.resolve(e)}})}max(e,r){return r=r||AN.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,aN.default)(i)||i.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,r)=>this._typeCheck(e)?e:r==null?[]:[].concat(r))}compact(e){let r=e?(i,n,s)=>!e(i,n,s):i=>!!i;return this.transform(i=>i!=null?i.filter(r):i)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};eC.default=R0;Lie.prototype=R0.prototype});var Mie=E(tC=>{"use strict";Object.defineProperty(tC,"__esModule",{value:!0});tC.create=rJe;tC.default=void 0;var nJe=iJe(qg());function iJe(t){return t&&t.__esModule?t:{default:t}}function rJe(t){return new lN(t)}var lN=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,i={})=>{let n=this.builder(r,i);if(!(0,nJe.default)(n))throw new TypeError("lazy() functions must return a valid schema");return n.resolve(i)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,r){return this._resolve(e,r).cast(e,r)}validate(e,r,i){return this._resolve(e,r).validate(e,r,i)}validateSync(e,r){return this._resolve(e,r).validateSync(e,r)}validateAt(e,r,i){return this._resolve(r,i).validateAt(e,r,i)}validateSyncAt(e,r,i){return this._resolve(r,i).validateSyncAt(e,r,i)}describe(){return null}isValid(e,r){return this._resolve(e,r).isValid(e,r)}isValidSync(e,r){return this._resolve(e,r).isValidSync(e,r)}},sJe=lN;tC.default=sJe});var Oie=E(cN=>{"use strict";Object.defineProperty(cN,"__esModule",{value:!0});cN.default=oJe;var AJe=aJe(La());function aJe(t){return t&&t.__esModule?t:{default:t}}function oJe(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{AJe.default[e][r]=t[e][r]})})}});var gN=E(cr=>{"use strict";Object.defineProperty(cr,"__esModule",{value:!0});cr.addMethod=lJe;Object.defineProperty(cr,"MixedSchema",{enumerable:!0,get:function(){return Kie.default}});Object.defineProperty(cr,"mixed",{enumerable:!0,get:function(){return Kie.create}});Object.defineProperty(cr,"BooleanSchema",{enumerable:!0,get:function(){return uN.default}});Object.defineProperty(cr,"bool",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"boolean",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"StringSchema",{enumerable:!0,get:function(){return Uie.default}});Object.defineProperty(cr,"string",{enumerable:!0,get:function(){return Uie.create}});Object.defineProperty(cr,"NumberSchema",{enumerable:!0,get:function(){return Hie.default}});Object.defineProperty(cr,"number",{enumerable:!0,get:function(){return Hie.create}});Object.defineProperty(cr,"DateSchema",{enumerable:!0,get:function(){return Gie.default}});Object.defineProperty(cr,"date",{enumerable:!0,get:function(){return Gie.create}});Object.defineProperty(cr,"ObjectSchema",{enumerable:!0,get:function(){return jie.default}});Object.defineProperty(cr,"object",{enumerable:!0,get:function(){return jie.create}});Object.defineProperty(cr,"ArraySchema",{enumerable:!0,get:function(){return Yie.default}});Object.defineProperty(cr,"array",{enumerable:!0,get:function(){return Yie.create}});Object.defineProperty(cr,"ref",{enumerable:!0,get:function(){return cJe.create}});Object.defineProperty(cr,"lazy",{enumerable:!0,get:function(){return uJe.create}});Object.defineProperty(cr,"ValidationError",{enumerable:!0,get:function(){return gJe.default}});Object.defineProperty(cr,"reach",{enumerable:!0,get:function(){return fJe.default}});Object.defineProperty(cr,"isSchema",{enumerable:!0,get:function(){return qie.default}});Object.defineProperty(cr,"setLocale",{enumerable:!0,get:function(){return hJe.default}});Object.defineProperty(cr,"BaseSchema",{enumerable:!0,get:function(){return pJe.default}});var Kie=Nc(yre()),uN=Nc(vre()),Uie=Nc(kre()),Hie=Nc(Rre()),Gie=Nc(Tre()),jie=Nc(Nie()),Yie=Nc(Tie()),cJe=Dc(),uJe=Mie(),gJe=rC(xc()),fJe=rC(XF()),qie=rC(qg()),hJe=rC(Oie()),pJe=rC(Ma());function rC(t){return t&&t.__esModule?t:{default:t}}function Jie(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Jie=function(){return t},t}function Nc(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Jie();if(e&&e.has(t))return e.get(t);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=i?Object.getOwnPropertyDescriptor(t,n):null;s&&(s.get||s.set)?Object.defineProperty(r,n,s):r[n]=t[n]}return r.default=t,e&&e.set(t,r),r}function lJe(t,e,r){if(!t||!(0,qie.default)(t.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof r!="function")throw new TypeError("Method function must be provided");t.prototype[e]=r}});var Xie=E((gCt,nC)=>{"use strict";var mJe=process.env.TERM_PROGRAM==="Hyper",EJe=process.platform==="win32",zie=process.platform==="linux",fN={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},Vie=Object.assign({},fN,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),_ie=Object.assign({},fN,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:zie?"\u25B8":"\u276F",pointerSmall:zie?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});nC.exports=EJe&&!mJe?Vie:_ie;Reflect.defineProperty(nC.exports,"common",{enumerable:!1,value:fN});Reflect.defineProperty(nC.exports,"windows",{enumerable:!1,value:Vie});Reflect.defineProperty(nC.exports,"other",{enumerable:!1,value:_ie})});var js=E((fCt,hN)=>{"use strict";var IJe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),yJe=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,Zie=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=s=>{let o=s.open=`[${s.codes[0]}m`,a=s.close=`[${s.codes[1]}m`,l=s.regex=new RegExp(`\\u001b\\[${s.codes[1]}m`,"g");return s.wrap=(c,u)=>{c.includes(a)&&(c=c.replace(l,a+o));let g=o+c+a;return u?g.replace(/\r*\n/g,`${a}$&${o}`):g},s},r=(s,o,a)=>typeof s=="function"?s(o):s.wrap(o,a),i=(s,o)=>{if(s===""||s==null)return"";if(t.enabled===!1)return s;if(t.visible===!1)return"";let a=""+s,l=a.includes(` -`),c=o.length;for(c>0&&o.includes("unstyle")&&(o=[...new Set(["unstyle",...o])].reverse());c-- >0;)a=r(t.styles[o[c]],a,l);return a},n=(s,o,a)=>{t.styles[s]=e({name:s,codes:o}),(t.keys[a]||(t.keys[a]=[])).push(s),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(c){t.alias(s,c)},get(){let c=u=>i(u,c.stack);return Reflect.setPrototypeOf(c,t),c.stack=this.stack?this.stack.concat(s):[s],c}})};return n("reset",[0,0],"modifier"),n("bold",[1,22],"modifier"),n("dim",[2,22],"modifier"),n("italic",[3,23],"modifier"),n("underline",[4,24],"modifier"),n("inverse",[7,27],"modifier"),n("hidden",[8,28],"modifier"),n("strikethrough",[9,29],"modifier"),n("black",[30,39],"color"),n("red",[31,39],"color"),n("green",[32,39],"color"),n("yellow",[33,39],"color"),n("blue",[34,39],"color"),n("magenta",[35,39],"color"),n("cyan",[36,39],"color"),n("white",[37,39],"color"),n("gray",[90,39],"color"),n("grey",[90,39],"color"),n("bgBlack",[40,49],"bg"),n("bgRed",[41,49],"bg"),n("bgGreen",[42,49],"bg"),n("bgYellow",[43,49],"bg"),n("bgBlue",[44,49],"bg"),n("bgMagenta",[45,49],"bg"),n("bgCyan",[46,49],"bg"),n("bgWhite",[47,49],"bg"),n("blackBright",[90,39],"bright"),n("redBright",[91,39],"bright"),n("greenBright",[92,39],"bright"),n("yellowBright",[93,39],"bright"),n("blueBright",[94,39],"bright"),n("magentaBright",[95,39],"bright"),n("cyanBright",[96,39],"bright"),n("whiteBright",[97,39],"bright"),n("bgBlackBright",[100,49],"bgBright"),n("bgRedBright",[101,49],"bgBright"),n("bgGreenBright",[102,49],"bgBright"),n("bgYellowBright",[103,49],"bgBright"),n("bgBlueBright",[104,49],"bgBright"),n("bgMagentaBright",[105,49],"bgBright"),n("bgCyanBright",[106,49],"bgBright"),n("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=yJe,t.hasColor=t.hasAnsi=s=>(t.ansiRegex.lastIndex=0,typeof s=="string"&&s!==""&&t.ansiRegex.test(s)),t.alias=(s,o)=>{let a=typeof o=="string"?t[o]:o;if(typeof a!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");a.stack||(Reflect.defineProperty(a,"name",{value:s}),t.styles[s]=a,a.stack=[s]),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(l){t.alias(s,l)},get(){let l=c=>i(c,l.stack);return Reflect.setPrototypeOf(l,t),l.stack=this.stack?this.stack.concat(a.stack):a.stack,l}})},t.theme=s=>{if(!IJe(s))throw new TypeError("Expected theme to be an object");for(let o of Object.keys(s))t.alias(o,s[o]);return t},t.alias("unstyle",s=>typeof s=="string"&&s!==""?(t.ansiRegex.lastIndex=0,s.replace(t.ansiRegex,"")):""),t.alias("noop",s=>s),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=Xie(),t.define=n,t};hN.exports=Zie();hN.exports.create=Zie});var Mi=E(bt=>{"use strict";var wJe=Object.prototype.toString,Cs=js(),$ie=!1,pN=[],ene={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};bt.longest=(t,e)=>t.reduce((r,i)=>Math.max(r,e?i[e].length:i.length),0);bt.hasColor=t=>!!t&&Cs.hasColor(t);var N0=bt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);bt.nativeType=t=>wJe.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");bt.isAsyncFn=t=>bt.nativeType(t)==="asyncfunction";bt.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";bt.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;bt.scrollDown=(t=[])=>[...t.slice(1),t[0]];bt.scrollUp=(t=[])=>[t.pop(),...t];bt.reorder=(t=[])=>{let e=t.slice();return e.sort((r,i)=>r.index>i.index?1:r.index{let i=t.length,n=r===i?0:r<0?i-1:r,s=t[e];t[e]=t[n],t[n]=s};bt.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};bt.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};bt.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:i=` -`+r,width:n=80}=e;n-=((i+r).match(/[^\S\n]/g)||[]).length;let o=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,a=t.trim(),l=new RegExp(o,"g"),c=a.match(l)||[];return c=c.map(u=>u.replace(/\n$/,"")),e.padEnd&&(c=c.map(u=>u.padEnd(n," "))),e.padStart&&(c=c.map(u=>u.padStart(n," "))),r+c.join(i)};bt.unmute=t=>{let e=t.stack.find(i=>Cs.keys.color.includes(i));return e?Cs[e]:t.stack.find(i=>i.slice(2)==="bg")?Cs[e.slice(2)]:i=>i};bt.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";bt.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i));if(e){let i=Cs["bg"+bt.pascal(e)];return i?i.black:t}let r=t.stack.find(i=>i.slice(0,2)==="bg");return r?Cs[r.slice(2).toLowerCase()]||t:Cs.none};bt.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i)),r=t.stack.find(i=>i.slice(0,2)==="bg");if(e&&!r)return Cs[ene[e]||e];if(r){let i=r.slice(2).toLowerCase(),n=ene[i];return n&&Cs["bg"+bt.pascal(n)]||t}return Cs.none};bt.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),i=e>=12?"pm":"am";e=e%12;let n=e===0?12:e,s=r<10?"0"+r:r;return n+":"+s+" "+i};bt.set=(t={},e="",r)=>e.split(".").reduce((i,n,s,o)=>{let a=o.length-1>s?i[n]||{}:r;return!bt.isObject(a)&&s{let i=t[e]==null?e.split(".").reduce((n,s)=>n&&n[s],t):t[e];return i==null?r:i};bt.mixin=(t,e)=>{if(!N0(t))return e;if(!N0(e))return t;for(let r of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,r);if(i.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&N0(i.value)){let n=Object.getOwnPropertyDescriptor(t,r);N0(n.value)?t[r]=bt.merge({},t[r],e[r]):Reflect.defineProperty(t,r,i)}else Reflect.defineProperty(t,r,i);else Reflect.defineProperty(t,r,i)}return t};bt.merge=(...t)=>{let e={};for(let r of t)bt.mixin(e,r);return e};bt.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let i of Object.keys(r)){let n=r[i];typeof n=="function"?bt.define(t,i,n.bind(e)):bt.define(t,i,n)}};bt.onExit=t=>{let e=(r,i)=>{$ie||($ie=!0,pN.forEach(n=>n()),r===!0&&process.exit(128+i))};pN.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),pN.push(t)};bt.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};bt.defineExport=(t,e,r)=>{let i;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(n){i=n},get(){return i?i():r()}})}});var tne=E(nf=>{"use strict";nf.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};nf.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};nf.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};nf.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};nf.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var nne=E((dCt,rne)=>{"use strict";var ine=require("readline"),BJe=tne(),QJe=/^(?:\x1b)([a-zA-Z0-9])$/,bJe=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,vJe={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function SJe(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function xJe(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var L0=(t="",e={})=>{let r,i=P({name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t},e);if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=""+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=i.sequence||""),i.sequence=i.sequence||t||i.name,t==="\r")i.raw=void 0,i.name="return";else if(t===` -`)i.name="enter";else if(t===" ")i.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x7F"||t==="\b")i.name="backspace",i.meta=t.charAt(0)==="";else if(t===""||t==="")i.name="escape",i.meta=t.length===2;else if(t===" "||t===" ")i.name="space",i.meta=t.length===2;else if(t<="")i.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),i.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")i.name="number";else if(t.length===1&&t>="a"&&t<="z")i.name=t;else if(t.length===1&&t>="A"&&t<="Z")i.name=t.toLowerCase(),i.shift=!0;else if(r=QJe.exec(t))i.meta=!0,i.shift=/^[A-Z]$/.test(r[1]);else if(r=bJe.exec(t)){let n=[...t];n[0]===""&&n[1]===""&&(i.option=!0);let s=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),o=(r[3]||r[5]||1)-1;i.ctrl=!!(o&4),i.meta=!!(o&10),i.shift=!!(o&1),i.code=s,i.name=vJe[s],i.shift=SJe(s)||i.shift,i.ctrl=xJe(s)||i.ctrl}return i};L0.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let i=ine.createInterface({terminal:!0,input:r});ine.emitKeypressEvents(r,i);let n=(a,l)=>e(a,L0(a,l),i),s=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",n),i.resume(),()=>{r.isTTY&&r.setRawMode(s),r.removeListener("keypress",n),i.pause(),i.close()}};L0.action=(t,e,r)=>{let i=P(P({},BJe),r);return e.ctrl?(e.action=i.ctrl[e.name],e):e.option&&i.option?(e.action=i.option[e.name],e):e.shift?(e.action=i.shift[e.name],e):(e.action=i.keys[e.name],e)};rne.exports=L0});var one=E((CCt,sne)=>{"use strict";sne.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let i=e[r];typeof i=="number"&&(i={interval:i}),kJe(t,r,i)}};function kJe(t,e,r={}){let i=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},n=r.interval||120;i.frames=r.frames||[],i.loading=!0;let s=setInterval(()=>{i.ms=Date.now()-i.start,i.tick++,t.render()},n);return i.stop=()=>{i.loading=!1,clearInterval(s)},Reflect.defineProperty(i,"interval",{value:s}),t.once("close",()=>i.stop()),i.stop}});var lne=E((mCt,ane)=>{"use strict";var{define:PJe,width:DJe}=Mi(),Ane=class{constructor(e){let r=e.options;PJe(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=DJe(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e=P({},this);return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};ane.exports=Ane});var une=E((ECt,cne)=>{"use strict";var dN=Mi(),yi=js(),CN={default:yi.noop,noop:yi.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||dN.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||dN.complement(this.primary)},primary:yi.cyan,success:yi.green,danger:yi.magenta,strong:yi.bold,warning:yi.yellow,muted:yi.dim,disabled:yi.gray,dark:yi.dim.gray,underline:yi.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};CN.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(yi.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(yi.visible=t.styles.visible);let e=dN.merge({},CN,t.styles);delete e.merge;for(let r of Object.keys(yi))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});for(let r of Object.keys(yi.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});return e};cne.exports=CN});var fne=E((ICt,gne)=>{"use strict";var mN=process.platform==="win32",Ka=js(),RJe=Mi(),EN=_(P({},Ka.symbols),{upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Ka.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Ka.symbols.question,submitted:Ka.symbols.check,cancelled:Ka.symbols.cross},separator:{pending:Ka.symbols.pointerSmall,submitted:Ka.symbols.middot,cancelled:Ka.symbols.middot},radio:{off:mN?"( )":"\u25EF",on:mN?"(*)":"\u25C9",disabled:mN?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]});EN.merge=t=>{let e=RJe.merge({},Ka.symbols,EN,t.symbols);return delete e.merge,e};gne.exports=EN});var pne=E((yCt,hne)=>{"use strict";var FJe=une(),NJe=fne(),LJe=Mi();hne.exports=t=>{t.options=LJe.merge({},t.options.theme,t.options),t.symbols=NJe.merge(t.options),t.styles=FJe.merge(t.options)}});var Ine=E((dne,Cne)=>{"use strict";var mne=process.env.TERM_PROGRAM==="Apple_Terminal",TJe=js(),IN=Mi(),Ys=Cne.exports=dne,Ir="[",Ene="\x07",yN=!1,HA=Ys.code={bell:Ene,beep:Ene,beginning:`${Ir}G`,down:`${Ir}J`,esc:Ir,getPosition:`${Ir}6n`,hide:`${Ir}?25l`,line:`${Ir}2K`,lineEnd:`${Ir}K`,lineStart:`${Ir}1K`,restorePosition:Ir+(mne?"8":"u"),savePosition:Ir+(mne?"7":"s"),screen:`${Ir}2J`,show:`${Ir}?25h`,up:`${Ir}1J`},Lc=Ys.cursor={get hidden(){return yN},hide(){return yN=!0,HA.hide},show(){return yN=!1,HA.show},forward:(t=1)=>`${Ir}${t}C`,backward:(t=1)=>`${Ir}${t}D`,nextLine:(t=1)=>`${Ir}E`.repeat(t),prevLine:(t=1)=>`${Ir}F`.repeat(t),up:(t=1)=>t?`${Ir}${t}A`:"",down:(t=1)=>t?`${Ir}${t}B`:"",right:(t=1)=>t?`${Ir}${t}C`:"",left:(t=1)=>t?`${Ir}${t}D`:"",to(t,e){return e?`${Ir}${e+1};${t+1}H`:`${Ir}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?Lc.left(-t):t>0?Lc.right(t):"",r+=e<0?Lc.up(-e):e>0?Lc.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:i,input:n,prompt:s,size:o,value:a}=t;if(i=IN.isPrimitive(i)?String(i):"",n=IN.isPrimitive(n)?String(n):"",a=IN.isPrimitive(a)?String(a):"",o){let l=Ys.cursor.up(o)+Ys.cursor.to(s.length),c=n.length-r;return c>0&&(l+=Ys.cursor.left(c)),l}if(a||e){let l=!n&&!!i?-i.length:-n.length+r;return e&&(l-=e.length),n===""&&i&&!s.includes(i)&&(l+=i.length),Ys.cursor.move(l)}}},wN=Ys.erase={screen:HA.screen,up:HA.up,down:HA.down,line:HA.line,lineEnd:HA.lineEnd,lineStart:HA.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return wN.line+Lc.to(0);let r=s=>[...TJe.unstyle(s)].length,i=t.split(/\r?\n/),n=0;for(let s of i)n+=1+Math.floor(Math.max(r(s)-1,0)/e);return(wN.line+Lc.prevLine()).repeat(n-1)+wN.line+Lc.to(0)}});var sf=E((wCt,yne)=>{"use strict";var MJe=require("events"),wne=js(),BN=nne(),OJe=one(),KJe=lne(),UJe=pne(),bn=Mi(),Tc=Ine(),T0=class extends MJe{constructor(e={}){super();this.name=e.name,this.type=e.type,this.options=e,UJe(this),OJe(this),this.state=new KJe(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=GJe(this.options.margin),this.setMaxListeners(0),HJe(this)}async keypress(e,r={}){this.keypressed=!0;let i=BN.action(e,BN(e,r),this.options.actions);this.state.keypress=i,this.emit("keypress",e,i),this.emit("state",this.state.clone());let n=this.options[i.action]||this[i.action]||this.dispatch;if(typeof n=="function")return await n.call(this,e,i);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Tc.code.beep)}cursorHide(){this.stdout.write(Tc.cursor.hide()),bn.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Tc.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Tc.cursor.down(e)+Tc.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:i}=this.sections(),{cursor:n,initial:s="",input:o="",value:a=""}=this,l=this.state.size=i.length,c={after:r,cursor:n,initial:s,input:o,prompt:e,size:l,value:a},u=Tc.cursor.restore(c);u&&this.stdout.write(u)}sections(){let{buffer:e,input:r,prompt:i}=this.state;i=wne.unstyle(i);let n=wne.unstyle(e),s=n.indexOf(i),o=n.slice(0,s),l=n.slice(s).split(` -`),c=l[0],u=l[l.length-1],f=(i+(r?" "+r:"")).length,h=fe.call(this,this.value),this.result=()=>i.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let n=r.onSubmit.bind(this),s=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await n(this.name,this.value,this),s())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,i){let{options:n,state:s,symbols:o,timers:a}=this,l=a&&a[e];s.timer=l;let c=n[e]||s[e]||o[e],u=r&&r[e]!=null?r[e]:await c;if(u==="")return u;let g=await this.resolve(u,s,r,i);return!g&&r&&r[e]?this.resolve(c,s,r,i):g}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,i=this.state;return i.timer=r,bn.isObject(e)&&(e=e[i.status]||e.pending),bn.hasColor(e)?e:(this.styles[i.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return bn.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,i=this.state;i.timer=r;let n=e[i.status]||e.pending||i.separator,s=await this.resolve(n,i);return bn.isObject(s)&&(s=s[i.status]||s.pending),bn.hasColor(s)?s:this.styles.muted(s)}async pointer(e,r){let i=await this.element("pointer",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=this.index===r,o=s?n.primary:c=>c,a=await this.resolve(i[s?"on":"off"]||i,this.state),l=bn.hasColor(a)?a:o(a);return s?l:" ".repeat(a.length)}}async indicator(e,r){let i=await this.element("indicator",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=e.enabled===!0,o=s?n.success:n.dark,a=i[s?"on":"off"]||i;return bn.hasColor(a)?a:o(a)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return bn.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return bn.resolve(this,e,...r)}get base(){return T0.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||bn.height(this.stdout,25)}get width(){return this.options.columns||bn.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,i=[r,e].find(this.isValue.bind(this));return this.isValue(i)?i:this.initial}static get prompt(){return e=>new this(e).run()}};function HJe(t){let e=n=>t[n]===void 0||typeof t[n]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],i=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(t.options)){if(r.includes(n)||/^on[A-Z]/.test(n))continue;let s=t.options[n];typeof s=="function"&&e(n)?i.includes(n)||(t[n]=s.bind(t)):typeof t[n]!="function"&&(t[n]=s)}}function GJe(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=n=>n%2==0?` -`:" ",i=[];for(let n=0;n<4;n++){let s=r(n);e[n]?i.push(s.repeat(e[n])):i.push("")}return i}yne.exports=T0});var bne=E((BCt,Bne)=>{"use strict";var jJe=Mi(),Qne={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return Qne.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};Bne.exports=(t,e={})=>{let r=jJe.merge({},Qne,e.roles);return r[t]||r.default}});var sC=E((QCt,vne)=>{"use strict";var YJe=js(),qJe=sf(),JJe=bne(),M0=Mi(),{reorder:QN,scrollUp:WJe,scrollDown:zJe,isObject:Sne,swap:VJe}=M0,xne=class extends qJe{constructor(e){super(e);this.cursorHide(),this.maxSelected=e.maxSelected||Infinity,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:i,suggest:n}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(s=>s.enabled=!1),typeof n!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Sne(r)&&(r=Object.keys(r)),Array.isArray(r)?(i!=null&&(this.index=this.findIndex(i)),r.forEach(s=>this.enable(this.find(s))),await this.render()):(i!=null&&(r=i),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let i=[],n=0,s=async(o,a)=>{typeof o=="function"&&(o=await o.call(this)),o instanceof Promise&&(o=await o);for(let l=0;l(this.state.loadingChoices=!1,o))}async toChoice(e,r,i){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value;if(e=JJe(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,M0.define(e,"parent",i),e.level=i?i.level+1:1,e.indent==null&&(e.indent=i?i.indent+" ":e.indent||""),e.path=i?i.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,YJe.unstyle(e.message).length));let o=P({},e);return e.reset=(a=o.input,l=o.value)=>{for(let c of Object.keys(o))e[c]=o[c];e.input=a,e.value=l},n==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,i){let n=await this.toChoice(e,r,i);return this.choices.push(n),this.index=this.choices.length-1,this.limit=this.choices.length,n}async newItem(e,r,i){let n=P({name:"New choice name?",editable:!0,newChoice:!0},e),s=await this.addChoice(n,r,i);return s.updateChoice=()=>{delete s.newChoice,s.name=s.message=s.input,s.input="",s.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(n=>this.toggle(n,r));let i=e.parent;for(;i;){let n=i.choices.filter(s=>this.isDisabled(s));i.enabled=n.every(s=>s.enabled===!0),i=i.parent}return kne(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=i=>{let n=Number(i);if(n>this.choices.length-1)return this.alert();let s=this.focused,o=this.choices.find(a=>n===a.index);if(!o.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(o)===-1){let a=QN(this.choices),l=a.indexOf(o);if(s.index>l){let c=a.slice(l,l+this.limit),u=a.filter(g=>!c.includes(g));this.choices=c.concat(u)}else{let c=l-this.limit+1;this.choices=a.slice(c).concat(a.slice(0,c))}}return this.index=this.choices.indexOf(o),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(i=>{let n=this.choices.length,s=this.num,o=(a=!1,l)=>{clearTimeout(this.numberTimeout),a&&(l=r(s)),this.num="",i(l)};if(s==="0"||s.length===1&&Number(s+"0")>n)return o(!0);if(Number(s)>n)return o(!1,this.alert());this.numberTimeout=setTimeout(()=>o(!0),this.delay)})}home(){return this.choices=QN(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=QN(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===0?this.alert():e>r&&i===0?this.scrollUp():(this.index=(i-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===r-1?this.alert():e>r&&i===r-1?this.scrollDown():(this.index=(i+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=WJe(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=zJe(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){VJe(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(i=>e[i]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(i=>!this.isDisabled(i));return e.enabled&&r.every(i=>this.isEnabled(i))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((i,n)=>(i[n]=this.find(n,r),i),{})}filter(e,r){let i=(a,l)=>[a.name,l].includes(e),n=typeof e=="function"?e:i,o=(this.options.multiple?this.state._choices:this.choices).filter(n);return r?o.map(a=>a[r]):o}find(e,r){if(Sne(e))return r?e[r]:e;let i=(o,a)=>[o.name,a].includes(e),n=typeof e=="function"?e:i,s=this.choices.find(n);if(s)return r?s[r]:s}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(o=>o.newChoice))return this.alert();let{reorder:r,sort:i}=this.options,n=this.multiple===!0,s=this.selected;return s===void 0?this.alert():(Array.isArray(s)&&r!==!1&&i!==!0&&(s=M0.reorder(s)),this.value=n?s.map(o=>o.name):s.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(i=>i.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let i=this.find(r);i&&(this.initial=i.index,this.focus(i,!0))}}}get choices(){return kne(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:i}=this,n=e.limit||this._limit||r.limit||i.length;return Math.min(n,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function kne(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(M0.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let i=r.choices.filter(n=>!t.isDisabled(n));r.enabled=i.every(n=>n.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}vne.exports=xne});var GA=E((bCt,Pne)=>{"use strict";var _Je=sC(),bN=Mi(),Dne=class extends _Je{constructor(e){super(e);this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let i=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!bN.hasColor(i)&&(i=this.styles.strong(i)),this.resolve(i,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await this.indicator(e,r)+(e.pad||""),o=await this.resolve(e.hint,this.state,e,r);o&&!bN.hasColor(o)&&(o=this.styles.muted(o));let a=this.indent(e),l=await this.choiceMessage(e,r),c=()=>[this.margin[3],a+n+s,l,this.margin[1],o].filter(Boolean).join(" ");return e.role==="heading"?c():e.disabled?(bN.hasColor(l)||(l=this.styles.disabled(l)),c()):(i&&(l=this.styles.em(l)),c())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(s,o)=>await this.renderChoice(s,o)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let i=this.margin[0]+r.join(` -`),n;return this.options.choicesHeader&&(n=await this.resolve(this.options.choicesHeader,this.state)),[n,i].filter(Boolean).join(` -`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,i="",n=await this.header(),s=await this.prefix(),o=await this.separator(),a=await this.message();this.options.promptLine!==!1&&(i=[s,a,o,""].join(" "),this.state.prompt=i);let l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();l&&(i+=l),c&&!i.includes(c)&&(i+=" "+c),e&&!l&&!u.trim()&&this.multiple&&this.emptyError!=null&&(i+=this.styles.danger(this.emptyError)),this.clear(r),this.write([n,i,u,g].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Pne.exports=Dne});var Nne=E((vCt,Rne)=>{"use strict";var XJe=GA(),ZJe=(t,e)=>{let r=t.toLowerCase();return i=>{let s=i.toLowerCase().indexOf(r),o=e(i.slice(s,s+r.length));return s>=0?i.slice(0,s)+o+i.slice(s+r.length):i}},Fne=class extends XJe{constructor(e){super(e);this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:i}=this.state;return this.input=i.slice(0,r)+e+i.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let i=e.toLowerCase();return r.filter(n=>n.message.toLowerCase().includes(i))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=ZJe(this.input,e),i=this.choices;this.choices=i.map(n=>_(P({},n),{message:r(n.message)})),await super.render(),this.choices=i}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Rne.exports=Fne});var SN=E((SCt,Lne)=>{"use strict";var vN=Mi();Lne.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:i="",pos:n,showCursor:s=!0,color:o}=e,a=o||t.styles.placeholder,l=vN.inverse(t.styles.primary),c=d=>l(t.styles.black(d)),u=r,g=" ",f=c(g);if(t.blink&&t.blink.off===!0&&(c=d=>d,f=""),s&&n===0&&i===""&&r==="")return c(g);if(s&&n===0&&(r===i||r===""))return c(i[0])+a(i.slice(1));i=vN.isPrimitive(i)?`${i}`:"",r=vN.isPrimitive(r)?`${r}`:"";let h=i&&i.startsWith(r)&&i!==r,p=h?c(i[r.length]):f;if(n!==r.length&&s===!0&&(u=r.slice(0,n)+c(r[n])+r.slice(n+1),p=""),s===!1&&(p=""),h){let d=t.styles.unstyle(u+p);return u+p+a(i.slice(d.length))}return u+p}});var O0=E((xCt,Tne)=>{"use strict";var $Je=js(),e3e=GA(),t3e=SN(),Mne=class extends e3e{constructor(e){super(_(P({},e),{multiple:!0}));this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:i,input:n}=r;return r.value=r.input=n.slice(0,i)+e+n.slice(i),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:i}=e;return e.value=e.input=i.slice(0,r-1)+i.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:i}=e;if(i[r]===void 0)return this.alert();let n=`${i}`.slice(0,r)+`${i}`.slice(r+1);return e.value=e.input=n,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:i}=e;return r&&r.startsWith(i)&&i!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let i=await this.resolve(e.separator,this.state,e,r)||":";return i?" "+this.styles.disabled(i):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:i,styles:n}=this,{cursor:s,initial:o="",name:a,hint:l,input:c=""}=e,{muted:u,submitted:g,primary:f,danger:h}=n,p=l,d=this.index===r,m=e.validate||(()=>!0),I=await this.choiceSeparator(e,r),B=e.message;this.align==="right"&&(B=B.padStart(this.longest+1," ")),this.align==="left"&&(B=B.padEnd(this.longest+1," "));let b=this.values[a]=c||o,R=c?"success":"dark";await m.call(e,b,this.state)!==!0&&(R="danger");let L=n[R](await this.indicator(e,r))+(e.pad||""),K=this.indent(e),J=()=>[K,L,B+I,c,p].filter(Boolean).join(" ");if(i.submitted)return B=$Je.unstyle(B),c=g(c),p="",J();if(e.format)c=await e.format.call(this,c,e,r);else{let ne=this.styles.muted;c=t3e(this,{input:c,initial:o,pos:s,showCursor:d,color:ne})}return this.isValue(c)||(c=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[a]=await e.result.call(this,b,e,r)),d&&(B=f(B)),e.error?c+=(c?" ":"")+h(e.error.trim()):e.hint&&(c+=(c?" ":"")+u(e.hint.trim())),J()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Tne.exports=Mne});var xN=E((kCt,One)=>{"use strict";var r3e=O0(),i3e=()=>{throw new Error("expected prompt to have a custom authenticate method")},Kne=(t=i3e)=>{class e extends r3e{constructor(i){super(i)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(i){return Kne(i)}}return e};One.exports=Kne()});var Gne=E((PCt,Une)=>{"use strict";var n3e=xN();function s3e(t,e){return t.username===this.options.username&&t.password===this.options.password}var Hne=(t=s3e)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(i){return this.options.showPassword?i:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(i.length))}}];class r extends n3e.create(t){constructor(n){super(_(P({},n),{choices:e}))}static create(n){return Hne(n)}}return r};Une.exports=Hne()});var K0=E((DCt,jne)=>{"use strict";var o3e=sf(),{isPrimitive:a3e,hasColor:A3e}=Mi(),Yne=class extends o3e{constructor(e){super(e);this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:i}=this;return i.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return a3e(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return A3e(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=this.styles.muted(this.default),a=[i,s,o,n].filter(Boolean).join(" ");this.state.prompt=a;let l=await this.header(),c=this.value=this.cast(e),u=await this.format(c),g=await this.error()||await this.hint(),f=await this.footer();g&&!a.includes(g)&&(u+=" "+g),a+=" "+u,this.clear(r),this.write([l,a,f].filter(Boolean).join(` -`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};jne.exports=Yne});var Wne=E((RCt,qne)=>{"use strict";var l3e=K0(),Jne=class extends l3e{constructor(e){super(e);this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};qne.exports=Jne});var _ne=E((FCt,zne)=>{"use strict";var c3e=GA(),u3e=O0(),of=u3e.prototype,Vne=class extends c3e{constructor(e){super(_(P({},e),{multiple:!0}));this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let i=this.focused,n=i.parent||{};return!i.editable&&!n.editable&&(e==="a"||e==="i")?super[e]():of.dispatch.call(this,e,r)}append(e,r){return of.append.call(this,e,r)}delete(e,r){return of.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?of.next.call(this):super.next()}prev(){return this.focused.editable?of.prev.call(this):super.prev()}async indicator(e,r){let i=e.indicator||"",n=e.editable?i:super.indicator(e,r);return await this.resolve(n,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?of.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let i=r.parent?this.value[r.parent.name]:this.value;if(r.editable?i=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(i=r.enabled===!0),e=await r.validate(i,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};zne.exports=Vne});var Mc=E((NCt,Xne)=>{"use strict";var g3e=sf(),f3e=SN(),{isPrimitive:h3e}=Mi(),Zne=class extends g3e{constructor(e){super(e);this.initial=h3e(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let i=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!i||i.name!=="return")?this.append(` -`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:i}=this.state;this.input=`${i}`.slice(0,r)+e+`${i}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),i=this.input.slice(e),n=r.split(" ");this.state.clipboard.push(n.pop()),this.input=n.join(" "),this.cursor=this.input.length,this.input+=i,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):f3e(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),i=await this.separator(),n=await this.message(),s=[r,n,i].filter(Boolean).join(" ");this.state.prompt=s;let o=await this.header(),a=await this.format(),l=await this.error()||await this.hint(),c=await this.footer();l&&!a.includes(l)&&(a+=" "+l),s+=" "+a,this.clear(e),this.write([o,s,c].filter(Boolean).join(` -`)),this.restore()}};Xne.exports=Zne});var ese=E((LCt,$ne)=>{"use strict";var p3e=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),U0=t=>p3e(t).filter(Boolean);$ne.exports=(t,e={},r="")=>{let{past:i=[],present:n=""}=e,s,o;switch(t){case"prev":case"undo":return s=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:U0([r,...s]),present:o};case"next":case"redo":return s=i.slice(1),o=i[0]||"",{past:U0([...s,r]),present:o};case"save":return{past:U0([...i,r]),present:""};case"remove":return o=U0(i.filter(a=>a!==r)),n="",o.length&&(n=o.pop()),{past:o,present:n};default:throw new Error(`Invalid action: "${t}"`)}}});var kN=E((TCt,tse)=>{"use strict";var d3e=Mc(),rse=ese(),ise=class extends d3e{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let i=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:i},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=rse(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=rse("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};tse.exports=ise});var ose=E((MCt,nse)=>{"use strict";var C3e=Mc(),sse=class extends C3e{format(){return""}};nse.exports=sse});var lse=E((OCt,ase)=>{"use strict";var m3e=Mc(),Ase=class extends m3e{constructor(e={}){super(e);this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};ase.exports=Ase});var gse=E((KCt,cse)=>{"use strict";var E3e=GA(),use=class extends E3e{constructor(e){super(_(P({},e),{multiple:!0}))}};cse.exports=use});var PN=E((UCt,fse)=>{"use strict";var I3e=Mc(),hse=class extends I3e{constructor(e={}){super(P({style:"number"},e));this.min=this.isValue(e.min)?this.toNumber(e.min):-Infinity,this.max=this.isValue(e.max)?this.toNumber(e.max):Infinity,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,i=this.toNumber(this.input);return i>this.max+r?this.alert():(this.input=`${i+r}`,this.render())}down(e){let r=e||this.minor,i=this.toNumber(this.input);return ithis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};fse.exports=hse});var dse=E((HCt,pse)=>{pse.exports=PN()});var Ese=E((GCt,Cse)=>{"use strict";var y3e=Mc(),mse=class extends y3e{constructor(e){super(e);this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};Cse.exports=mse});var Bse=E((jCt,Ise)=>{"use strict";var w3e=js(),B3e=sC(),yse=Mi(),wse=class extends B3e{constructor(e={}){super(e);this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` - `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((i,n)=>({name:n+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let i=0;i=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){if(this.scaleKey===!1||this.state.submitted)return"";let e=this.scale.map(i=>` ${i.name} - ${i.message}`);return["",...e].map(i=>this.styles.muted(i)).join(` -`)}renderScaleHeading(e){let r=this.scale.map(l=>l.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let i=this.scaleLength-r.join("").length,n=Math.round(i/(r.length-1)),o=r.map(l=>this.styles.strong(l)).join(" ".repeat(n)),a=" ".repeat(this.widths[0]);return this.margin[3]+a+this.margin[1]+o}scaleIndicator(e,r,i){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,i);let n=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):n?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let i=e.scale.map(s=>this.scaleIndicator(e,s,r)),n=this.term==="Hyper"?"":" ";return i.join(n+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await e.hint;s&&!yse.hasColor(s)&&(s=this.styles.muted(s));let o=p=>this.margin[3]+p.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,l=this.indent(e),c=await this.resolve(e.message,this.state,e,r),u=await this.renderScale(e,r),g=this.margin[1]+this.margin[3];this.scaleLength=w3e.unstyle(u).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-g.length);let h=yse.wordWrap(c,{width:this.widths[0],newline:a}).split(` -`).map(p=>o(p)+this.margin[1]);return i&&(u=this.styles.info(u),h=h.map(p=>this.styles.info(p))),h[0]+=u,this.linebreak&&h.push(""),[l+n,h.join(` -`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(n,s)=>await this.renderChoice(n,s)),r=await Promise.all(e),i=await this.renderScaleHeading();return this.margin[0]+[i,...r.map(n=>n.join(" "))].join(` -`)}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o="";this.options.promptLine!==!1&&(o=[i,s,n,""].join(" "),this.state.prompt=o);let a=await this.header(),l=await this.format(),c=await this.renderScaleKey(),u=await this.error()||await this.hint(),g=await this.renderChoices(),f=await this.footer(),h=this.emptyError;l&&(o+=l),u&&!o.includes(u)&&(o+=" "+u),e&&!l&&!g.trim()&&this.multiple&&h!=null&&(o+=this.styles.danger(h)),this.clear(r),this.write([a,o,c,g,f].filter(Boolean).join(` -`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};Ise.exports=wse});var Sse=E((YCt,Qse)=>{"use strict";var bse=js(),Q3e=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",vse=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Q3e(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},b3e=async(t={},e={},r=i=>i)=>{let i=new Set,n=t.fields||[],s=t.template,o=[],a=[],l=[],c=1;typeof s=="function"&&(s=await s());let u=-1,g=()=>s[++u],f=()=>s[u+1],h=p=>{p.line=c,o.push(p)};for(h({type:"bos",value:""});uR.name===I.key);I.field=n.find(R=>R.name===I.key),b||(b=new vse(I),a.push(b)),b.lines.push(I.line-1);continue}let d=o[o.length-1];d.type==="text"&&d.line===c?d.value+=p:h({type:"text",value:p})}return h({type:"eos",value:""}),{input:s,tabstops:o,unique:i,keys:l,items:a}};Qse.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),i=P(P({},e.values),e.initial),{tabstops:n,items:s,keys:o}=await b3e(e,i),a=DN("result",t,e),l=DN("format",t,e),c=DN("validate",t,e,!0),u=t.isValue.bind(t);return async(g={},f=!1)=>{let h=0;g.required=r,g.items=s,g.keys=o,g.output="";let p=async(B,b,R,H)=>{let L=await c(B,b,R,H);return L===!1?"Invalid field "+R.name:L};for(let B of n){let b=B.value,R=B.key;if(B.type!=="template"){b&&(g.output+=b);continue}if(B.type==="template"){let H=s.find(q=>q.name===R);e.required===!0&&g.required.add(H.name);let L=[H.input,g.values[H.value],H.value,b].find(u),J=(H.field||{}).message||B.inner;if(f){let q=await p(g.values[R],g,H,h);if(q&&typeof q=="string"||q===!1){g.invalid.set(R,q);continue}g.invalid.delete(R);let A=await a(g.values[R],g,H,h);g.output+=bse.unstyle(A);continue}H.placeholder=!1;let ne=b;b=await l(b,g,H,h),L!==b?(g.values[R]=L,b=t.styles.typing(L),g.missing.delete(J)):(g.values[R]=void 0,L=`<${J}>`,b=t.styles.primary(L),H.placeholder=!0,g.required.has(R)&&g.missing.add(J)),g.missing.has(J)&&g.validating&&(b=t.styles.warning(L)),g.invalid.has(R)&&g.validating&&(b=t.styles.danger(L)),h===g.index&&(ne!==b?b=t.styles.underline(b):b=t.styles.heading(bse.unstyle(b))),h++}b&&(g.output+=b)}let d=g.output.split(` -`).map(B=>" "+B),m=s.length,I=0;for(let B of s)g.invalid.has(B.name)&&B.lines.forEach(b=>{d[b][0]===" "&&(d[b]=g.styles.danger(g.symbols.bullet)+d[b].slice(1))}),t.isValue(g.values[B.name])&&I++;return g.completed=(I/m*100).toFixed(0),g.output=d.join(` -`),g.output}};function DN(t,e,r,i){return(n,s,o,a)=>typeof o.field[t]=="function"?o.field[t].call(e,n,s,o,a):[i,n].find(l=>e.isValue(l))}});var Pse=E((qCt,xse)=>{"use strict";var v3e=js(),S3e=Sse(),x3e=sf(),kse=class extends x3e{constructor(e){super(e);this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await S3e(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let i=this.getItem(),n=i.input.slice(0,this.cursor),s=i.input.slice(this.cursor);this.input=i.input=`${n}${e}${s}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),i=e.input.slice(0,this.cursor-1);this.input=e.input=`${i}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:i,size:n}=this.state,s=[this.options.newline,` -`].find(B=>B!=null),o=await this.prefix(),a=await this.separator(),l=await this.message(),c=[o,l,a].filter(Boolean).join(" ");this.state.prompt=c;let u=await this.header(),g=await this.error()||"",f=await this.hint()||"",h=i?"":await this.interpolate(this.state),p=this.state.key=r[e]||"",d=await this.format(p),m=await this.footer();d&&(c+=" "+d),f&&!d&&this.state.completed===0&&(c+=" "+f),this.clear(n);let I=[u,c,h,m,g.trim()];this.write(I.filter(Boolean).join(s)),this.restore()}getItem(e){let{items:r,keys:i,index:n}=this.state,s=r.find(o=>o.name===i[n]);return s&&s.input!=null&&(this.input=s.input,this.cursor=s.cursor),s}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:i,values:n}=this.state;if(e.size){let a="";for(let[l,c]of e)a+=`Invalid ${l}: ${c} -`;return this.state.error=a,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let o=v3e.unstyle(i).split(` -`).map(a=>a.slice(1)).join(` -`);return this.value={values:n,result:o},super.submit()}};xse.exports=kse});var Fse=E((JCt,Dse)=>{"use strict";var k3e="(Use + to sort)",P3e=GA(),Rse=class extends P3e{constructor(e){super(_(P({},e),{reorder:!1,sort:!0,multiple:!0}));this.state.hint=[this.options.hint,k3e].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let i=await super.renderChoice(e,r),n=this.symbols.identicalTo+" ",s=this.index===r&&this.sorting?this.styles.muted(n):" ";return this.options.drag===!1&&(s=""),this.options.numbered===!0?s+`${r+1} - `+i:s+i}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Dse.exports=Rse});var Tse=E((WCt,Nse)=>{"use strict";var D3e=sC(),Lse=class extends D3e{constructor(e={}){super(e);if(this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(i=>this.styles.muted(i)),this.state.header=r.join(` - `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let i of r)i.scale=R3e(5,this.options),i.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],i=r.selected;return e.scale.forEach(n=>n.selected=!1),r.selected=!i,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=this.term==="Hyper",s=n?9:8,o=n?"":" ",a=this.symbols.line.repeat(s),l=" ".repeat(s+(n?0:1)),c=b=>(b?this.styles.success("\u25C9"):"\u25EF")+o,u=r+1+".",g=i?this.styles.heading:this.styles.noop,f=await this.resolve(e.message,this.state,e,r),h=this.indent(e),p=h+e.scale.map((b,R)=>c(R===e.scaleIdx)).join(a),d=b=>b===e.scaleIdx?g(b):b,m=h+e.scale.map((b,R)=>d(R)).join(l),I=()=>[u,f].filter(Boolean).join(" "),B=()=>[I(),p,m," "].filter(Boolean).join(` -`);return i&&(p=this.styles.cyan(p),m=this.styles.cyan(m)),B()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(i,n)=>await this.renderChoice(i,n)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` -`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=[i,s,n].filter(Boolean).join(" ");this.state.prompt=o;let a=await this.header(),l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();(l||!c)&&(o+=" "+l),c&&!o.includes(c)&&(o+=" "+c),e&&!l&&!u&&this.multiple&&this.type!=="form"&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([o,a,u,g].filter(Boolean).join(` -`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function R3e(t,e={}){if(Array.isArray(e.scale))return e.scale.map(i=>P({},i));let r=[];for(let i=1;i{Mse.exports=kN()});var Hse=E((VCt,Kse)=>{"use strict";var F3e=K0(),Use=class extends F3e{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=i=>this.styles.primary.underline(i);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),i=await this.prefix(),n=await this.separator(),s=await this.message(),o=await this.format(),a=await this.error()||await this.hint(),l=await this.footer(),c=[i,s,n,o].join(" ");this.state.prompt=c,a&&!c.includes(a)&&(c+=" "+a),this.clear(e),this.write([r,c,l].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Kse.exports=Use});var Yse=E((_Ct,Gse)=>{"use strict";var N3e=GA(),jse=class extends N3e{constructor(e){super(e);if(typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let i=await super.toChoices(e,r);if(i.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>i.length)throw new Error("Please specify the index of the correct answer from the list of choices");return i}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};Gse.exports=jse});var Jse=E(RN=>{"use strict";var qse=Mi(),ti=(t,e)=>{qse.defineExport(RN,t,e),qse.defineExport(RN,t.toLowerCase(),e)};ti("AutoComplete",()=>Nne());ti("BasicAuth",()=>Gne());ti("Confirm",()=>Wne());ti("Editable",()=>_ne());ti("Form",()=>O0());ti("Input",()=>kN());ti("Invisible",()=>ose());ti("List",()=>lse());ti("MultiSelect",()=>gse());ti("Numeral",()=>dse());ti("Password",()=>Ese());ti("Scale",()=>Bse());ti("Select",()=>GA());ti("Snippet",()=>Pse());ti("Sort",()=>Fse());ti("Survey",()=>Tse());ti("Text",()=>Ose());ti("Toggle",()=>Hse());ti("Quiz",()=>Yse())});var zse=E((ZCt,Wse)=>{Wse.exports={ArrayPrompt:sC(),AuthPrompt:xN(),BooleanPrompt:K0(),NumberPrompt:PN(),StringPrompt:Mc()}});var aC=E(($Ct,Vse)=>{"use strict";var _se=require("assert"),FN=require("events"),jA=Mi(),No=class extends FN{constructor(e,r){super();this.options=jA.merge({},e),this.answers=P({},r)}register(e,r){if(jA.isObject(e)){for(let n of Object.keys(e))this.register(n,e[n]);return this}_se.equal(typeof r,"function","expected a function");let i=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[i]=r:this.prompts[i]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(jA.merge({},this.options,r))}catch(i){return Promise.reject(i)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=jA.merge({},this.options,e),{type:i,name:n}=e,{set:s,get:o}=jA;if(typeof i=="function"&&(i=await i.call(this,e,this.answers)),!i)return this.answers[n];_se(this.prompts[i],`Prompt "${i}" is not registered`);let a=new this.prompts[i](r),l=o(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",u=>{this.emit("answer",n,u,a),s(this.answers,n,u)});let c=a.emit.bind(a);return a.emit=(...u)=>(this.emit.call(this,...u),c(...u)),this.emit("prompt",a,this),r.autofill&&l!=null?(a.value=a.input=l,r.autofill==="show"&&await a.submit()):l=a.value=await a.run(),l}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||sf()}static get prompts(){return Jse()}static get types(){return zse()}static get prompt(){let e=(r,...i)=>{let n=new this(...i),s=n.emit.bind(n);return n.emit=(...o)=>(e.emit(...o),s(...o)),n.prompt(r)};return jA.mixinEmitter(e,new FN),e}};jA.mixinEmitter(No,new FN);var NN=No.prompts;for(let t of Object.keys(NN)){let e=t.toLowerCase(),r=i=>new NN[t](i).run();No.prompt[e]=r,No[e]=r,No[t]||Reflect.defineProperty(No,t,{get:()=>NN[t]})}var oC=t=>{jA.defineExport(No,t,()=>No.types[t])};oC("ArrayPrompt");oC("AuthPrompt");oC("BooleanPrompt");oC("NumberPrompt");oC("StringPrompt");Vse.exports=No});var loe=E((Gmt,Aoe)=>{function K3e(t,e){for(var r=-1,i=t==null?0:t.length;++r{var U3e=XB(),H3e=jg();function G3e(t,e,r,i){var n=!r;r||(r={});for(var s=-1,o=e.length;++s{var j3e=Af(),Y3e=zg();function q3e(t,e){return t&&j3e(e,Y3e(e),t)}uoe.exports=q3e});var hoe=E((qmt,foe)=>{function J3e(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}foe.exports=J3e});var doe=E((Jmt,poe)=>{var W3e=Gs(),z3e=u0(),V3e=hoe(),_3e=Object.prototype,X3e=_3e.hasOwnProperty;function Z3e(t){if(!W3e(t))return V3e(t);var e=z3e(t),r=[];for(var i in t)i=="constructor"&&(e||!X3e.call(t,i))||r.push(i);return r}poe.exports=Z3e});var lf=E((Wmt,Coe)=>{var $3e=bF(),eWe=doe(),tWe=Hd();function rWe(t){return tWe(t)?$3e(t,!0):eWe(t)}Coe.exports=rWe});var Eoe=E((zmt,moe)=>{var iWe=Af(),nWe=lf();function sWe(t,e){return t&&iWe(e,nWe(e),t)}moe.exports=sWe});var UN=E((hC,cf)=>{var oWe=Ks(),Ioe=typeof hC=="object"&&hC&&!hC.nodeType&&hC,yoe=Ioe&&typeof cf=="object"&&cf&&!cf.nodeType&&cf,aWe=yoe&&yoe.exports===Ioe,woe=aWe?oWe.Buffer:void 0,Boe=woe?woe.allocUnsafe:void 0;function AWe(t,e){if(e)return t.slice();var r=t.length,i=Boe?Boe(r):new t.constructor(r);return t.copy(i),i}cf.exports=AWe});var HN=E((Vmt,Qoe)=>{function lWe(t,e){var r=-1,i=t.length;for(e||(e=Array(i));++r{var cWe=Af(),uWe=f0();function gWe(t,e){return cWe(t,uWe(t),e)}boe.exports=gWe});var H0=E((Xmt,Soe)=>{var fWe=vF(),hWe=fWe(Object.getPrototypeOf,Object);Soe.exports=hWe});var GN=E((Zmt,xoe)=>{var pWe=$B(),dWe=H0(),CWe=f0(),mWe=RF(),EWe=Object.getOwnPropertySymbols,IWe=EWe?function(t){for(var e=[];t;)pWe(e,CWe(t)),t=dWe(t);return e}:mWe;xoe.exports=IWe});var Poe=E(($mt,koe)=>{var yWe=Af(),wWe=GN();function BWe(t,e){return yWe(t,wWe(t),e)}koe.exports=BWe});var Roe=E((eEt,Doe)=>{var QWe=DF(),bWe=GN(),vWe=lf();function SWe(t){return QWe(t,vWe,bWe)}Doe.exports=SWe});var Noe=E((tEt,Foe)=>{var xWe=Object.prototype,kWe=xWe.hasOwnProperty;function PWe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&kWe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}Foe.exports=PWe});var G0=E((rEt,Loe)=>{var Toe=kF();function DWe(t){var e=new t.constructor(t.byteLength);return new Toe(e).set(new Toe(t)),e}Loe.exports=DWe});var Ooe=E((iEt,Moe)=>{var RWe=G0();function FWe(t,e){var r=e?RWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}Moe.exports=FWe});var Uoe=E((nEt,Koe)=>{var NWe=/\w*$/;function LWe(t){var e=new t.constructor(t.source,NWe.exec(t));return e.lastIndex=t.lastIndex,e}Koe.exports=LWe});var qoe=E((sEt,Hoe)=>{var Goe=ac(),joe=Goe?Goe.prototype:void 0,Yoe=joe?joe.valueOf:void 0;function TWe(t){return Yoe?Object(Yoe.call(t)):{}}Hoe.exports=TWe});var jN=E((oEt,Joe)=>{var MWe=G0();function OWe(t,e){var r=e?MWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}Joe.exports=OWe});var zoe=E((aEt,Woe)=>{var KWe=G0(),UWe=Ooe(),HWe=Uoe(),GWe=qoe(),jWe=jN(),YWe="[object Boolean]",qWe="[object Date]",JWe="[object Map]",WWe="[object Number]",zWe="[object RegExp]",VWe="[object Set]",_We="[object String]",XWe="[object Symbol]",ZWe="[object ArrayBuffer]",$We="[object DataView]",e8e="[object Float32Array]",t8e="[object Float64Array]",r8e="[object Int8Array]",i8e="[object Int16Array]",n8e="[object Int32Array]",s8e="[object Uint8Array]",o8e="[object Uint8ClampedArray]",a8e="[object Uint16Array]",A8e="[object Uint32Array]";function l8e(t,e,r){var i=t.constructor;switch(e){case ZWe:return KWe(t);case YWe:case qWe:return new i(+t);case $We:return UWe(t,r);case e8e:case t8e:case r8e:case i8e:case n8e:case s8e:case o8e:case a8e:case A8e:return jWe(t,r);case JWe:return new i;case WWe:case _We:return new i(t);case zWe:return HWe(t);case VWe:return new i;case XWe:return GWe(t)}}Woe.exports=l8e});var Xoe=E((AEt,Voe)=>{var c8e=Gs(),_oe=Object.create,u8e=function(){function t(){}return function(e){if(!c8e(e))return{};if(_oe)return _oe(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();Voe.exports=u8e});var YN=E((lEt,Zoe)=>{var g8e=Xoe(),f8e=H0(),h8e=u0();function p8e(t){return typeof t.constructor=="function"&&!h8e(t)?g8e(f8e(t)):{}}Zoe.exports=p8e});var eae=E((cEt,$oe)=>{var d8e=jd(),C8e=Qo(),m8e="[object Map]";function E8e(t){return C8e(t)&&d8e(t)==m8e}$oe.exports=E8e});var nae=E((uEt,tae)=>{var I8e=eae(),y8e=A0(),rae=l0(),iae=rae&&rae.isMap,w8e=iae?y8e(iae):I8e;tae.exports=w8e});var oae=E((gEt,sae)=>{var B8e=jd(),Q8e=Qo(),b8e="[object Set]";function v8e(t){return Q8e(t)&&B8e(t)==b8e}sae.exports=v8e});var cae=E((fEt,aae)=>{var S8e=oae(),x8e=A0(),Aae=l0(),lae=Aae&&Aae.isSet,k8e=lae?x8e(lae):S8e;aae.exports=k8e});var pae=E((hEt,uae)=>{var P8e=Gd(),D8e=loe(),R8e=XB(),F8e=goe(),N8e=Eoe(),L8e=UN(),T8e=HN(),M8e=voe(),O8e=Poe(),K8e=FF(),U8e=Roe(),H8e=jd(),G8e=Noe(),j8e=zoe(),Y8e=YN(),q8e=As(),J8e=Od(),W8e=nae(),z8e=Gs(),V8e=cae(),_8e=zg(),X8e=lf(),Z8e=1,$8e=2,e4e=4,gae="[object Arguments]",t4e="[object Array]",r4e="[object Boolean]",i4e="[object Date]",n4e="[object Error]",fae="[object Function]",s4e="[object GeneratorFunction]",o4e="[object Map]",a4e="[object Number]",hae="[object Object]",A4e="[object RegExp]",l4e="[object Set]",c4e="[object String]",u4e="[object Symbol]",g4e="[object WeakMap]",f4e="[object ArrayBuffer]",h4e="[object DataView]",p4e="[object Float32Array]",d4e="[object Float64Array]",C4e="[object Int8Array]",m4e="[object Int16Array]",E4e="[object Int32Array]",I4e="[object Uint8Array]",y4e="[object Uint8ClampedArray]",w4e="[object Uint16Array]",B4e="[object Uint32Array]",rr={};rr[gae]=rr[t4e]=rr[f4e]=rr[h4e]=rr[r4e]=rr[i4e]=rr[p4e]=rr[d4e]=rr[C4e]=rr[m4e]=rr[E4e]=rr[o4e]=rr[a4e]=rr[hae]=rr[A4e]=rr[l4e]=rr[c4e]=rr[u4e]=rr[I4e]=rr[y4e]=rr[w4e]=rr[B4e]=!0;rr[n4e]=rr[fae]=rr[g4e]=!1;function j0(t,e,r,i,n,s){var o,a=e&Z8e,l=e&$8e,c=e&e4e;if(r&&(o=n?r(t,i,n,s):r(t)),o!==void 0)return o;if(!z8e(t))return t;var u=q8e(t);if(u){if(o=G8e(t),!a)return T8e(t,o)}else{var g=H8e(t),f=g==fae||g==s4e;if(J8e(t))return L8e(t,a);if(g==hae||g==gae||f&&!n){if(o=l||f?{}:Y8e(t),!a)return l?O8e(t,N8e(o,t)):M8e(t,F8e(o,t))}else{if(!rr[g])return n?t:{};o=j8e(t,g,a)}}s||(s=new P8e);var h=s.get(t);if(h)return h;s.set(t,o),V8e(t)?t.forEach(function(m){o.add(j0(m,e,r,m,t,s))}):W8e(t)&&t.forEach(function(m,I){o.set(I,j0(m,e,r,I,t,s))});var p=c?l?U8e:K8e:l?X8e:_8e,d=u?void 0:p(t);return D8e(d||t,function(m,I){d&&(I=m,m=t[I]),R8e(o,I,j0(m,e,r,I,t,s))}),o}uae.exports=j0});var qN=E((pEt,dae)=>{var Q4e=pae(),b4e=1,v4e=4;function S4e(t){return Q4e(t,b4e|v4e)}dae.exports=S4e});var mae=E((dEt,Cae)=>{var x4e=tF();function k4e(t,e,r){return t==null?t:x4e(t,e,r)}Cae.exports=k4e});var Qae=E((wEt,Bae)=>{function P4e(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Bae.exports=P4e});var vae=E((BEt,bae)=>{var D4e=xd(),R4e=zP();function F4e(t,e){return e.length<2?t:D4e(t,R4e(e,0,-1))}bae.exports=F4e});var xae=E((QEt,Sae)=>{var N4e=Gg(),L4e=Qae(),T4e=vae(),M4e=Sc();function O4e(t,e){return e=N4e(e,t),t=T4e(t,e),t==null||delete t[M4e(L4e(e))]}Sae.exports=O4e});var Pae=E((bEt,kae)=>{var K4e=xae();function U4e(t,e){return t==null?!0:K4e(t,e)}kae.exports=U4e});var Kae=E((tIt,Oae)=>{Oae.exports={name:"@yarnpkg/cli",version:"3.1.1",license:"BSD-2-Clause",main:"./sources/index.ts",dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/shell":"workspace:^",chalk:"^3.0.0","ci-info":"^3.2.0",clipanion:"^3.0.1",semver:"^7.1.2",tslib:"^1.13.0",typanion:"^3.3.0",yup:"^0.32.9"},devDependencies:{"@types/semver":"^7.1.0","@types/yup":"^0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2",typescript:"^4.5.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",types:"./lib/index.d.ts",bin:null},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=12 <14 || 14.2 - 14.9 || >14.10.0"}}});var iL=E((SBt,QAe)=>{"use strict";QAe.exports=function(e,r){r===!0&&(r=0);var i=e.indexOf("://"),n=e.substring(0,i).split("+").filter(Boolean);return typeof r=="number"?n[r]:n}});var nL=E((xBt,bAe)=>{"use strict";var sze=iL();function vAe(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=sze(t);return t=t.substring(t.indexOf("://")+3),vAe(e)?!0:t.indexOf("@"){"use strict";var oze=iL(),aze=nL(),Aze=require("querystring");function lze(t){t=(t||"").trim();var e={protocols:oze(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),i=-1,n=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(aze(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split("/"),e.protocol!=="file"?e.resource=s.shift():e.resource="",n=e.resource.split("@"),n.length===2&&(e.user=n[0],e.resource=n[1]),n=e.resource.split(":"),n.length===2&&(e.resource=n[0],n[1]?(e.port=Number(n[1]),isNaN(e.port)&&(e.port=null,s.unshift(n[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),n=e.pathname.split("#"),n.length===2&&(e.pathname=n[0],e.hash=n[1]),n=e.pathname.split("?"),n.length===2&&(e.pathname=n[0],e.search=n[1]),e.query=Aze.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}SAe.exports=lze});var DAe=E((PBt,kAe)=>{"use strict";var cze=typeof URL=="undefined"?require("url").URL:URL,PAe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t);kAe.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment),t=t.trim();let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new cze(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?![https?:]).)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];PAe(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])PAe(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}});var FAe=E((DBt,RAe)=>{"use strict";var uze=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},gze=xAe(),fze=DAe();function hze(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":uze(e))!=="object"&&(e={stripFragment:!1}),t=fze(t,e));var r=gze(t);return r}RAe.exports=hze});var TAe=E((RBt,NAe)=>{"use strict";var pze=FAe(),LAe=nL();function dze(t){var e=pze(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),LAe(e.protocols)||LAe(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}NAe.exports=dze});var OAe=E((FBt,MAe)=>{"use strict";var Cze=TAe();function sL(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=Cze(t),r=e.resource.split("."),i=null;switch(e.toString=function(l){return sL.stringify(this,l)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}else{i=e.name.split("/"),i.length===2?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}else{i=e.name.split("/"),i.length===5?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}default:i=e.name.split("/");var n=i.length-1;if(i.length>=2){var s=i.indexOf("blob",2),o=i.indexOf("tree",2),a=i.indexOf("commit",2);n=s>0?s-1:o>0?o-1:a>0?a-1:n,e.owner=i.slice(0,n).join("/"),e.name=i[n],a&&(e.commit=i[n+2])}e.ref="",e.filepathtype="",e.filepath="",i.length>n+2&&["blob","tree"].indexOf(i[n+1])>=0&&(e.filepathtype=i[n+1],e.ref=i[n+2],i.length>n+3&&(e.filepath=i.slice(n+3).join("/"))),e.organization=e.owner;break}return e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e}sL.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",i=t.user||"git",n=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+i+"@"+t.resource+r+"/"+t.full_name+n:i+"@"+t.resource+":"+t.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+t.resource+r+"/"+t.full_name+n;case"http":case"https":var s=t.token?mze(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+t.full_name+n;default:return t.href}};function mze(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}MAe.exports=sL});var NL=E((Obt,ole)=>{var Mze=jg(),Oze=Kg();function Kze(t,e,r){(r!==void 0&&!Oze(t[e],r)||r===void 0&&!(e in t))&&Mze(t,e,r)}ole.exports=Kze});var Ale=E((Kbt,ale)=>{var Uze=Hd(),Hze=Qo();function Gze(t){return Hze(t)&&Uze(t)}ale.exports=Gze});var ule=E((Ubt,lle)=>{var jze=Ac(),Yze=H0(),qze=Qo(),Jze="[object Object]",Wze=Function.prototype,zze=Object.prototype,cle=Wze.toString,Vze=zze.hasOwnProperty,_ze=cle.call(Object);function Xze(t){if(!qze(t)||jze(t)!=Jze)return!1;var e=Yze(t);if(e===null)return!0;var r=Vze.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&cle.call(r)==_ze}lle.exports=Xze});var LL=E((Hbt,gle)=>{function Zze(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}gle.exports=Zze});var hle=E((Gbt,fle)=>{var $ze=Af(),e5e=lf();function t5e(t){return $ze(t,e5e(t))}fle.exports=t5e});var Ile=E((jbt,ple)=>{var dle=NL(),r5e=UN(),i5e=jN(),n5e=HN(),s5e=YN(),Cle=Pd(),mle=As(),o5e=Ale(),a5e=Od(),A5e=zB(),l5e=Gs(),c5e=ule(),u5e=c0(),Ele=LL(),g5e=hle();function f5e(t,e,r,i,n,s,o){var a=Ele(t,r),l=Ele(e,r),c=o.get(l);if(c){dle(t,r,c);return}var u=s?s(a,l,r+"",t,e,o):void 0,g=u===void 0;if(g){var f=mle(l),h=!f&&a5e(l),p=!f&&!h&&u5e(l);u=l,f||h||p?mle(a)?u=a:o5e(a)?u=n5e(a):h?(g=!1,u=r5e(l,!0)):p?(g=!1,u=i5e(l,!0)):u=[]:c5e(l)||Cle(l)?(u=a,Cle(a)?u=g5e(a):(!l5e(a)||A5e(a))&&(u=s5e(l))):g=!1}g&&(o.set(l,u),n(u,l,i,s,o),o.delete(l)),dle(t,r,u)}ple.exports=f5e});var Ble=E((Ybt,yle)=>{var h5e=Gd(),p5e=NL(),d5e=BF(),C5e=Ile(),m5e=Gs(),E5e=lf(),I5e=LL();function wle(t,e,r,i,n){t!==e&&d5e(e,function(s,o){if(n||(n=new h5e),m5e(s))C5e(t,e,o,r,wle,i,n);else{var a=i?i(I5e(t,o),s,o+"",t,e,n):void 0;a===void 0&&(a=s),p5e(t,o,a)}},E5e)}yle.exports=wle});var ble=E((qbt,Qle)=>{var y5e=e0(),w5e=nF(),B5e=sF();function Q5e(t,e){return B5e(w5e(t,e,y5e),t+"")}Qle.exports=Q5e});var Sle=E((Jbt,vle)=>{var b5e=Kg(),v5e=Hd(),S5e=kd(),x5e=Gs();function k5e(t,e,r){if(!x5e(r))return!1;var i=typeof e;return(i=="number"?v5e(r)&&S5e(e,r.length):i=="string"&&e in r)?b5e(r[e],t):!1}vle.exports=k5e});var kle=E((Wbt,xle)=>{var P5e=ble(),D5e=Sle();function R5e(t){return P5e(function(e,r){var i=-1,n=r.length,s=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(s=t.length>3&&typeof s=="function"?(n--,s):void 0,o&&D5e(r[0],r[1],o)&&(s=n<3?void 0:s,n=1),e=Object(e);++i{var F5e=Ble(),N5e=kle(),L5e=N5e(function(t,e,r){F5e(t,e,r)});Ple.exports=L5e});var Wle=E(($vt,Jle)=>{var VL;Jle.exports=()=>(typeof VL=="undefined"&&(VL=require("zlib").brotliDecompressSync(Buffer.from("WxSteIBtDGp/1Rsko1+37VeQEmWILAWus2NIX9GQfXTamdxQ3DAVQZm/czI4dZrL7m2taiqoqpqbVIbMBngCLTBU/Z3f9icopIlQyRwSW0LmAd1xJBp0KShTakLvhLqFls9ECISbkeazt+a3Oz6WDcIQ0rgyHJrpCa+V4cmVQ2z4oM2JfN4j+7vMT96CNwkkkPaSsvdW3AmkfVxAApnLX5aOBjpOc3P7TNjG17v+MIABlUDmOqzCLLLbv11H5fHeze26jjOpgJE6N40WFR11m5pRVZE27TUgwrj1KxBDRB2mWGZPkat662N5RXbtr37ttfl5OkO+WOsjtp6CdnBKLX6mPgUXYbPeQnK4HXKv21cNTTU/x/thkJk1y4lIlXAEX2X5tnKBomsuEuC/3L/Kl6Djv67fzqYtzB3ZIfxZGZV/UVGEKpxXKOofHL63VOt0JTRRECeeZkOI2lsusUvit9l8Rgd4KcD+a6reezk9CohA64NZQ9UjO9Y2FA2HXpJXJtl7X5d93/58LZOCHFNmJNnm9NZxSuNKhWvm4hEGZ/UClh42aRS/vqnf77VZ9fwoZhBOL0qrl7KcXvJXWUBfGKx7D/27W4BcZUhgbakekjx1KunF96Ywq5naq6kYVY9yxv8gYRE0HApxX06hcmX/37dZ/fPzdeNZ0JvIcpZt7N4IhO7USQgH06uLsRXrARoM8rFEqlwzDGw3R0OYgB9g61P17dVUZ+d7BqHZ2XiEQ0iV9aEAEnTOqy3r+Z06w0o844wwrVRWlBK7/K4eKTEzN01fqlXV3/T3KXQIkM0YgRbQpkbwRIn3x4ODflri+GZ3k2zbbTslJW4Ei6ggvik8fNbr+uV2Zt5/eXStdt9OHJATA2YHDkgmZbOYj94QwWzZlqlngRfnXpKUIu5H2RZ/PPwFXGaGOb6qrl6yUmkixBsgNDEqIowBIcRS7fnIFdr9O+DSFmK5YFO/LgkI8dYp8oVL+VEyrT8edveb2N4ZfHyvuiRaSMLVWEnwjZB1tcKfyCCSluPHN7aOhw7+zFo7vhkGGAVqQCq6GebH2A0Vty/5YeL8/+Xivfe/C2nLXZ4ZjeRRLMM4UYjZpeZWNgZC64BL901c/fG4BvgzXCVZSdwmBdX1lHJj+j6y4rQBym7qWq/Tvmwd7gdKUeCTLmTZO51mlwdnC2fkcK1lPb8YQ9XyhBo19o7sQBSVX44tGG0TcqBRcMgB6yluQRRh/v/3fmrV7UEKSpSXsoxr44bGjtorQYhljBkMe8w4Z5+7xe+iFLaEiCA6SYBcRbLETlImjTLXMff9+P9HAIoIgEogwMwmIalaxXIsa7WUbdzMmWlPZtYPhj2aBaEaMLONGxk3bv/7SrX/n56TmUiQokzJ9dxU9a9vZx0A0u5f0/Ux/+XMvXOFkedkxiUB8F0RAOPLIBlREqW4ZVG6jew6JwFKJ0G6CqTpuiClukXK9r2S61aE7Nf03eiN/2DyY17vjf6f97OZf+/6ff//m5p96XtVAAiSbciWme6xrfHf+RRk6xtngvyvEd+7t950vfeqVlUFcBooADsAiN4hQfYXAZDns0GpCqTOASDNfjZntEuOZWsUUN9S0gSaXS+yu8+ozdge22uMOfm3NltjM2fCjTba89PNfviDJNkk2DQzNgk3XIiv/dSGSEaaB39dTooAl1joCp8rYFjVmBrhO1WZ45+Pe5pu50Hz7nhg8DdqbTGzbFvMKMgSSyDgBKMqTtKkB44swltPb1/+vj6FYK7hSpa3O0I013J+1amboZ6Z/kQ7KyRrXcXNygPNQwtElsInw/XrdQtagJZkefQccxSg9i5404ZHt94+JHifEPhtHUmAkDVYYYUksBVZKsPBOMWFgrjQO6/dyrJjAD3/+X9a5JziuKNDzAwjEioR1KjWaNllVxIqwwxq9I35fxLnnAu/HwvRf/SNC8IML5jifKfvv0/X6esvHjz4gQkOUUCDAhrOoMGDU0o/Y1SbpNoHcKCaCh4EHDhw0gKiKSDAwMAgIDvte/69nn2fb36HsBATDFHhQoULFSYxxAQnmKCACxUqVIhEhYvJhz5WWxQVvSPMR9zdt0AgSiAQiBIIBAKBQCAQiBKIEiVSINrSRUVdTQPy0oICBgYGBtbLwKCA9TIwMDAoYL3qJYMCCRIkSBB6Jaht63uo6Xn7Of9rQdUiIhAIRERE6goRgYhAIBAIRIsWCEQEYua/bfVQ1LfjulFS4idUWhBlKBMsjBxn0M3Ddc/wmdBIlwGR92IfIabqvvzRKDyAm1VHB8psqZy0s+ARIAlBInhQqSBFtOAR8Co9/Q/kZAC39f+5E7mv5/nj7h4pG2MsiFY6FEmBgbiNSElFwniBsFgX2NeTy5DT1HAZIfeG4eRcSkttn424uBjyH2vseRUk5MsQEmMxfEgUrZ9Q28QbqSBtjd1HQ7Tkw44jIh7WFgJFMCHD60o1D2y+EeohORn3SU/lzN2/V1r8w/AersRQcK0kqunxZE8uB5WHc0dEfZYsN4+i332KIdR+k7LiczBrQroXTlf3rL/uext5prmtQodDD5NShZ8w4Q2QI+5ufL2BQUUdtwgXDP/4TGFjAyMhIxuS09G35PwXQLbxvSz8+ra4e8ZUOxiHYhte8OHidFn7G4eZZZenb2O+JYXLb59QC1CmmBWoN3OnSOlDM+myJilRxGmYv3niw+VHpTyr6QAejCSKR5wSxPbPLWbZ24iuceJ5Qj5Wgt2zRVDiEaR087Mu7cWwCExJonYpLQRNsqTtINZoD4iLWpuQG3zoeUXCgGaAITe3ex63YDLKN1pvaTjPfLJA+1E6Pw9NmLTzjgxHB0sCeWMrVqNS93bDGVagtNRyOZ4NKSMvLU/yljQ6T9wAvPOPoUrT45JAqa6UUkxItaSUijmS45rTLOKlYNssxz/9jMeA1h6R0ujE2+O28ZqGKF5FifNbHaUGF+qqTfu7pWSvOvQxS9Ogvo4YwMLPzHe7OBlNo8AIOlWyuWxgtQMdlXgjsTORc7vH67BpwYDaxh7z474L78YL68t54/pCM1ANIELWskaJsWksNuGYjvI/bm/+xGitR5ITpYkp14hIb8UDvNLHeG1SbVNv5IJJU3wt2hhsFbCH2rD3+hX8x5CYVM8kJcrECN9+uaH2vJD7V6oxa/QZsPH1w+N6Kb93hhZiwmER5DGAxHO8Ne0tZmqRsP29nnqzZk0AKx+88jUgPPQs1lgK0W5Dfy0IZjEK5E8tOGBtpfj3KUDr5iMalbMDCymR5VaZ7/t2WssfLxvD3WiizLYx/8to6UttEY1CNo0Q5rIoImysh85pvLqKx0aS7KXS/BcYNhOSudBJi+c9VZakneVYNxP9+jdbzjj/sofAmR5ZMAujINro9nHXBGpZa423z+FvrdD1hfb1vRiKlXjnNtoxOedJlZY9JUICxV1aundyeVqG2r2H+9BbK9lSDtGSl7SadVC8tlBRL6QkiAZSeUlo+eQoSGKalaeUmeiNkGr6k7hDLLzhcxTpGpORX0ucpCjltJ6Cv5x7Uj1uZUEXzjOFgra+JdJfGJdccYIEL0zuItNd2oGmTza13ZjsC37Bwn7RCCrrH7yFaC7ZavUbonkGisWywItXsv2eMESScyfh5TZTZQlB23nKGSjXFx1lfe81uoPpohbhGh6e+/5anaLUMhxGNYnQfGFZOQ0CDpxIFnHsqGIc+cwrdWCODnOpqb2R/ZGQnw+tkyMu2mj5jgbWBcPKjyLjHlw8S70NGRfnn2+NfJvlg0+aUS7vQSSI5NqnzTNCqP+AmqUcaSet+x7JxcnjppT827yQYjO4Ca2DfYDpB56ftmdvehJQpxlQA3rBM8632UD+Entiwsdt90oSx1IQ9iVr6Cf07MPK9iHhmclk06IhTW6p2czgb1gCiLNqouVJ604TSNFI1u/2EH2IVeF90fH1dfu8wEpVXvxGDna9g5hwQ+XHI1JCE80SKjfIASQG/cnx19eZGK4LpEVC8eBT3KikqASqOpNVnOp1LDedSF5N94W06lsLPTmTopQj5Vof0mLJu5JpqSsZ7qUAg3wMzGIqHFX8IP9UepIrE123utkwNmhtL61dzo+fWvMKEW345aTCjpw1nlBhmqCeaOSLDy1GJKGlrt628zAwoE2RPtc/OjWUbEv7zxfFrayCT4ktK1v/sK7pejeCT7laZK0m5YLxuiXXV2pAWSPjhOQJBplWvdQd4kxbgnw0/DysRonEi/mBArW9aPSC8tYSMxdvKh595MpYOYiy2BVAxguPmr5Y3rcYcJpGDokxr87ETiKlTfMlxalpvVdJH7kENHmEQjp5eTVmijTdTG19tfpMW1+vBgZUCV2CZGKYzZ9aZRJvrvFe3LMJFY2NPnHsL0rpiEl69qfBv6Nwm2Gq9GX0iGrKQUdtI/5cXuilS24aMhGyFiZ1CYy4IRFrnBUV80mrM4PFMDVVsb4+IG1wBU2F4aEjqShwAfxYZRdYB6aCoNmQl9gzy/y9DUUI3SCg2IJ2Zwteu5Pj1BoEfejrEWoKxF03L3pDI0XzJcr0qyRkvAgfn7QXVZZoFudTciMvoWxdH/iPiuRJO+7GevZHBhfArGFblIKT7RI17b78+mvtOGmviVZBk7M3Da9oUdN6p/cyFfvCJzB5sNt5Kk8roiyP+O73LkVy/HXP892mx83Zlgw0dXuI79bAPPMEejsLAi1ktp88bypucKxC+U0Kt+OV+qfa47btQl4lEQuaaa8RjAxjqfOOgpJQ9g/Lpbm1oPjIS2ImYG6q9OfLc2pjEXxwlTbMmIZbnjXpmtIUw/wn8s0KJjFPGm0q+BrytcLp80M+9EkV6u+ZglgdUY5bwos2ycS97EmFRmPxTx6P86B26oF5SCxLjgYnD/AYqSpC1guSVnn+wUCDEjGpC0r6DlmkPyhnHE/EfBpOzxhIXABSLRMsk8uzRIQ+73FOFBt7WvAOZ6Yya02BcfV0rJDdYfpKA0Mg1rXyb1t3DY1Gham2H1XNIv7EcLntxfZy4hwRhM1q3sf4QvSUhBJuRIX7oOp4vrOx1CLCQuEfawvYZyuKBZK71N8NLl+RusOX3w4mmI1NtnIysMJGpqi2oWB6hN/782965j0gZK8M9zWyYK/BLO6WO7Y05GQQ4AsuhxcKOLKYmOpnVTGRkND+E2O5YEpYQ8GfTtp7+wufu8rXaFMESoJq4fapIxX3R6Wa5i1HnFAVoaZhdY6FAW00MXtLBkB20CHDStt5VYoDYtpszaLFFdB6dpLJgKytPsQlRgxMM3MKebiEQVKZnws7zbU0RKLz95h2oh/LYgYuRFTncRx+WqTmWQRvjgi1oFDS+fqp9sPTpX42w9NRW0ToYoaWBVO0iG0RK6cW+nWTmeu8hId64vuh86aFBwV0FT+Wi/XRjHYUAeq+iQOB7iD2hwsWIfPKH6rchYVFlVO8Gsu1gVpldg36s3JNvTD7Ef5YZTgrdMVa8GK4b5XxRGPh1LbZIxkvbCxw9anNakZaG3Q1xDxF1qsb00G7Acl0HCyVh/l65Wh/XAgcHjWbHZ202Yj96V9l/mUcSOpKveeuhy0s7PJMj0bXYUvUZeMxb3CbXn8zeSzgzAjWYmnb24btNlEauKJO9qx+gS4l6CEzfhS2NwJPYe3+ujfKQ4kNcEM4vqNKqUM32fGzmfvaqiSDb4gOWLc4+B4loB/7g7A48POp/LHrL0A4rtdrMUltG8kMUHS6IFsjlQHyLnZwpX8VSr6Efuxvs20B/OxhZjz2oyRM9vtO8E2eCSpOKfwRJDKTEsc29IpD2PqNgFHN4Fi2O1YQTxjnaNJbLfU84dzyGIa7RNQCtxNTPz/dF77oh+jhhApQ2bnBdbJOCUYcbLcbLlqum3sTSVM3y6PumGK3tkLu6t9QsnnD2pJ71hdZtiLag2rrsZ3IaReJOuWFumNRI9+fN2KLolKtdjrIytrutNHG2yPRJDqA33hG9+KpvzdK2wQa2sqe+xKPm/skZxKIDjmDvUOLhtkP00c/TCLCRKth4nfDAJF4/onJFBDhqDNb9QkJ8b9HG7AW9IKUxCfpMCH6yTCIZEJpS+GWTfcmlksfv4baBjsyGlHH/fXKtlmPQMPDYk1nf9pjD1TC4SQMbnW4dMHiDOHqqWd6DllNnMp/3vnhVAeta+qKhS+XJAeBVY1jcVoJPTCHy/u/gPjFH4xtrlker8ndM4F55IdZJQ4MrMlwH6I32aQHsbXxZKcELJWtDbV3k6JfF80HGbOflCWqz7vRqRgPYzEd/RZz93p5wG8xGoUdk5QevEUheN1hhO1AjgpSFpsyCGgqbZfST4X4dkKVub53yuHabCG3hnaCdAsxxiXZxOrsTEUy6eA/U7MaHjYkQ9Te0ZSasJLdYtfRYvUMP6pgqnJB5UtouJIdctbkLZOasw2LsgqGslXxwLr8GdSBPWaZHmUM0A88sYnLcbXnjotFRrOFr8QlJ6kcsWAu59grhPFM2+bnELx/xQnNlX/3KgDyRnhvUR5bXWQeLo6/P3YSuv6eDvd0WsjTycW/lpbdcWuPt5Ub+CxK4i+O+iNaP1pWn0RncO6MmT6agZp88IP60/NQ3MN0YdxpJs1ZWj66qxx3+Cd1dDgzNVrATAo1LthgRkF3PbOqd26BHVcWTow9NfKcnn/hgX3z6DScXs0sq3s/DqcP5nrmh14889Q9blVaLZ9BvEheDMirkUhvtOTNCGRvoN9bZDDQH339eSS/kiP5NiD/jYb8GEGbkIMRyK8B+TNkoZLJ/+OrXc5zeld0pYWgsxLaulgsDFu0OcEvr6WZuLgqfOMmFWakB8XyPtJkyVRMQo96GEsmlOITLewYqTCbUWgxov/u6emUlp2GYk0qfOE3Bpfg7zA4F1fauNMSRZNnMhJEnC0t2NvkvPyZRPDoLFXPxGQy5yBCv9NDiCZhJsW6iR4L12ZwlqfFwpPrPXhAKspecjMSDTvJ7Vi28VmyhhaQm2SCf9LCe6cUkX5etAc7l4dosQE9VGbftIHoFG8hWhpD8V16J85EjkIyIulpb5YmCy/k0X/nMOOmcVCeEBFuOgYL9Ig5oOWMVAg3Az8qouqXaOlIg6BJ/KrIFh/RsiR1gqalz4G25hpyGYhTR9PzW4NcZt+j5ZJ1EBpjruWKNUIz5agLdGX+F1oqmyjsAkdToCb7PVpesZoKO+VUg+zUd2h5zToJu457C3SNv0PLW1a9YDdwT5Ab8ys09NSDYF8eyEywnx+oWmG/OlA1wn57oFJhvztggrvdB5xZ4NuTQGXzY6t+jc4/WpU5+48DqiTsvw+oorA/HOCy21wLEw3ufi84I7j7k8CE4LpKmBFcdy285MDdXnBEXHcSuLDAD5VwkQM/XAszC/ywF8xy4IeTwEyDe6yEivmsVXa8fxygzFUDqmFZj0YD+YqhcK/kS75aetE8MnR8yLllUM6WM0PgTHFsP5Xj5gt2X/94UiqsHtkVcp7rCzsj/jx5384GIHEDNgjtPzpYSeeoXYJvOGI4hVyhuKOCCh9ZkQa0qDDcGpoUaUD9HgWK6mIYbg2V1kfm8LszkHpfGigojgwFLHoa0SuIKBknFEbyi9M+4BSlwQxFEmptCoUnXFdxZFJQ4ddQaKm+ovY0NWfmUOzMUYGC/VBBcNZ+fEP0AhlUGGT7NTdWQpEG1EcMNCvmsSTCdaJFM3LdDmsFLaguhpVKn2Af4xNSWPxTdEZJ+xF+fNArFAxYZ4eBhY+DQgrGAzNW4Ql+De3VGjaGU6QBLSNpUGG4NVS1RMWu4YhBCr1C8Q42ijKcleUpapxRmKCCoiUJQ2AuYBVnRGChCNKgQoGVTmEHkuRTKK2h0GIVGGQlnaJoQfQirOIMjeKRcA0Di3MYNrAVFMmjunhWNls5+4wX7IcQ9gLpxRiikCsUKMTRPj6+IYWlpwn0DBxUrDTPXmMZXNndLmNXS7lFmR0RofDx4CudUdIEr1VhcD8cvW0TY+p65y83Woj0IZoCkqn+mzSJawd2ZVjBWtkgAq2PoMgFyd+0fsfEcAoiHPUKxRIIbhtA6yO4MDsqmk1YYYJQI7VAhEleV5GgsK3NxwfsSIhcMzIgzVFI1+ZMbfcg2xg4hWqR9BIWan/E0Hb0qDZ4KVWostR5tQo3reJAv/AZUhjx4Ca4dZhqqDVB0Q5RHswB+RlIwGw9Q1OFdz3YDzSJ243KZoWzz7zB/li7A+SKlkovJrkUK/qve569LZx+t8x+39BGAX+lM3pxLEHFZ1Qgaa7yJGi2MytbO/rawTubjwoJLeA/woeThzRr335pXBr7OnsquSYvwIfkCUpVdouihTcWVjREIFrMCLK3+9iDGDcben9PEXCFgl5BNAtiRYICRpWBq4YKiDP7KNzpCil4tQOvuUnCxU2Dcyy3Ait5AmyhypOSAgW3AzODM2wpjgpouzgn0y3ctFYuMwxvHg8YoeB6NjsuPA8niThtaLxaE908z98p9TtxKtO2Mwa1w35jEDkfF4bcwXBpvP5JF19SdHfwiOB2hId/5pEktBNA4Sl+Pd6bxdfTWY/HKBSERSLlpovSTrvh1ewpirAhAjPpJwpna/8deCehbockJlnNKhl1CAJCOnEcQ/JPOhFEHhSRcHw/R4iUusPHdxFWyBlFhhRQyCTshQSIaudX8vVW35oOEWwWu2hayCCz8noM7ayk01ZfN5XIG062hEjTnE4KhYhDbxDU4IIW3LWIIUeIH3MKNKJEDORb3dF8pG7+dOF+HGE/U/CjTxE43AQWz9RIEsaRaFCIaJjXaiJB5TXDDtqgDbN3lgk1jW18bxAOPMHwBA3QWFBSIRYkaAILqwSFWnvkWysU5sJ7DPyymV0vcqVRRJIwNMB7bJMOhkI5I4U3C2Q/mxiwvekmWtNxbyUaLM22Be0wuzRuikE9nc19LBXhWnWUf3v8k+YHFSGeovaEazuQ6mEp1Sk/n5Niz0JhgsKSowxcQ5Wtv1Hau9NLxx/mKiHHIpglkFOsZsXhQYh0vmoAh1C5DNaeJwRr5ai/3Wjvb1IRQ4SZFpythwUKOp9GUBHdaR9ghoL2spjG56hQsKTdWaXdB96NimYvc7NuiQrFOSoi8EZXtPR5S8jvmpKnJkoKi4qcrj6+E44y0dme5Z8pcOp2EmCf4QtYkkwas4A2y6EgzHyEZzONhzDqQAJgj5gRGLupu7KInqKAwryISyJ0JBG2VEkxClkAPx4hCd9yLsLYptFTCbgcpRPJh8YieF07WyGFd7FU16T7T5PUZFYD5+SWZyxY1GqF1RxGyJmyeZau5AbBJFlopupQtVRC+NFQdj4QGGF7UlV/OQLMrvdW0jXtLL2hvZ3AsfTr1dfFpvEpVxOw94gyQndLM5rocyNF3JhRgWrqDBEKJflXiLMYg9fQrIU2MmkUsBRGDP7mAnceyVaAij1o9Ewd2+3LSXFD5DnamJNPPnuGCdHKjtI4AGoPm2hXOTgohg+PL+16UEtiP6WEnTGPH5yo8dCjOvIGEHpiURHYSJMaJXCxD1TgCZ0Zkr4JDjfuPzQoiH4entrIgLJDibu7JUpHXPD/ldKWQU9DPXj+69PLu7YGXJlD6PUjwsjJx2Jxcw8aFob1ka3u658f77azyu6soXotb3fs4CflIbojwh2lFjwq3+1AOX+KQNNxRODvlxvFwXLYvr4SjvFkzfUit9jID/zSchMiUEOCXQgWKEaGk4fUwaY/iPlIccQrbjo53Lpnpt3M8xa9YG0Xpx2wBp6QYJP1ckOXVyHJ41m2zchXOWwioPA6ZxDoVNrkQF2Bw+wgyLD/07Di4GLhfzkCp5NYZCUTnFt8AtX93onXRA+N4zbBAwQ8ATpzzLRbYSRWq0p4tbmCkkm9C8kPyuBoTMpZIP65wgot2ADlqW5M9LiWqoq7PGc/xtB7tQVSVKWQ20V65DTPAhIElUWuVSm7s+QAcGjguMN526WuoDMbgpJuSUuLRJtlMpwSk2CzteGU8MYS6Bcc5n+ZDRlmbnkmIQr65j1Lf3cFJC9tSZDhTTOQfRNM7Y2V7DZ515oQfUpi37XR1ci4NFMoWokEa3sqtR8NFd0HCBXBfuo26O48UKmgY6hCTf3Sp6SOsRmr+Atw2LeYT5F1NbN33ttfjQ6ROPCzY3X78wTv/5y8UF/7+C2jRAJFL8Q+INUgkratGk9D15xuX05cjYKxYzPzDfdzHpvF++kFjZbqFPUzgUHbEbt2f2xVb+zIWbNANG9iZAWuGB1YQdtQVLRFJIoPVHZh1bLbuJ+uPwAiSqUla4whZ3dWuqhlQDsqJPn0aZO6lOcsJYMDYX+dL835XZWdQlwYSX5W+lXNiN36wZ2e00PNoPBXyi9TaWD8ZJq/vy3jr8YTmsN2M1icG/Tr1G/GOy/opKW/xSbOODQp3KqnhX27LLK2Dcj2zBve7zQySYzFGRG2A127D972f7fgTBVW1VdFOWoc9481j7Uo4HlZof3qUOC42iYPhwLp4r9m5rRTVSL89vg94I4TnTjUpsKA7urAFjf29rhpEg/exa0oMEJCJKdQHM7qw3FCbhTwTEJTBMuAXJvFYWjVDMyjjfZ9ItPG9vsdKf6xGdXa5CT+ofyAx8dWtsakIOMpWkwg3ERDCenytNzF4gBikixUhXlyfJFNEDelWFQusShJPX4a4FnlqXWgiL4dcoNOKaZEuTgV6zmF6dcE2VwSg0iz/psItCkvA8GdQFPwlud6uWuYC1gPFA+7Qcrf/7mMVveBuVY/flPtkQRZVDOjKMFpnxFCPCuXe2dPc0yCz6L/ilWUnkDAjnmrbrGnzwzaJq3bgaHwxMmRdKc/ovJrAdzh4I6CnBFpHG86V9h2+9GkfYliMHWAHJyITvX55Dmd51D42BuXNpcFRiJ/CiJqe/PO+xvpriIwarPuYrpb6luEU6jm7X2bGyKyWIjAaUzPDIX1610s+nuURLfNSN1Cy04CIUQxp5G0jOtLMXdWPXmyPQiDpZOBT97cCkwn8CsHFSNowxOgMSSzbknqyC7F1KAYwZRWQhhwOGFCcfEtYAFN5BNIenXE65un8LH3OoauFCOJi0v1GBHPvnnaf9mKhlPTrk2XS9RBhRG3oe12KCly4fQgJrX9K6p8PTCklpdS0bWyaUQGX8geeLMcUq02oXzqMHSaLAyFDUgS3mSbalj5aT43MnJsIASF4AUJ6V8fAMFOZ7UsHSZHFcKOk4FCdtgiHFJEJdMbDrUAnCcha2Pslsi9pHBMr7j86sBrJknHheOtmIKn0FXgfirBGJZ+3jxqPFsJqEVh2cI04nSpTpiNi+DpgSeEzhxEOBl6ex7OKfRmiYHzwaDIYvqhlPkxoT0/WEkUMxRjGQ5JMp9gbApwLOfKPUanRURjoxRk3vNQsON5ahm6RW9nzIB03rfwfqqMYMUjy1o9TJPoFxIy4rjRGsRyQhibZSJMVJNoN6EjSL6amiQCz9PCVwKzfz57yOnH0BTY6c84x5goTsSvmgD68FUTQF4JkyID6kwwmfCkRIG0Jn64HCK0IYqCxrJJYVls9BSZBPWQiJj9N2APJ2OSUkQw0Y5SKZOQogRehIKqeAYJDRlhaC/oPW6yzxiDQ5Uauo0IRk/Oupht01HsJ1Ji4I5dBIU/ABn8aaTg/p15lJe6Xs+eYfv5HiylyGuEbpX5d3BMqWHx8RoruADv2DfjSNG/VflIHqysM/Z9581qkQ/W7B6cDo4+vv/4n/JfxjiQ+IMBi0kybFWNiH5VCxyXFilgETk4J4Uy067B6Dq6SAtsiiANdvF+HmWfCSsbhisKUIkonECbxIz7f3CpKglzcQeBFA/sfD2j3gYDJohyBTkIeDBL53aUlSmbOwn1RD7M7vn8OU/Gd0dS3QXgRHKYHAqh3YoKEqjJj2SUiYYJkvSoRJtFYGXvSN4/88+Zn+lwm1boAnn0DQuiqu6wtLI8fh8LTjmwju0qniidBSr2UBy2kwzeiA4oqUNLZ+jF6GDfnbSZieCkNT0ezDAyeoYHYX1IWjgyjgITNVHzZ6i+/QZKDj0XpuksUJGqhyzDCRDUxekLDb8HDCOodoKhNIC5y8KtpMw+WNaXFd5uGAGr8EBnHBnYGLLPkzesixkSFKagoFvF66toERK37ENU4W0HEpGsb3cppf+QKNqLYzgrKsEgJiFrYYRQjR32sHAW+52R0CYJ7JG/QoaTIj2k8qYIImBgmG0MNSsWlPSuI0vc9MNJN7puQX41ul+GWvN1KKT6lBSc7c8uMMWveieJJ0/1KGjmUU8ZYdW6LAhRzqkP63m7kzGTM+jutqaOCEgZitQNSabdEcEJMv0Lwk65E1o3gaI3QrJPhzgAkKdUyAaoRsHhzmWGd5NSPiFDNsohxsTJPtGYfpQmKYTNJRNfgHyIZiIyzTQf8wjV3XbVpKAulJiWdejxNEYOGpU+kZNbo0LnfQ0qVhOYyYTdp/ltUxxSBhKW5E9EEIXeTmCipiE8AZNGyQyou0moP5r7gyGAF53AipkSyWP7vKIdCjUZJ7ec+PFsVCwNuF4W5l+WRHv7VjSqKzCyfs0sVrCUJYGs6v9N0h4d4AYEMPDTWFEMlMBZRy3Hho9d7l8tT/sg1gJ25qCXo3icQpsqrERDlB9BwjNaJmkxIR0v0ZQaqKQkne3IaLRPHahPpWnjyASdU4XmQ2vaU52uqYVWqSI9+pEnpzfkqeHJktH2uKumc1S/rSgBkXM3PaxoTwGUU6XBNUW3EnWwWMtIZhVWnL5jN9Ll+ZGlokfA/wwXgHwD5AGZgZ8KqET/PvQnllGc4AlEVmU4gxMgL8gtQ5HIJjpv+DKosj3h/bSG2BxLbABBrI8j5KJ5KHkuLwLDtEIWPlDEGNCoDKWEyxOAN5wIudUEESPxkk14CNSRVuBpSTkRYbIULcuwelELWeUGRaC0/naCI1A0OCIEBLOZtH9g0xDelqqaKV2WlJM7c+jCZxLR5IgFaf/OAl+VXktPVVQfzwx49/HX9mu2A/NOW4tfB9lui8aVPxEOK5hyZMiMQI4nVNs7EJglq2hNJJ6W0hAlgwwCtWo1VD9rLurfdL87Y51nu/Nmgpt4e3b0vLsAucCSV+0bvuOiJoHERWbdfVNzVeDPiep/HAGXrWNkQQ+H/uMkIrlR+C5oGbcSWJ2gR3FVDRcYpES8iYcvXFJ/uqjRNZ1EtnH6nsznx9XF7+nPHt2ViJJRmwkFNbbhcGuffs0K3A6RyHCELSMoZN8edyUhbGcjB6gnmxieOPvUUJcYjxwJ1NgK5I9jVXLovNFENzhNtt+s7D/T14EB/+/Nq2m3OkYZG17U7+pjG4F8GyrULLoZ5Xwm5OmYDFUaDeh4sY9ktMhXHKvjZuBSgs66AhjcroiabFh8G262/Oiv0djq5Z1EMcJIX3R4qv/n9s3onUYFAm8c6VrMzBpto8KGqPAcHR56Uqmx55tlj/5gVnEzEBAJI4npqFO/q6sREy36S/3zfwav9+9rRcrxcOBYkDnzkv6PnZW/3PqNB/0d7/woqzRuhRJ0wByXo6zTLAZixxe6T8Suu5wpp5BJLCjtISdlnEClUwNbOm340ND8gRJe1z/AYtsRcQXY/lnMXsqM5Bauyo41dPVVsAdvZENyP43eW7lgBGCotItQ4aOWdlhZDqlgMzkcCDkroW2RdrKXAquSGc4MkQuazwk7NlEMd9ki0EUmcsW61rKtZApSNmio1os86zjar1bzAQGylJ+YRHhXH0GA40VhEQHc4hqeDFRXGhGa2M4SuYjYxGleGw4zrSsvhCjMatNuIHQB4Ap9CyBJeAO/S++3KwRFDCFJpHKmZROEhJXocuFfV8WwEEiJ2gS7ihpmFoMQXVGbCRyaNhty1e2UEImVIF92cxSyigx0AMuDOF2yhrz+ERBpU6YRYLHMyfi49GRaj7XPoqoRGe5XFQWLw/C7beA5CMc+UmExi7LQYqyUDQLJ3OEJbqTxrI/VxQsAF7yxa+pjfbyALVqFfEAWC5Ao2wAf7xBfbLIqOY6HTj/uG67IiBkV8Xgazso1/lhuyOs1B4iPzAddtNyYm4Evp6A+SH39Yqxc7AMvKxanaIGzL37lUhZ7MzHax+LRgn1FLzR9vN8eCjuVa3IDIeniw30CF4MOT5TLCIFRGAkGsMRpHUV1MR/eh2dneu1p1dZwiHVqgHICMlqdfoSEG7mXfkCaB7DyLGdB2w2o7AoQMAKnljYeDZiGXMyLNb1Cw0yVjEuFGq/uVPOm6deB3TmqimJ3vFQTY4CcxKdO0cCWw1NJxCn6kPDl8kpK/QRimyV/yHBF66tL1cZydAzTxzBx0EZqH5ksoeOn4PCwWir8/HmreWNedZJL1/Paf4JkmdP47q25EoSs6Hj/5xRytXfOBsyIOISHUM2yTNgHl+vJ5Q5rIo8HrJZEFBKtkI5XCQzB5Tk/W+Z0pv2IZAvXBsZS2cqiyGsy7oC5GtL5FSAPSBT1hwposF+iqJqZaU6Ym6KnS460IhDSaHZm+pcDxm1V0xhLqxn3sSMWf8Cnt1+rq2cYbJv1mNP5K9hOZQl0Fx/CjzNAaj3l8WZeaw7tRvFtj+7V8+9RXPFmYbZktirxk46cpv1wHvnlyaFtTYo2dDBTpvvABcss1/t+4Aygc215wyIfpqU7VvYKAugQpX3YBjCvQDcguKXolu3aVqEa+0u7/GvNCkFkjXTk8qvDY3WOOpRxtHTkO4hB/WItcIV46XmYZ1rv55FSwxffF1xVSskVNYLKNNxqxYE8gmmB2WuMKXWln6DiV0RNy+xsA/AyNcBHgk3Z6BLuhDvqcOho+jgHThHBKNZvoE7bNDt7W95j6l5LgMQ9syOptuc/uct9lsE0TiKTgnC5HQCA6SdXsl3dRNbsFemIOuHAUZbDIQE8bmZ4p/bPmNv8Og4UlQv4BmcuuL7k5LIddzpdS/+45S66GjxKJhdicqdJiTi6egknu+V34+m/Up+YjWq0JlmK2YK94CensTGBf7WwLwmdRLOFmX2j6z1As3ca87khCB47lS34kylo5NyWzDc0py9udjZO7aiQV7RP6P1hAY7RcIGAqznPUolwwyrmJf/DbWmZNqGeAWPBf+PoJnAdzGQVWCOzoFBcDQnA7CrQGXs3OkMK7N24JNDhJ/ZfmCrLRYDBAzF7wBDqVNB30L/B0NXqle98Pmk3liC7yta23Fb+6ROYyiy3FpB/N03evRdN+Ep1bNvqIL+w+wb8ZQt7qU4HpP3Lv0jT84G0QkKo3ifbURwu9ZwHRex3AZX3qL9jX4YWbSzy345M9Q9ECwKQux9DJm4rH/lazWyHbexhsRWjNfFJSBZPMu2cm3+wZOhZwx4CMQ6rtLLdWtVsKcoMGf/YV7nNHi+mxZhwS00PvNigmOFHFxjGse0jPqsAAeMJHR8AOKU0L6d27iekziNnOJDX+cZDpg15w8pBi4HM9DTkOxOxsINlY83lOlLooiX9Vg1sp4TLlkFqxXQlS6Foj6mjCfVjW0H6O3d3zKmiXOpb7lanHzP/5WlmbMn/sAFaSqj9RYWsel5EfuiWxOBlcKOhH+AGp00HHLX4JVqTrQto5mIFnFadbJm9HbsB4NkQzU9mhbLvMzLv5HgyfMcPvxF4wRbbpW0TYsjlH5myjSoOWc8HpCGEl/c6ROfAHW/ltKNZXKL2YFVO/QUMyZr3jew58uBgDwb772q/cndjG2b0EFCa7tBTmoaZNRFfD8OwH5kmZN6/XQuu70HpQYADUQMXO1DKeiwPn6wdIkwotQw7zboYnwrmwY3nx5t5tYZM6fr9ZZCCAO8a0hUzJVwufdrOWgurmMs0LSEyTBPqYmP5Kr5vAvZgVeJQdJsXBPmacqtKTIGvp1IzGnmb5+1mS8ctGVxzWZxnQ2XoyXCnWWk+ZlbnJt9RedMtHzrFknrdp4TD2lxLILzMm8++wem0WstIBKom0ehGov5GWYZSllcon5TEj5CEyHt/lKi9ESRQGVXNfx6C4XyEr/GPRriABMQoUZtJNJhbBDgJNDKgDFQRk0Fy7zdagNCCj6Opc3eLoV50JeQOkTJex8tgBRqMnIl7jkXsV3BPG2CtAppJrzOLy7dGsa0UxeOw7oJk6ylBWO3SphypSMgc/3r5RFZE/U3gmiBi22O6tLuEch8RlEHSSnbyZknUze1RCLSNSnU3CGI9KacOmAFL0HW/vJDOLPFHmNh/iedfnnb7NORm+XljadR6ZFHRl+VJjsArGVo8gbVK4fIlM1Ezyvwa5K251MtKns/4cwt22NTX00HZXA3v9tLoAhsd7pSYDnc0+sTnEq4yBgKWnhL1DA5A6XEpUnnq6dwNzzSeotdxWtNTCYDVOmA47NYiYKfPDzXu7XpN66s8ogYRxYmRowL7Eds/uIA9TsOYQxdg/KqoXE1s5vQcUdPesVyHjTNs+EJe1ZtbiGynxSTT1CHQONYGocwmNFfVBS8LREy7UBKI8Fb5UPQj8luIXAXTRsp5LBU9FIZ4QS+Af0SHzZMCqSNAwgEtm4kA1lzECAioitXWgrg2MJe/g8cD/lQyw92BB2GsNAfnB8S9z9LAUeP9Ed+5irib8i1tOILalXc0Bs43tcRpeVKVhaZBTyZLUhNlDXC5M/IDjNFXRUG4EC0s6ZdSHJlCrHHmGhSGmRIrhvOv1sDHx17N2g/emoQ75OtpaFEOufy7sXFkaBTtYmCPcwXt+AzmnYYywuYvnKJuhvbKluDj6Cz3SjauBbiIpLNplA31D74WTjZKdi7CzIIaQQuLRwZBQaSrUH/rtX/K8M8JE/7Vu6blxJAyRm0UySr7WdP/KWik0kyuQ2YdZRIk8wwQGgz3Z0HUDqWfoc2XgILL3ajwST4zdDLJOE+Sj37JF4GHjCennqGYCKiUhB45BSM3qpnIynTpCVLDInSsQuqSjB22EmfsbxVDpBB6CdpaOl2x4efurwTGKrEl9RxcDNGpikRwk9QflflyHq6ZFaE7Tsjvsgv8i0z9BN/rB3x6PO5IajJDdW5UgYwtDsOpCfn11MjhAgXeWkmTqp/smgcUqBkR2tVku7sUlH8fUN8SHcaoUcTqIlqxdQv2A5uq6sIadG39AFihrb/OFSWOEaqW86K2OIsVKYvYTOQToeK0j5SWAJS5JAlbypfyGzP/HmDe40X2SNJAROKzasjy+le2kewifgx/DYjSvlT/0QEuaREnzdMEEhPYSKaacGEpNuD31/L6PIRNHr9pqK35Z4EexA60PZK1Piyrr4gfwO5ifXZ7AVA3oU/j10QhIZ1GbzPisQU//obFM21Mfy0xTWpokqxNsXXsboqZDsipL6lIKo77aLTQs9bcwoSJ7eTdsAjMkzAi132tizyolt1/TEkB90vbpskMSuyxohk2atFHgUbql/cGwWIXYdLc/ShhHAi1Gop6V2uqT/pChLjcdggXhdQxQWa7xmiFwZKMz8RfDIuyPTwgajpF7RKSGcX2bisnIbB9VS10F+43MnGaglQlXP6zXM+9wjGLA5GYHZyM7lUF12uBt6VvYjl1ArsTozmSVRHZCKiUJOOwyglJZinNy2pcrek+YvrVhlTQm/F7WJOP/8WkYmZk+FDEKUc/Xy9RGOGthqVSuGgDZ+WKpItnBWZ0rejHPj2m9gHCTHoYS0wn9p21nsp1Qs+sC2VdVh3KZbw+LkmGk54TAFB8x3UFsJQPWNqxoUZAXFPqVmVG12lbfKzwbFR2WI63lcqjRcdVI0AqZBxnbqPemgIWRNu3L0K1VfSGNli82xGhzexKDQNE2Um//P3MmDrZTsSpvS4fRuTrfacnaXoYGLba8sk0lRwZTYVI/8fxCUVGqUoNqgQ0KgXNmNjwCEjTmI+uyntkub9Tt1Gaf+2fLXAPq2VApmBSwkUMI0tWN1muZiMNwxEy3TiR4swL11jRFtg8F+pUuhgvT/v1ayiEWodb28RRpgHBrqZU9eGSHe+UXFVqMuVraYwkmflOZ1XucmUqqsij5FiNjB2n1YbroTsxslgJLio9i+OmC61RPK14UJCdAxlHro0FA69PbT2vu92n5OkxCpbfKl6MfEhhwj1Bu6c/+gdh/XziwkfGDMGGa5s+Wo7GGhs4oVANTZ8AkU1LmmKwJ46MU06mrQMDkPIZ907nIlvmGu1mzoJuzHLV3R09sokpzeDfMctiN5SJdmZHr1lwb/xxraMRpwX0Nya0k4YVk0c46wX2giCKjALQiX4X7jEunAV05BA8CUYLzOd7eRaU92GVS5jFeooEyE5YfaoCOSgZ3gBEHs2K39fI1qO6Lw4UDkFdeJIFA9euHYulF8EjoRHXqFqxgL/aFljmRStq/jDCYywzd5+LJ+Mmc0//isFII62IowTN2OhKCMdYls1d1CNog10ktAimSahdQU0ACQG9fAs88LgnEZycH5YkbsyOAEqrLNo8BuEs5aSqYCjoeWQ5sJUKqWxig1tIhPnUb7OZFWlkbQ2CAslQq6Wdmacz+6+JCNldOyPRRii5hqKPhN/uIPfTMcH1AtNJmMER41amU3jBH6ycvpT49J11Gvboc3hGunNkeUPDd+y1qYvSflXb36jN9SNgVpxsdV2iNqcouyRilzzi2I67QJLaqy8g9oYHQIsKH4x7brjxojaR2d/Nffl1RybuXOw7QKTAfLbtrnuKk5MVDcPZNrkkgGzOSnVJt3xQJ+n4qSIgJbYJ1oaNFuQ1YgNcq+xJs/SO8G0wlRw1zw8WZ3lmN8suVMGBns2ujN8sQaijzYRFWpqMj7qBwQprnhMLVgDUUiVxN57Bp9NlbF19eaN5pxSDz3EsJCQZQ3ho2V8+o/tWBf75HrR3YLKni4yYXiPatMYVBpWY9Hal5ZAAibd9jsXJrJedsPazS3krsbbsrRGVdDSuya2KabeGPRgQJv2Nu4v6lumPfJXH1Znxq4KLGrkj9uTgS2L5qBSRCC2CGB4NWFyQ5f0I17bdrFhhkRqJIz46ZhRdEBT6dgEstva1gx+or3dm+kc39bbfTHAyhx8TAJNzt3OOS6WJi/zqhbO3ddhOLV/gSfak1OVkohsxjCdZiJucF5nPoGW+bysJDSlWS7fXUAK7SWsbK7vwI0z5wlbncq4kaN86xTNq08SyE7I/bGu2SKNcGg2I5sU0M5vtvAl8slgdUD6ikSdQ2+tInk/oMTcGbtv9fH/oOkbjUjhi0IM9N4HKzeH4ADbcGs5V4C1080PEJjwyJo/G5bykiEq0WJ9GpBOTiaf9hXmHQyd99D2Y4uKcOAaJ03D4BAXM3AGswcJV4BZcOAbbNW7QoKnLLlFI5C/vbLyr9TY8xQwdtOH2wnnrwQ9I2ZvbgVX8ZTzNAUtYIZqEGsoZdLFQK5Z40fT9NLZzMPVHnVI03XC1FfSGB/QbQU2ldat58vt1j2WrkP+yDoa6rXZO6nmoTnRmVe4806TgeoJrkTyWh7qXj9ubwRW4wUfIKaNiRdEMJ65xwM/aZcL9KK5BMY2S5a0qWsYQM6ArzoEK+wEelb4Cxoi6HCnwiYhwr+jsD1YG+sZIzMx3ilWbvLunSbu4ZhlCOeoN7Qha5oZ0Ell5VYsK2ejE0UHy0cMBctwkLSpGHBSoo+aWIzJDLDgDlt6sOfOuLEADb8jo73sp0PnOV7TORko1H+y4JBMxw5iw0hw1XIGlTUUJl/TS++xgHwmFRKJM4vk2n4TmZ+hNs269BG/+/V9P2QvLVL8BKJD41fenWprXbVGg0NDg/P131Mj4ePdWiGCV9sP49zjidPtRX8A3KrqqJmVF6mCwQXIR/ykyrxHhlFGR1+MSh9Cx+1Ap/jkxHDQIfyGfYNzoR+x+x43rYZ9iBwA8imDCAEhN1jtX+gVSeqaVCM/15TVg7BGi26W762sDgCTQUU8tfgP8IY5mDhTwCkTAvxjrvkYKK/9AGx9yql5CEEteVQzKS1GwjKmM7h34eI5gq95wBTGlREW1QmaDH26R7kn3vI8mweYrUxOpcRkQIad4PbU40U9rT+O0xQyvpUby8LdEXzXNhIjmEBRL6KdECmMkg1g4sdQWwIFP8nLHS1KQ82WEU6OSTu26GUBAyZnFmbMKS41MuD46pSgQKs5/yWYrOooBXcYVegpDIBci6HW5EnNIFZ3ANBObG+cMPj5Kq0vq+xanuBR4IkLABT9GLikZg8geIe3ixrwRQXbGXM3fttnecmIm8ywUraZlUMA7W4Rey+ZupiwW51L3ShFWLiWik7vTRsceCGrGNbRjHDjOTbjavMeKoklxFnnbaUdlpiQsOoSgzSfd2wIy4Z5yA2tgWEKEsp0xE3bbP05DBxwX1QT/s9jmcbEO1P6YgB3ITMkx7L0DCrZI8R3nyzZVdpTLpMUX0/crPd9VbdRkU9qI6//fBi0e3YxjAAWlm3e7s3bt0IXiMCS7zehpkeQlTz7NEyArvdIIcOE7NpZGeZZsa/eXS1zBnh8lLT6EA97V2YH0gO8dxOpZNq4ORD2tCranR1hWKLO10flhjilj3R1j2hatqWPrlKyquV7Mjhlz+GcpUspPapcV5v0iULta9sWZGRmWYZFLpO518qtEsMsdP65ji/6q/r2wDwnh/r/eHYdmYiUK0u1xQClJvS2yeW8gMqLi/SjnOidGpa9uhsKhBuZzj3Fy2q4BHPKWmTfqiofz/R9MuM31KDeGxiVf0c1JK8pF/ewgynBfUitpFVnsNK66RniYTFdR8BO58H2L4UPhcrjV7XLVMZPsDH+uf/pyQPT2iXYfsCUOqx4TjeKZOErhR0N4Fc38Bq8Q6sch3w0dqLRuFuBOithGVUUZuQeWcj3l4vKLutaKtjInh4QT0CRa1p/65Z5FpfswOD0pEBcmgCUafgE8nEBFQ6hX7wwunQgsbIaRuFxZst2wLi6purgwlhRAXLG6BpUCNyh+kUDW8qFLT/qWF+uA+fpA1eF7ZffLMjpuVHqRQHAwLMI9B2dh/k24GvNvfvPYDV2QF3GbE9NIg9q3M6j/OCdc4VA/Thb3KZ2yBOzFQD9lXjjgajsvUzH4tzp3DhPslxcW1PmzMp2TW1D75azIp4XR1A61pVLqhlqthHy40sCw69+kzGBDov4i/9VaoXaP0J6Vpi18+mAWnggiLiPfTkeFrcDHnWIlcHMk0YPOzf7ZInEyPPAEFPKjtFlM5DUDgdUrdzzXKs8dflFDuNYfkO7nxlbTNc2/G2bJFW/JARCqC/XnN9Q6TeJgd6TAMiU7bb46BBruDENmKjQAHIFNGTLIPNWRIf2nJCMoqrFUNbwVAYw0zF59flo5UZwWalt2Ugb9e5kRQwTCMcPnSMPt2Ok6zcCqInRBGPfjtuCOABoOVZbEo5yISTOu0ZrTwUEXuhMDd+by6RtWE9ws5FnG9rRLJlahWRilAgO5URLx8dAFgrNdPEPXKBtDB5arOigs9n4D2nwbBtlHBGo8f9uEFg6f1Jah6HQQJAmxmeAakpKweLaJpkn6UyAJ7s6zWWa23ojqAGn4vLiPG9sEJlw3HOV9hCwHAiQHSecSp6OSno9cvZes1ZcVJLSqkkQK4nEE9tRDt8H350qs/PKWDOFT9W94kesNax0OV2klAmnA6qmb2GKNLYesjkqxQTNDDjI9lmhnOBHlkqVSgJcklaeUJdny1ypjiImokGfuYA6MM6uKNWxsLjDlk1gRnqI6B02V1d4sAklCZk4UZbuVZjIE6xP+ik3x7ElMRqxc0+sUTdtoxYv2VjgBapPTo5CJONsQsKqWOjUNZblpsGMCkz7vrpJjjrBFVZxTI5Z2GQjGWwboaa6dcsotP4NrxLTe0Qplc2r7iv4M2y/KszGy9Qe9ooKtGM+hzxjkGlKcu6lAd2MeTSZ+VNsNsBl25z4wOqqk5qOwllZ5qoyP13Ru8M2zQCKKSUjwZbP9OkdCKugdiPk/CKiKZAjAqkjqlHL9mBURnye3ijijxVJw9MMoliPad4RlpscHkI51ltOPp6eC9vrvcvgD89kHtk+rro27iiE9UkJ1TTrScGLwPecTpWMJKV6DksHrHsPnH2/4jvxdA0rf3+16qazPqzYCz6l0sp1SJm3PVrjcEX2UELDXR8UTWGfMbAdEu6j0C8joqs8f82tA5/cTNxzjzeh82Z8o6TH/cAjfer/tYCvIUZKmsG62Sqz48B2NGEXtpN6+0X6vbxvkkBh/zJoEABvupn5e6csoYMLItUit32FjQ1SM99jqqtMflo9gJOY9bf81IbYGNDos1VMVxp5M6DKE2tDkr2zPEI7MztKG+M8QgFfdgJONjaf+eDpQC7ZO8OU7zbDmoFT4JmRUEddQP8Omn7qu/KvwbjFXPA+T4/Q6orZ+q7CLKiRS+8CfFbw7oZG/79ZH8DUWT7s368ZqAc+VgeLviaN8g/bD+MftSEMen4t12JYhTZR0QeiJaiF2Su3LkVxUsTQTM8H9XSdvWRIZTrmEWziXykIVrcm59LdfSOa10wPPhqraq8kOxfJNRIQ6NWyrwI0OIHDjoT0AFM57FqKbssDlBtxaFNJovpmXoJQvv6GSvdKARi7M4pCpv2HmB25FhYyxXGO5V3KnvAwsofumKJHTerqYv/jcIob5QtmL4Rn0+pDrtw/sb6cijCeHXVuMt3n1CQ0FJmz8zh2R/BgTdBjlYiRcvC8ziJxUmNoTUdusAd53QkMc2qSauyLcd0wezXjxcz3fQ7w5U5s3AN1XJW7payNIYx79MdqRyej+ah2CeLnCubPBqtlDU52vjLIrbZpVVOLZxtcZ/dFs9V/fKVqKX49CV3xGEY/NtO3PmX7YYgR6fSZhxMfXd/6kLM8S9lrE/v29NGyYjSBkht4h4WdXTy+ekmxvkglFOyqvY8LB6n1jJ2yaUGMrFFO+oOW+Jnoi2L8HdaCT9ae2rhStb0oF1UC+xbJwllb0mOMS/MlX13qqIoIMFqdVSteBX/250gs35+qSjAtlJUuu8lUL+of4R2ZWd9aTYRtb6VhaxkJe0kFouUmbmXH8ohA3+RM8FkgaCmvxya1iMswD+N6W4OpP9sNP2bYtrXRzUflyqFNb/Gx9cc1vAPkoY+AHxvEqXmPj4Q6M9YdtBlNgDnphaFZ7Z2Pie0kX+Fc+kIjB6PXUfoF+RZ2/Bcxwd7FaR8O2bXDZ3pam+n/YqlbsOTHXPzEsrDUZ52pwyRGizQBMWnm1y13tqQBeiSfU7bwaW3Tap87O7uJYIoZo7x3pzcJuNjfqizKgYME9LdkP/IEES7uejWLTW3x8MYUWL/qYRWDBw/1JRxW+g3POtbwuIy5B/8u5LCs4S7Bk8kmYoDEE1BHECF43W1ULdpgpNuOKocOT68kKh9pNE+57cdYlc7mPK5CDVz7iCPB+mdsFLgRiPF8mS/uEj0ButC2mDqptHluOQaEQPmyIgE3UYDd7mGt6FilrM3kMpyXySiq9Mu+IcUmQ+iOamIDw4Qf6U9/RDZ99WvUQxmq860jE1QJR5YijJ+BJX2GWGE73n6AJ+n6/aDjS32vJJBrJvuY++8HWK9uWSX4UT9pPpCIyLCSxpWPaLg451PKUkN/1XAyHhlZJqZmE8ipFeoBZis26AE9GwInCQGO6kF0U2zY+7XWWBjjPzmDvLbrc5S1WMcI9h/tQBqWI9qP2iKY1eHxoYPxcE+gaFYT7Dewdli/2Qklk2iYZh2CRIrh40iTuyEhxrPFwQywGjs1hKx4aWMYaIQ3ode+E+8Ec0/e9HnXOWPCcpagenKVsTFCRRWJLt03htuDDR9qIv2YSSKsFAxDsE4oyU1ZScsWQw+/PLO5Iqnuxx6TCNS1cFGWwdZtkm/6epFJcVa3z0uNx/htiFx6N1oL6lxSNmHUW5A+12M3wPKsvPTx3P7w5QU9wKU3GlsikSX455uEciOXXDBO//wCwUo6ewnacs529w06wa7QeebXHrmV7gOVrCSuTQBdIZyRt2Q5X88UwTvYQWJVzsKMJNs55JgEI7FWjj7oONS9U62Vci6mEReEKVy2vMbxF/vu/lybpJ7Mcb+V1yk+H8VpkL+B16LTEX1EP9yBP/xtXDLCL/p1uUzp5h/9vgofXumX7IGJIM8HEathUYlVc/TmuWHfheQy11caQs/87tZxN06PmloctvmL1byVV6CovLldcx3qgY8ECaBsB2OLFZBsiXQMQNClw1EcmRBSr7UZKlEa/sS2O14cl1PmxZAfbU2ci1gxTxblSsBoPLle3HImg3bIu96d1XI9ruQ9rrxLHVzaypBxCQGgb2sFSHS1wDUE33RZfyxDawIswwsB4/5H9F9SisnZK2yiAigQGOnNMDqDirbtBOwTGXPpxz51OMalEbjsp8g07KxO5rwMSYT7UGqy0BqOCnLmbGtPE5lv6NTeVwAGvtKolyX8F5quZBmrz1MmLsr+vmbeIpibYK8I7yKBRDNCwhDo/FvcQT8ln6xORFGsgdaTh5kXoJKMbtVG0Mz0I040vXUqjM+VkfnXV+KIkYRdhsrbGtOOVSCfDv00dZHMVqi5SbRbfYomzGoAM9SPqdpF2Mn3W7PsJD4Xe0nz5BUrPY385ChOJ5EZI5ET6+yuXTL6DmH4PsDoGKU8kCFBYhzXnIN5cE+o9spXUHf8GWmJWOiqjCofA0nbDEjm3GGKFDT41cEfuLIKsZllMwZlnR0ZVmIKAHE+aKppployP7DqItq87SJfKuM5/PyVkMpyWDAV+e4BPGpuL9FF8mYA65ewi+u4RDuXOSNCn56u/ASEmlmpOvwdv/rney/ZPtb7fLL6e9OWh+UrqgJDq7UuviAxkkhyYxfNSF/L6/uekWEebjKVto3T2f0/B4nBKTwUfAZY9+yiSXMkS0T2i4o9jw0xbHUZC58IKtXjn82PY9IdaS2Cxug7sSR8VNzD0VlBcLfa6l0tJPPAVIprrv7NjIYhTDoVskajCWBW88LgfFWXv3No7OFUbI/AcfIO2GQQriKjziHKZgjHUdHbIGGDJ7NzUJPPER6UFo2RZiCvibjgxoeQiGYETUVVulOtDM4hoLe0pp2yKNJLmf/ReyQwfZlnRvU26EdvLQCadMmU+Vb2I41cVuqjAqxRDv3QByMRy7u7lCY91uS8SB42Dfd1pbqfW3+iMKxaQPhozM+JnpTglaJFR8ySGzeiO4ysdr0sd/ub3FAzwdgkJXm6Xt9KivmIrIMmrGqTNylJWWEpfDh6XaQG6iOE78neTL2Rrx0bn2nbc9rK7OmREwvIx48gEPEdunMvV9tSxPN1wYx/5WjzOaLb9VQIcAe0t8r4uz9uXWV8gZtwbFfw7E1h5vjetJPa9qo2POISm2/CSDw+08AIVwld5OcLvpwRx5jUocylv4adXnSLsxNOq4GbTQaKk9VjY/cb2Us4j6ihO5ARiBmN57tkwvOVlyg0s0aIan5z80eb5edNmCr5wkbsbnDHPGOfieOHbLuOuREXjZe9lA1eYxwzg+LoYEUqXMnCcmL7Q7DbVVR1PowLusVM1lDETGV4zcZpKANzR8uW8Oj0oMkMqaqQvpKtpvIgJrCqqjDwacdw5co61oqFR6zQaraCS+DdUxIVJyy5+8dR22vZQ717d1G/CikIQXX5pos6bjNIlCl/DWu9pTLcwwNQFP60PszTd02jojgZVvVGmtuGjs4oBdcpFaaW8SgJjnkvL1kzB5bHrjVU4f7Eu4TMxmDqKr6lVUMbDsB4IjJf3Rk2tNno82aB5RcwZp3RD5w7HNLdD9ZveXZsA1G8KHrTOMfpRUa+AJIaXkLpUnl/eGbxfk90UlEP5KGqjMxwOY/xVUH1ysrAa72+C6vJCw0JD3fA0+cZDfX56hiA34oV8Y7/g0nD4PJq/WyhXc8PE+XX7Bt//3H6aWb5U+fpy2oDjN2dhxt62btYT7R9U2oeg63waL90lWz68yhxk9yEzNhWC9C7h/b3BHxaZQo+Q7UCE27eSkTldEp4NuLeEBdhQRVX39BSLhjKuxnpqT60AZe1IGOy3mUyMJ8zK7/dE+K1ei0c1ruw76yZ0twffPgiwyjMKiFr2TsmQV/z0uZ6eOU6KTzWA0hbo48eVKhCS5Ui4LyHLwA3vW/+ILcE5pda+71hcY0h44mYkiebKTJlozuI7OmSpMwZFeZDwbcaGFu/0pVWsr/xvSEW4pAQctT/QUvLtuizWIdxVa5+zP/7pRa9Ge3cm82T5jKYXtexym0J88wImSyUVOsJ9qls64HR1I6aLEyenTI8eb3Kw1EMqZhwGzE73iMRUTvlDjDz74ttENxErjy4UfYNOPTP8vNafZuthi5f5ekNh5lhx6FHE0djT48x06mM3r4aPUldnFD9f7kfUCJNy8IEWJqzkk4hUqJWSskVlYB4TEe97O1mHWItdTVunjbvXoD6p5wvw0iUG1OLTikZOdq9HGePFYK+VaH0JYsTI4jXwbgZnJ1zkvGyIqoVzHXmnt81j+hDYjXbK71ZZ86JCRAxcMRl65arXEtx9Z+n+aI7wfvUQd3j3zglHRXery1GUWuEb8wvCqTtXbndT/AUoj73wiuHQr0j09Rx52hHp6WPFb/HDzIh0bOUvYsKPXchkCEETJ1CkCT74RIDAPRf7mzIUrTsEjVfGu0L7LBahCV8J9bX2OvEiAHnH0vLm2hDGMWt+UognlVSXhlSGjIXu0SyyyL7YHuBy23fE0kv4egrBHtZOOFFp4UTs1K0VUJT3mmIf6pcAqFQLVMyGlbqXpEznxdsCxRs0ZVoYmcDRJHWwIwDa41fIVHPmWe2QmBqBOulYUnPZfOFpSF0gu4pnRiCfozH83SmTJaKwDE24KxRVOrTszvwFcufW1jkxf643uHdEB0ffcL/JQsh/KCrGeUluTlpZqJHbG0ewEkUIVxFB1KTVLipCPzYCeX+NrfaAtgyv31DnyhW6NmGeDBloXh90VRsyAOSyEbS73nj8Wpo4hiJAnlKvPk/547ka+CAtiZzu5NSrxIoRt1JGUl7sr+UTXYi6bHVnHqpSXNlALIamodEG98BAsJDQ9iUThFciUGc9Iry/WcR1DwSXXLsg6KrUKJN5JZFH+I5dk6FCFM5RsOoNxVuBDH+BRgfLvxYXDnIITqlN5ynC0FrO1hzpZa39Y7v3rH8vRNeCkA5F3mAL+9n2Q37vXETMmkrv3x5ZRy+ItAUi0vKWG1zs92HFEygnVBHFnWyWwzdeoharq9DtKTbATl1v+joJHpdosDjv1kAjoZTnF2tKzG9mD4iw4H3374YFGXK6uFvIyLkZQ4kQKJpd0zhIst+b1rfrbcUYfxdErGy03VTcQ/eXt6uiWno3xPNVAC0RFYE+l7En50khzmH7WWnvjYjVyA6VeBnx5B2HiNdOrJdQWrM5GcbtCXu4mm99sJal6fR8/78vNw07ulx4JsK/VoryqUW2cvr9ji9WjunR6Nv+2SjQ3PPgVby+mUUk2/gkYrbVFxmKAlFbY+VkhzJJ7yZs2E+1oT/yJVjWDXjlyjNZq+07u3y0ua3UhX1gIyNaz8a+oQgLPYdPOE9qXRRIYm03f5BFDtdcANHqO4JvGnFpZbEAeCNW7OHbsAeNVnBJo8V2UW/0B7C13L8lbsjq2tk44Pr1Kv67POBLY7Us49WPShlGGNt93nYllwP6+ls8baFmsJUzgnPnAsNB44VcbuPeVzTfRoIIQc6zq1e8/6S4RfEuMhjsghn7CJpJp5sLRfXJjjAr4qnv8iYCBog/kzRB1xUqrWpW8LM7vJIQ0UBcioHBj0YhKTUU/8dfNSw01k/Bhw2Yyxmu3JcB5c53VNZdj6Y7LB9OfqLmpMUtEI2sl457gOw4jAr/T+FsiKxuLI/B9zQea+iBJUngORHYKOOYki8XJ3uren8d4u4ss/r3glaqM4ONLlB4p+suWEJ3p3idInOIhMI+tHv9jsPq0vwnq+7B9683dzL7KxmL07XCl5by03oVbHGL6cdKs/tCD498uu+gLbvfslvYvtoR/PAQxnMj9irDphhr5qOcDm6AAvCx8VGJGqK2cFOZsXS6mkV8zY03eDg+PnllePy1xeBaScwD0DYcF4uTm4IX3IIUiKgdbhaLkzIQ6siDIo5Cy6SgNSJcpnhITSy6OHHQoOS1damUlp4zWY0+MbD+qTwe8NcRdTDgdfbs2fc18tRtZp9tEiAcgJCQ70seUd9rSuK4L2hQPV2ZaMm1Da9yIJlks1cdZeYzr7EoV8m5r742knEetaatTL31HweKlpYREQvtdotWP4SEAELdR8KP8s9P5yjlXiwitnEyyBwD2csjYSkSk4D0mkTapvaF+NkGHdKyAcgWB5vo2+Vu1KbDzAanDYuFi/Vp3SP4Y1mBCAwI8gQBVl5qN0Wg9NFqcyjgxwI4ELAc8wOMG7xHz3kKQO1bGqlRonD7T35M9xM/agSwDC3Hqi8KEjj+9UQy4a1N7LV0BSg08uwQXZwBi546nQe5j3UGRsraq9VuBtGpPuZp/Bd65pAm9JRvrhTS8Fzc6RcZo5SX3lipredaMxICDbPQQwXTz5VxpC1mmJWVlZcqiODt+ULsJmtBlmCDWZUikFpFot5sosvxcWTRdi6I3YGoV0qkwPAjwrI7aHYM8Uh9B+1bUPi+Yg8G1DcHsUPXyEK5Bnj6ufO3qAcwBKGCSksAhijcAyR2b8phO2D3EJLtgfc6tgW3TcEqb+VhIJ+5FPZagK2YslK69Sm32Q5wCopfaTq1xkRjIYL9LQNrgVgNDWhtRvn0nmd7eVxQrCfJKro6Xv7Rq4dP0ZkJzemcxv95esiidjL1s7UpKBx4hIiLmAZcnsXUtpxmZgtVrVD5giGcQQ3P8daXNIdwAMyIIBIXVcTBOESsKPQiegH7Do9D7rBI7DBDcyIKoYLPD5QHA4gk79uQVyK6YeOczj6cdwB+ttHD0cvhkjy3KHuUS2NiZRX7DNnRzWLb7C5xmwPIJiiC5AcxWYZ9olrB9u150iu+XOe9kpApK+FKH7pRR82H5VDD7vHUF6y1mlxyqSkyn0ouO9wAmCQloHICmK0Y9XVoBBLCGg+0qoc7S+/WmsgYlBnIqpc0Qg+wO9xWv8dcnPAO0t6MXAA6hp6gJiUMOiW44hx7uu2SqaHuv/Tg2GLKN2BkLhXL/xXOZ0qZAZ7y5ELu1z0+gZmBrSrTyHKPGABZ1uPQFzMZNYLMilOAZbiDfGiQjxDxdhlp4ej/1mzURgdUUSmOI1sRdkKoUMggG5clC/MwDm2j2nJCQ9g1JtyN8WS73isinLfslKpYhmwGx4A3hipSToJDielqppZJlNtF2Lyral7yaAGgZelotNdezUwKP6yXoc6clbMD73s4PlDl4cJgKXoZScpLGq9fgOQpKpzID9e3jpIREdQwwR8niPxKSRRtgORXYPjFt6PoDyDSar6FlIHLu4voTrYFbpNuCx9pBVwbhDxM2KgCPTtSNzt1tfPdWMVFM4yaBGqDYwhAfpq6k4AhxSypMr3C+VYZW3t73EYWExjb7dC1YmTqgGEsoRI3daBf4EnXLUN5J6T0dEiZN2k2tiS6QgoElO3PWJuFY02CHG3WdUtNj8/GUF9WUq7cCdzMrLQTyKltgPsL+evADAnTgrS1Dm6L7tax9FQM5GqGG5G0NAEoXToMAk6XKRmGN46URpYIX73GQrxMnPhqJYoEVd+nrXOEwT6LEgSPj2MYmfpK32kZshpTPYPUhHBhnRc0UcqM6QOHWuMDCyl6r0V/fas/+ecxkjwYaIDTzXWNMTTTmFQHb+L/vIbU5J+sbEQr+c9hQGCkCxHOIa81XgRBj4bIor2+Um0i5Kx9SxqqTrL1DRTkcKBUL0WReWIf8Qw0qzwhrHX10ejUdlZ5PsR0zhwU1C78hOZwg6j5Ru7dHzzfJF7Xd4ns1B7qPlfR253ONa6yfiYtkmQCKumP7CXnoHPoC8sY4z/2fZayriP/uJNycLwGZfBetZKiUYrdxHgWT8HoHNJpx2Xel28dWByp3kD6gi0kntCsrYB2JR2hHfF7KLp45KuCEa8ntwwQSic+DG28zxOVrUY2TQ3nHEKDsVR+DkwjFnA1n5Q2knmGR2a8/C5WfwFIUkIyRK2Ne1qA58+keCbL8i1Kv1HDYajY3jHeYaXwBhxAl144Yx+UNWfJpgfz8S+C3JDeVnrXDi3GUp1aBRRfP3YKUCo5uj10gZHN74N25gP6jtPbY7T4RLsAqYBdv/o7HZEvUR6JqfQRUrQsIv8zY9KvfpgrClR9Q++nFxSD0ghv5u4Qx48CUWrFA3Eax5FpkQhTPF6jPsODN8eKxixadCvCzfP+00mF4c1DK+/GK9MGFaFSwzRaPtSQWsRFjf30PBcC5z2hSpOEeQaXTkqwkqXmCW110oX2al4sgF3GjBysFawi6jA7nuJgazv2s0tEzpwKrqPMSpG29Fzq2MpxK0q2832A/Ij6nWBE2Y4MRZUw7f0xmTQoNpk9yGgOZseWDY3OSs5YpViFnWK+V0qEN3gtCDfXx5z2ZKxymmq0EO5c/0A6djkPNb1617fBuirxzRlaee57ZUy6msOg/1LCYCdXk6lix3rrDIU3rBT+vB9XUIykZKjCiAopvJ+CtPSwIDeGSD+/6cnGBM87O2LJI13+SYnWCqlsEqVrCJOTRpd4gAOfDwq/vlki3NUwMbw8CdVaDfrxOAdaEwF1bqsD66OGh+0YCWj1bKDIv+FQpGelQH+xHKXrQZzCmjTdAddmHXTgXq310Jc2gvawPXYktuTpJorE9+g/VfV2xGfF7BJxu6NxnNwQmbFVFJdheoqqKsxuEeFOsTStgm2Q8k+V4oF8BBkWnCIQ5Yyk+EoQXiKg8IZnYY1AJcphf19AAX2PQLieyg5dcZICoPUt7tIQcTZimhJ2B/XY272gnXbKHDNSUh2gIgWnBd9eFD8T7wjrVsmuFMsEU2yI+bwkqsa5VjdDI/ZpwXHMWFYvYjs8xa35JZ0KZREoA2WTxslQEFQ+JUcgX08UuFOj2CSBI1dPARk11GK4cT3dccsKYgXiATWgZ6hBxqyjDlGogVDEtWyJeMfrifAEZueC45L7ZTW+owWlnB7v9DH00y1E3HTRwbfQoGkXZFzbB1K4TMXfPc/d/niCFYd/a3PI9niKNwCcX7xzfLHH1vV4v5Y0G/7PKcDX3dYrDLrzbiER9tSL8b4hMcwYhnwqpnLSsyyVnYIZciCALCmDTMTJteSxUheZLNlDExBpj98W/IfODeZ6VyPWAjAJfK3i/xLH+E9QelSGq5npTsaCd6CFuIi9oAYhIRYKIXCNE6klIvbIpRFxJE15DBdO8SdE03oiTuVAcSx190yUrp31/SdtZcSdIrIVI1u/gZcdoeyQQpxPXRZCxZZQOJAaYQhoEZLkF1BzDsdHR0iYqnSPknr9vNxDZjL7xeF1mvEoKkJQcIVHiU4babEDbGKG+Xd/hBrh9KBET3LSlkVC2Rymk5unse4NDMwnWMG6hHVmqvNhG6JjmRlmlFvtDVdftt32DDmh+QJs9SvwhA/83EqvYvonrXRnuLyN6o8fsf2yrytDUMMh9FXrX8PFMt5sv8ktkpC/smVwrTy3CskX0L6QwTL449HcUjSrI9IP9UfZDwW8MaK+3ZQTnc6KVedBw3qXM0ZoMWS5q86wlWAVHaypo6jH7thOV7K/f6iHucjyUGK8X9F07kQFj3yNwvV16rnc5MEPg0N/OsmrOHXB8QuPMp5QXf4CBuZxndzwmP3CQoHRsu+4FOSfSZmOfo0uj4hGx5hNrsrF4hdANwTwewac4MVDWFFgSmbS6xSfHMoZSUQtYka9wQy3Gb9fwwZwA3tGMJNv8L2TaVCtOVcLQ0lxLIN6aLIzwIE7x3s44RpCXrUWUXdcvFYRWT14uOyQvG2CKxg4gf5dIlIv1GPywdV/YJZz8ti+CavsevvMelw+KU0egJYD6fVoJX6k53lBaYh4r0YHVZUbChRvw2PP24tuIHCaBOpDvhR1UVwSYawAj6PbT8+DEiy3DilSRnprhy6JcniR8oinf0Lzi+KgOriv1bhBrWZGYkoZvKEOWJkwck/lEBWaPRJHu5wRDnxv8gdlzbDfWXSq4mNbkaCClpO8FUbEGLr/J8lzyrzhggrYehgkenTCqJqOSNxHaBx6Yg+UQ3ckV3Zb1kwsDMj8gQOyEECYUPg06kJnvtXhNUq/OY4arrD6mqyJAvxmHQZrX8bmTCPMTsis7J+FpsLPKCXI7PRyR/KMPLH0qGjGt9NeTXBfGuRecErNsp+5MP4LCm95GNc4LUGf0cTl5yKVJF91tTjJqHmrXU39PCygnLJBSUBeq2KwF/DeCnrUpIwKxUdv++J4mNhbaK54AdZs5PC0H6uEbSaysXIVBWm4kUsv1KzPAzXbovvQDGqRv1uXTpQeOJRjcolXvy3sKJ83LbSuVYTlC+AbvG9jtvAiJ/IJ+Xj52hfdBmaclu43OseLNdNn7/u0DbAC6jlpfXg8HF6yJnNCzWUjWeBtPPuEdsk56LSFoPUK3lIFxBMNB78sG48sv2C9aSdwdGTi2MzxMhGsPsqt4S7i2AM8fXpxP0jK3Wx/9MsGjnVYu74PuWvgrGJ5nHM/sfkzLI0DJwyAKHN/tkbFuKKd1i6lKByvokirBy9JTtHaqkstx8DxaVk0Mu6tuttA6ZNLvrruLdhp3F294wURNYda2cue6M6Klzxk91K7s23Vo/La2h1IGPCwLh3m75EC6GjNcfdkO+0GK8eHUHGrHF0uiVTbsJH2eHnuxfh55qoA7Sv099BOyl0JFGOBnDck4id41/vUpEFTzKGFlSw8kGvlLyCS+hhqkBvODBxXU8By8TL5xO0bTf3a1+E3TJsOpIj28BqW58ZO+dzZYmlWdveloh2eIlxVKBAz2GbHb/2eRCR5xXXqbM/Nrb5Mif1gHwLa7zk0owXokVgwssSgloj8Z6qyx7fW7ecaOo4TKvOxNsA8NHg9h0Ze3URWV3P4yX3F9MRm0NFMGMwPBSLSuSjLdcY2cfGrxm5yaTVLvOJIaI7hoU4vv/EgP527cdbSg3WkCKgteUwwPe0625aIol0z7xq5miQlVOMMJu1SonV/2OMT+/j72eZvbUxMT8fFEE+3PaNxDeqx80JK4+/n3+v5f/55pxapo1O3kkPJKCqKLkeU95qFD3w/vfK0TIxQVCkJfzp1GyU500vctLWcbX6sCE7rj5pKt9NnTQYP6v+C7dhv8oTPJt5P2UvpQccU/v6/SU8kQSpZ5DqoV9omVe/iOZy3pG7WUJ6c7U/QhX/799IpWYQeD1DOGNuqCj/Bv6yjRXhUW71P+irnvbFDldllt24ARWuT7uj03pKhBy1P082Uzi2f1DY7tD6apGku296UUU130k5S5aFnmnYL7/qChLLraYCPr7KqX2iNmGBhWXNmkUHn0KXnrRhsGkSkU9GgVUxrVOd4NvGFnXJ5brtgvo+t/DZNYohhogn78KwN6ynoId/s1+PKHEM2bRnZhUIuueJ3CCVV1Lw3XhJFLDYabTa4ww2rnoJ5o+4XxnvXWOpzbuuCJuquPsv2iGRP9ctMV0qiPtD2tkiGgUoucoX1kfKU0IhJyfCm35RMc17qeRp1flDxaVXQgC4qDSuza4jazpcrieRR8rGF4mmVW2Ry5Sa/5gqyem51bWa2vudyBclml120eMx/gzY+8bWSneqlHvKonrOpLKqY2a3AC/+yL9Gbm6Ajkix1rW7BhMWh58S7W4A0pH1XdNtUxVEL/bqZ0NFDlWSx7ZHNHGORjmGhGGEuZane1q8MlZybt09EtSS3UbUCTkcsi3/njhVYlMkZLThK/awM8tySn6/hRWD00nzH5P1HvdCeTCx0sUQzAoH6fgTKEi6zQHntyACdNcHrljvo46mYUXYbhhV9hOIt+aZPyoxIYu6JfRaABsBAeOM3Rnb878FXfe6z5tflsJpO6H1ZBM9rV3hS7enNcMkd9peBEnkOlbVaPO8UfqSUZpJmxfjYFc3LAhwlukRQIEKbtxI5G+vqjX10pYQxtuCbpnexYzhb7MgqUnWnbzjavd82zdolD9PzNF60P6pp3yEhpUHJmyfJSxYr7yuQzw3HJ2BORL5SAcXuCw5WUEkTVoShckSM11sKJ09O3NW+OfPcqmfVvwkiW9blMzEMgDhtc82hdDYYrGXJZfjA5j8k6vIfMB8zQG/PfHn24cpEx9hblktnSPiLTakvYwve5Yk6eW4RCpnPmUpjnptY9VmAdOwJqiip8EPxeOS6MafMCCZUoHozcyzjQseJeBOS4/CsGvzHW9mg3jREuvDJ75VgEC/1zpGZKM+ZlxmnH7VrHAU5l7ifpeye2cjpo3LoeZ8TjcZoW1CdWJ0JcV61HZLvlbOWfvOBdZ9WLFDVao0Ti1025tg/oWrVzMlGoC+vzishldB223XKiuGjeBwIkOC1OxvvqHInJiJKn8W1uPwmRcLnPE4hKXs6EPhPys6H1I7+IPYhz2vmd6nwaCq2scSp47rWLuWsBY92r1Jq0goHjIZOqqCp8emUZJc3lxxI7tU4oVsxSlhY405bi3Dtw8cO+1zHOlDcGndTPBsccXIhjjczdZw18oeBEmU2ykjMrhP18jwqkiHw/k7RJHEL3ICKm5nH6SUiS8ZJlMB992/8uf9GhR/JhwsTLTZVrV6vUDDSA6onnIhCwUFRlcJwCd9Z4uWjOquahR6URJoJjC4meEFSs2Cw9oLuymtslf1m9O1+uvQmBxcaclBwcfpxr/IbnSI0fBY0asmaVoRjMd7AYBkeUnOgycPVgd7X8rFEG/6gWuvyb1jG12PQZIZaN4WgdDuFB/eNcCCavxMdTm8ULkjB+WFccED/CBqPcqkvnzwc+ujAcdARUS2c7Of7Fw7GeKpZJmLMNuSAIWPcKh3GZ6+x+tPBnzpi8Tp68UP+9TuWDiVUcbA59Yhiq3GHzKbDGq1KaqD4O33Qjp6WZCQMFZ0pNxQRgT9cTqUFkuZrYMlucrqKkgS/rumjoIQEQA8woTTaeDQkqPxi+WFdhcy1CyWnhhZtjNN+/5b7fuwS99WY8vm5/sMf/Y69bhMppvC/4kC9muavxQf46fqyDUBsWLhLGshaQkeQAzFm74zrULiRDFJ/bi4BkObXBGG3DA9LuHEd37FFA8it1tS18pVKvsPMBTQHDCsAHYYnHFRGyanvSIxFiIz70CJ0+c38VPmm56yHPbZL2R5P4QbpqppdVjShJ+itPL23kXB8OXVH5jVlM74M3Ut+U29XfY/+JR0fO6+OQIIZ3C2V+lxLcMrHXX45aV2ziUZhRs1fFfod47vut79Wxs/nRM7knF+8w8RPRvZT7C8PI87RoTiwdt9bRWAfXBQhiV8y/ViND7GasDjGv1tWv0pqlsHWw3fh4/B2jhuN8jXsalDHZq9BRP4bFZb6g/ueUO6FxCq5CRKrAVeArAjUnE23HtQ1TFCLtuVy8EMRd2IvrsEhdLBMwBgBDYbPb2NWcVlqPYuLeJz8Ex0lSJAzrkAmCmTsLXnoka5iykzi5GApM5le0uszBz12FTtm5XrnRoi9/ELLo1rz+xWrbBvYmCQ/eImGGfgOx5F/BlcoHdGQiPUPFKDIy5++ShcH6PVD7J2AP82MfqVYKpWITO5jCXNE8movb6BPRvAT8vNl57YdtjDPRolPMMXswlgyyzoCw0hA38faoQV9K4EZnZKMhmb+U8xN0CC0dMh1caX3yo2Dzrdbx3PE7xB2Z+6ulWRW0pH9Vy0vyZbv3FO7Jv7Jc8IXBR8r3QDW1ZWhEyQHxhTbv2fswjNz3/MRw5HGbeIA8hDPpAG5jKQb7luDnzKKI753dLE8HXdA2jeY5ABvRL675xnUpLzFFk5BQEmnMENP/bCgwfZfnZINjoaJDNlFT8tiFIF5FUsigNbZ6dY2AI2PSgzRvkDFfdTEcE6xB4HmzENyzNVihhxryUAmN/lirhivDF6zzPiIR5l/ipHVgSZ/Uk+Hl2w939Sol3aKIXCqoEDOb3gWLx5jFmJaYWsgsms4w7hQFgU4kjPE+2Yuyr2/OZp55wdKNyPt4V3lOMVMvFZpEym/aGXl4eMm2logZLH6hHtdcjt8Cva+SyZrsCc/06+s2sikY7CCfvFNn4n6ORH3ZWADjvHBkMtRwwrGRE1LBEe14m57pjgxKz+eTHR03EDLfyGXd0xt6YeKmiEviZr5AslN8jzOCts0c7idX1eLPUk+fYg8OHDwMjauE47wVJBYlwo+yVniRIEOM5wNY5ycbOXLeUaU+5jWc7izcPGpmZ6aG08981UkPvdH4z3ILRtrrO1AkRn7WaROtKF25bDJTmbbj7WNvgzLTMbBJSd5SIuoGvDhWOfehvUECQKam0mvg65+Q44bVDH3CdN4d0WngHRCvBXYfYhR7GX1vf5ezoAXZkYIcoE2cxT5hjSZdcSJLJwD/9kBtAgr+w3+OVSn4DbyrYPn3K48KrYAIGKWcM0SagbEdOTqV0T6h11d1Nfayjf8oOW0DARY8vahGlnkOED6OwQxQK4N1ukd5S4sfxZNTWwhVXkcAS6KL+PmRbfO3qioTON+vcmMCIQT38I7W7n3ovlbZaHDnm49EcFa+rK6EeEnV6QHkFSE2oKV89TMqbbDGcmxa5AkwOhs2cNrW6YKpoWRl7lPGKJKMhucuXkBWAxzjX8rl7crar/uN2B4uvRTCfQ76pW0Q12G0VTl982CDv8ikgxo5alvwA2635Of5bbghSdgdjcygEtriFuluLMRMWq95jd0sDwWuvEzbcj57GRPhK6T8Spe10uqcCv2YjjQ6Zw5WVK39Gf5aYlqVkQxeY8FmgqcFX8idb5jeC5enbPbya7bB1wFwGggRWaQuwtn4CapTibw4ovjHpaY9KBA1bWqkxbu7Vnge5WlPXZM1nxEDZOdDAtzM4Kny+vAmju0MyA66paqloHLHBBvMBL9MGR5HtH0a99o9AYskbyW1gCUgPRXYJnCPXdGYWW3tuFt7JEZCQTl58C4QIa94bJmmf/i45PfyGv4W3hw3KjzdGQ1l7kxosesS1IAa5JUEUtzWQq+Oq2Zfr3bgrmaCVl5Qj6JxwCoosYCqhAUgPiboTXuax/YIEs77/0uxC2Flmop3q1SSjbkkFEamT7myUCoTu0hsvHQky0PpEl+Qv8suF8ulLijg75Si/XE1iitkS7TdX4fT95F7WXToFvUKH19ehGd/P6h57sU58Ud5FJ/2RoBZWVNRlY0gi7l0ciSM9X1XyVkC/QFw+sni1Z/Y7dx6OYdKwXuymMdS1YVt5m0IJBP3Cn2jD9iIuDbCTrGQ4eV0eUNOO2iNcg/1W7wFWlqDR9fJfXzPtcoDd7YMpgeC52+tCR/88XL/Jead9StrfZA0y+ZpAErrCGT3f22momnQhe2iCga5v+ow+mPwPszkxJgADdiQg1E9vPhi8i78KWA6nE5u0dhJXR4xav8LUUGmggUPikSOBhscWidZFAOD84nSRFPX5tuituEPl7XombZXc0sbW7SpWn1nwd9lgj7HFpumf/YMh6KqHPiysonL8sCMLxXenjzG7KJQ30Lkt2WnY4e2gJkEeQHE/fOZKJOkzj2hvJmhBVSKRH/ZVUShG66ZAZ7sXlzzOb1H8U8v9vJgb0mMlapQFSCNWwY0FDg8p4dfL4Pgd8og/QiBK3P4iIUEDww1OYYTs5f1A2IFz/gqqYk4GaXKinAlJe2l0/bKw0RD8tTnndF+JohDw4Eetq33G8sWadir0zSZK1sxDL0Uo9yZMmBpZ+LTubnTTBya9TyXf9HqF3iJ0utGKSffQCNn0qYEeTKz9t9FLdgTabOP73SZ6BQlbfQQ2MC7tGGMhdNxTz5lF6EvUBhl5eCyQMRv7DOf23vW3U18wjlidW0XPfe3DCu4pfHOcPVZAoL5bjhxzu5AC41pUs7nBQTr2nWPixv7aEOiHuUJIdviVtmvIvwdZkvqbX8osYTYQ5gGq8ZBN/j6C9dfFvLZQ+sb5OzEXO9rPiY1OpaoMXZMofNvT5OYwb5GC9ILUT1DxApUkA3Sd0l2aIarw6vsFO1sR5oPv1FaX1DJWsthpWsUoR573H1PMF4BttP7pASDO89hynUMN03Wv9Jqa+YrOpHMyE6sz/6AX+gzfyVB6GJVzFVDXovCmEK4zPYzS2NO6dMZa8ll68USOWPGVuzuiHrRSDeZTKOV3nUdNP076EAindA96MXuuKtYdMuHTVRrGO/vAXHjfPCQOAM3EfH9VmRrbC4HZeqy3mP/9TSSS9X1rWT1gYBMdrAqYxnuFQNCprVb7okFe0KAMCqap7Kcwp7xYN/vUMR1rfmPjXgR/Fp5rPnO5TutSFKXRDht3A1XviLi0WM0RXBuK2KYgdH0zHS9nX9zTMjgOCLBk+csgO0MpfYK+sM8vAZ2GZSHaEcy5ClpCV1qWxsx9DidN0RIxv/wiyfWKvAyEBAS6iacTkOAvHUgj26ltA7reXr5zlXJz0rnmy7iVrSCWxYn/EpL3aya5/lV+MmzOOtVkbc8LkJxDSk8xvO1mE9hcarbPbtggdL3vSxJdrcKoAS6joed+CFNy0ChNata81zERkqwzz1EMz3MCTUpvUrR5/Es+Cog+yJG+PFQHiGPAKHA4AxRiol9sVoIOhQ821YbW4uGhaqUQq6kKIIZ8E8TZsraCcIFcAk2yDPk+KbdoPTDCpLgZojGZgkF0YIZGAZUyXU3OFndGXGule6g3NPuYfzIwayQDmqls0TzMU7qkx6bGcs82jXyQDQwrnyfmPKy8mIDcZBc1CcRJ4fykcEK4gH47hx4J63PJRQjeZdb6PyAATGpGMiDMT7Y6LCTMAPTCRlqD5KES1UHAGE5EQwgPjHT2WMif6jShuCgT09E5iDDpLA8oiL4HGRmCkKY4QlvW7nfkSp9mW9cMDoWSsyzkErOWZP/nQ6KdkFPQaIc9/pUvxcqUufAz5eybvaqp+9BKhEL9BYQw9S82NSHCI0IQCV7825Od+RgsCSwQmj+g6dLJWbYrRY1jjG8MJjP3cfOMTq0B7mg46usTExhudw3FMfM3ZpW8U5OGITtg6ni/5FCaZyc1qxx61bajDHdtvPsRlwzjZuqkvWw7c2Ir8nyj1WYEe2w+TcPPwGUuUSLzE6iG441i6P8PXMcBRfBrP/Kx9IEWG0xEXyO7jnYTXxJ3sYPrG8/qlwLyXsE9g6qk0ZpV56nxFauSmtfUR03F6IHZ2IhqQ41lM+6biisgvhxLJHrLbX8QdUpEUzSG45cDZB4QBx041avqngB1iOiQQB3eJOKkD11P7WOVz1oRPoZeEhS+8JMNoal3QUmWs1TI1jInGV7eKRJAoZuJ9VX6cAXGJDYaMpSuVT5NVjd7OhGY23TrcZFtdPLOXNqbzPiqkL7P7jyELEWrKxnvv37cB96RMy+GKSGpzKR+YYorlqIhmBTDgV3MycX6anit/8B3dhyl4lR6V/8AgEKWwmfbYSC5k4dsfnqZq9pJHBF7FX7xJZ0ngrmWwMEYiVeTW1qR+Tc47FJpyAryAFSgZ0xEZNKecGCKGZQ3PX2dKhsCfUk3L9Iu0vp+AfENAbShjIQ7aFW8vwS8Z9YFGSxB/WZjvhWCarQ3Jl0dCuM9bRJy8uWSgDS1FoiG9PqW3qJdskQTJntWE0OPm+s63iUcgEm6WKNuExpzAblLPPMWlr3lcWEWsGmdT4T9UHEO3COUE9h2W9fnhq0Jvcrz+Y4T3BujXm4m+zDwcicmpvG2FhYCr5pmFerSdlesNMJa+E5+cHfMGqt6Qw615bsUUtJ1dyp7ho+Nh6a0j0oDvyaYIP6PDmGgrumOXfUyhrAkTgkfI7wJIyvSVGc3NsuySqp5M5Kd1uCz3GgBmfPRNVvbhMONzHHsSoad7XQdwjWkVqFb42keRRyg0LbC/FbEh10JVBXj3PZkzLFifm2yye+LnGBbjtvJFACpSFw0Qk5KDkGwDEHERVJRGyEFtKpy5iCUudLjHFsrTcBPa/UivyAa9clAPrj0tD+LBD8/f9QxsgXzLX61HH2wKGYdeujdhRqW9jEL44sEfcuo6fU6EMb8Qyu1PyRjgZ4T57Hk92KjrB+twNqIgqQJTLj8/inEC79TqIroeEapMIpajGCumdTVK+Q7Z5saJOYlYLz3/tlcKxNAIczRceaSKHHXvYbIlb3fplNTnmm+ElsmjDMojU2N06zDzlHTDZgQIynZQY91v9efaZ8NEIhMiTVag6zKBXBC/cKrWnqnOu2X4uD9sbYm387admE0vBHqL5gKq2YxE4FPukOLYqMEv/iuctANvJ8t/LYTlxnqdoeEh/WRMEJz8XY0AhSkM9u2SJ7nQ280bqHg/8NeILpHBxR0SQ1JyFr84/8pP4S5WoVQQykOh83iG3pZNJ86m86jQHn8rIvGna4V3a+R5bPCI1YUSv6fpCxe11sTh7EgfW5krDa1FfVkqKu96oF4BKpIS6ebunRRv7jYTaL7CKdL5CEHZIxyzWNaCkFqx7/nJwr7plqesQ9kfgHcz7kWPGqwJdXNYAW1+IqJ2WNgWgJL2BBqBOmEqKY1qjwYDIy86e9xIArXA+ql8eHSxOfm1HpGW4j/Teh5gEpFiLfZTaNtdv7eAAqe3v+7mk8WcYjbfkAtyVBHmqe7qluM6E12ssj9pQIpKFkeWMeXMBTtRXMdzjf2649Jo0fWsDGlF+G6KDd1Z5TnIvoSYrCMf56zRMhH+ve9CbMTwJafgLVwaAloY/JcrM9xjyCO2xjha+7B7SOmdRKSllpoBnnqe3gTdVB1ATSUrv2qP4IYlMHw+FyOhI7OdyeASv93a4xmdd05TfXHUVZJgPQfDz/cWJHcCg91qcfGzbxZ+jEOtpzKP5uB3u8QTkZpq7x/k3PNr/fODG2RfkAXCCnWMhIWkfbp47rj/7Ctol15Je1Izi4ejcKK3w9q70f1QWb5W0aEQr62+yFH33FoUFJct92zsW7NQri3nrHlJR8UqoOKJkeQp0zMrcWXMJmQLkaQWFr3oeILmumvrUzxFzZn3XLqIO+7yd8HjooX5tV+jcTnzq2eyp6W4sboWL93foJsbcYE4ClNglBzCkKQ5ww+b5GON9lChGD1/nJRJ+FfpULUL5Yb5zOJAXrWOq/XCXwkM9OTV80oQvJNUKJNby9WVKZsTomvy0esAfeiCp5a2v5eeQ3xiJ3GdvJO36grvb0a4/UDfVyTbTlNG6BCiyI6mmNsllvh92Xg/mckT5dYjQVbXOXX2ydLGhmH/XSyWoygvtpkFUjqirtMyfHLywBCjqahIQufWMsutpD8h4zqMGGLD6ZxXIRec0tSh+06wUoqbIJt7QWndOmk6vXwZ2cCDKmrBFQDf9KFpy05Nna7iBSi9qrkW63+gGHH+Xk6wi17LSdEz2VOkvfSB9u81GjGWdMhUiSIRr0YSq/v15cd9h7JY2IdkmctaH9hQXaVoKfNZN62mjm5tQtz41QVZzo73OexazbVU0zko8BBc796eOiZFL181vXuFxh0m9xHMQWafNvSqxK2dJymlbFK07TyB7S0tupav1yQYFsgYr8zN8dyYcmU2W2TNBaz6TjIkXs4dcZnIjQEB8PN/sgapM/cWAVfPiQDtlnILSX3IKf1XLDo18jFMwxfD/ePHXKoqzZUMGzcXToon2Qjnxzj2t2MTWdpHoPQbaMIv5r6S6gZAvB+l2Z9o3fdZEboRdG4jwbKs7eYxOq41A5oS7FVBR4sgm67fEyNydjKyw3XNGlyhKsFuUAt3se9jW7f04OOlMblDfSJLq1GN6+y8rPOUeB58uCPfFbE9IyEiJTgV5Jlh0+PdoAilAu9R0G8eRgqCVECeRJQ5hDy1X0ET0SUYmxCEJTTfYee2rZFCuQqqvk9wdKSMU32jNt4dQW03wcJaEbqj7+r6Sbx+R4rvrQ9sDhR0WyCIBsuDQ2EkuvVmX2kuIkW0Drp/wEeoXzZCOzRUJ1kR209rXrfwU/PlR0/lQx2PjBW17PsmEHC+IrZoZCksXSZQSyDKj2POyLzmkz/VImFtNUZzYkJ7JEpp01Y5im4bHiyFg+YKthimMFNvXiF54THNTRXKYeDVaLbbnnWicWJs6SjD1F1h+iVf8gEvB+sppIpmbGNBhXZe8O/bE3kBeXaDVh08IXVYyhGsS4K4QfSy5Ua3ps3FZ8Is2r44vGS90hdzZtDS83KmXgpYqPar9Uz6INv3rNHLORv2FZisC7CmYhIsDgURPsPBS1fo+KYWtpuS8AH9sVbQ+Dkk9cfylUFChtDTTHBX+p+1buPmyBJf6DDQGFgNu3X887vhxliZYpYu5Ju3s9RuLj3kACe+wZe7fcwDCe1lDOc2irocFyDFEm78SSUCJhH/LJfCDNowScfGdlZR0m08emHJzZbuLRMb3Zehpv74esJmI39uX89MP8qL0nNRGPOuHY2sqv3H+WzGMcB1b5cVOC8hYSiZLCXhpfhKYVcal65Tnc9RxLUPzg5JZQB49gTnL9XobV6RPhK2MjtSmBaRA8VK7jh2CdMkoqci0erfRiZTEcadD0ZblZlafIpmpjTkR7RT9benrj0H9kWvaYJJw8501goFYNZetzPJArqR//CoQttFHQj8eIPMNaFtMdy7LQYCQtX7b8tMV/fGOFn+UAe/3YJ/5zOLpUPKQHXC/+gaYmE7Z2bc3N/8M2wMpM8RHIDYsaQUYhSIdY23bG0C97Pmz6vuOFYni/4v76Cc0SkK0YBjnK8SfpJmD9bjoVRvKQ2I3Kf+hw2jZSOKFOxpq4e+N7KWIqYMnWgKl9bQj2obhsle2xEqtA88HrbeIb4cOo163fsLBS1ZgCa2d96f4dd1MM2QUMPlVbUmYXDJUpoRhXyBdwptZvn3QrTlklqD58zMVgQs37svvDFUq+EOHOEMPMgnfamAGQLZKpQmqyIHpT/DTsnffCPkRXZGdAnvvBsHQ4TOCp/VVepJYw6wjLa+LYfsIXbdZCVwmOkDqDjzUG1joUECHM4MRq+IGhAdONTucD8VZi/+8Q8G2xImnI3k0U1TFajwwCL8gi6PUYAo8tNt8qpK9+75VGcYsEDiRAqYTptRd4LA5zeCKZ7Xo6vqp8LkeWjm8xAHgnlE4DcfmLHFPtiz83SyJi+NvkDB3nuhKS54yv7YAq5tmA+4IrJA2t/TGNtXmhXdsCcm+rkUvEBWmpJ2Ap11AkVOfa2xkebcBQFH2ULAiEXbOUcg0gZgIhFgd1fUPuCzWMflpftyB69bVCBlL/98z99AdKLALp6CstI3ZIWqKzyfi/NGD7kIr8lFt5JwsxKT7a4k/AExQRxBo1yohTONqYKT21GcC4dHRDkVYxg1x/QKAkv98koT5cI+yCC/Q5luQe8hSij0A69RLn2vAI7hEUVTLPVjDa0QeuhbcGd0SNHtZvrGVaf4zFFtCS8XwvX6MHfG461VAetLtlPzfv30dRW7IXDwufUMN+gtI0/YlyNrAv0VXh4qV2OSEYu+byKVyWbTBm5Vjeitml+NVx7eEaYUuJR++G6BgC9ZC8l/oWbAHsD/1qIvtDTou3crSQ95duABIRsRKdWmFYR3A4hSS9AIj1mtPvh3sPVAuRSaBE8kWN/6VDGH7M3oz/3sE9N+xvAuejgTgyp5/Z4jb/rgFhLGaJX+KZMNWWsQBXtshcfM3u7NfjDYsUHdFahU9GdwuwVvsQ/hbVDreaO75xQQC2XkWOfo9X/m1BzEDh9vdq9k/kqN3Iy5W480LJ4FeojY/NzaUBnm9G0hBgv+yTF3z7kcu4Nvp9b9jwZaPiMK5sYKW2iajCRKPRNeXV4fTCmw9ZLrj47EXYPrCM/6/018pEujcz9oEUAecRd+FbtZFscbX69gk2D8Tki7fHxcCfq7b9nYWSr8Kd0jUNgWnF/rppqEoIaZBvlVQTzwPzDQRluD6gs2zkNKPuaUx+Q6uvN6qIzGlozSxsGADt4XdWWGx6gnri3MzWsOgREtlZrKx0h/zqhT7snI1t73J3ZUZMWhgih4mWGrph8s+/EzgI/E4KKFJGr7J6QHM50d9yFgIODEuO9s5q+PPyUi0ve9T5FQUUfMxMD6A8EgQaGMXuGHVFAMr9OABOQHH9LIt+cnCDxGHakBb4NqPyCN6ys5iisMqE1iZ0q/mIe6abQTyylJADrDlQaEKh4aU2T+Q51I3Au9bAwl7HNEtUep924JaT4FQFkIYMfzkFzLLuD+eoxLvt5SAJeMAwUJUBLisLwlBR7hv1KWRrY4wyuACcrJAAN8FGNPgxLqGwRuMCbJoOcYaTngOgBlmeMswF/zDap2sWMqitvBHYNWpbD35NAioSzUk1L8twoWd1EobhID8m3QyCO/3cyDJoNJQPP3NgSS7wnzMGY9RFKJmEGwfvfS5MeJqCv6CATUsUE3Ke+K+dRlP2NzDZLmKGUkhAFjVEYTOF4SXfjfFVy0RLLEf5pJ8PqofysmIuLn6JGs9VmHgtjbR4W4IwEipjNyK8BzRHodRoP38aWFwo+ZT5hkX46okyiYZ7k8akAHwJ3yQffdl9O3xD3PCHs+xDbhh9GQe5tuz0HnyghFQnR+GYwFpeAiJY9TjHONC2GtblTUFVw+NMmuUNjdh8+e3a/UG7CGQSk1A5/FUq2OiIIyj10uu58cNH1BFhLqRSGm8k8R/nwKBt4cb/aS0SEgpE5CjnwQ1jFIEN4zauQqPCgsvOy8GJKRhkSrgjxaY891VjtjJde4zqGBRB/hlCPVifTB4S12qp/q6gAu7AGrwGAECnl+5aYFws+gMDHJl0g+CoA//ELb/MeWhjKyHd8ftgmyUebjYd2+IPHNJKF8fEnvehEZ9nlKWMPRQxWJYkk0uGCZFSIfQgyLgEgipLSGGW8+1BvHAX26AFzXWKgAQHday+Y1AksnU5cvSpUbXZb7uz2kHpRdf+2WB+1wSX/wP002D7RQ/p0mv8c3pJjdyRLaStzukMfMY/QpFEQcktxS3C4w8z9Dze5tKmb1gO161pzMjwOr5U0VQmrf/o6FnKe4zjRlOCtgmK9NtwxjnLK209YSWlQPJIHbaSxL1/qwBvNdE7EzQaXh5ki/xVDwK+a4p8hsvEc3+2NP2CXjS7rHscfopk6BlKxL7OIH2vKGcI0sQxUMjedFhOjKakIsh7oVO1RaqXvSPKIpM6j0OyKZmOCAPHuryPzFYLQVXkl/PPZyDPcu7E+23AamazGlOF807unFxquWD8CbWt4XeD+J2gbS+T0Zxf5+F6rcZpXfyLtpW8IxwKeCK9bbPwujCTbxpMaWR8KaFJAc0HoPJCRnjUXrmRJg8OPpiETP3CoU5MkEVuvOVdzB30Sqe1SmOYZlbBhdko3PVseEvoJtaQEnOOnTuk2ciajaokwr8ML8KX+PzwRKguhY+SKF9BB0/Pjlz4DtcyOyJlUog24PIfvKEyoxRTa6ly/X+wmDPrLP2Auc+vFoWN1yORL/Y/ApitkULK3yjrRW5IscT6yDGWMjCJ350klHj1cphzN777OQpniUn40PoiiDPIS1HenNuNGFgiWWTtkFLnEMVbuC4irDnjSCFAVItjLw1SZYauI8R2ar/5w4fJw0Tfnw5l9nI8ZMMR+Bk8gLuz8i6wa05KZKgk8lwnSmn1xY7oKJTYNzNzJY6zq8MHg97XQudTWeNt4bZ0rnvpejw43LUBq8WTdIJoq1Ije6yC1q6YGc2nePRRdwJXP2LIPEQ3Z0v97AlFdpFRhK05ajMNYwb7UjfDE+x+qjNcEtBGdQ9FRueR4tQDomzn+OHpBAKjMhcFDsXxNwcS0JQyPNYI51Lu8UcN55Gh/qU94CUQB4oDH01OaQpMMFj9pa4YRDeMe2zg0dpjhSvSKcO90HyNE3Lj+oMChAJYj8qApcBFU9ftDVFse9fxtKTWsQV4NFsL8GFyIN+2sx7uYUKQCzmwKwptHn3yDjrO91ogwURhxWRhBw3wTGNDeGuWydJbotwkLfeOVWRdNWUrrMhNFTfrOI5T8A+JHeCrRx6d0T/6MaAFr9d0mFM+OyOrjuAavllawDZ3K+TOMVAcSZ3Z/drkJWv573FCgEQo0tmuZvREodOx8kMg62subO1eyDxLyJx1iZRVuXZhlhTyiVZ//4IW7HS3C3MXkVhbuMbqG27J5q1HthHwH461IB88tMCYobgWyq3myoVN6cXQ7x9X9mvTvqhArX2dl+rjWpTr7nZKbrfCX8IhRLdkV8ZD9/UcQLgSd791r6Bbtp13BY0UeZPDfhKKx+BfKjZErI6wYy4X/ysDDmWzyfRRl4UPSgxEa6dEf6lIDGBmpwjVw6lU6aWVYFvr0I1AN8e+R3d995YVNEXq/faa92RvR6Ceichl6SmH9ASXxHrGUdqI37nja7AHluGHnqZ9DvEq9bdRa61+IwwOGZxTZl5ymwTF+likRcNP+39W2a7/Uq9PFfHH7Lr3MSY3QsnXLpk1B/c9nviePMn+8l30hGWn+9PYh0STjBwXgoxlu4GH2f0hphoO5ShZyk8VyOwOHtkHwDbw3ie6OP9Gfj/yXvBHXYKYj4NJP+1Mt96KJiVLfJu5zjQhbyQURTaVkqqvvWutu5cWGY+19SeUpogodkO0dXTwcS5DB9dp7n5AWfM/+/Ey7P95Vp6tzWC59FPoDz2ef8ReC6Or7aVB2++pKEQo0s41JqgZESzyoiXWhc3x8GNmH7dOuWbxGFRDVYLB3cbdVWLpy0nrouzLin3RCdf0Tw3QKzfsZo7WzBmjIBWKnwoJXVT4RuOPTBniBc/NTuFUyOzImixmhkkCSnxOM9FDJwVdgys5rkRF7B+A9AfObVi1sWhfXKQ1viTtAoqQwL3abUQKbSaZTXIEvjYGmEhXxPQO6pJfF/2qw2UlCtDDxp+NYvuKTtCqZxcBGNjNkWOJhH6qobDr1cJN2F6d3CKrSn0JXV/RIyr+v+EXUsutKurSzNNSMYjmqgtuJImUCxZiRkYCQzgZkulrJV96pDYpSpBMs73snEd9w0vaSXFdMASEnG7lt2QzO6ILPSDexZVURbN4+i0EmHp1KWAQaAB3qhCmiRQpUKWBLGUCay0FfQtjNLkdI1+Ae5hF+ieVqcwpdKj03IfTZ/Ns1CrHG8HPUV+ld9Ma36bxr97vgFpEN4v0oX0Oq5ypsNcFuEc0NqYOJTGN20eBIpl1aVt63/vxDXxiF0sqSFZZ5ze4U5WMjNSOKdM6Wofnags0lUK0qokqcZRjsueQVcKcyNJNjbwDgH14w+PmszhANrRis1YFm2YDKUVMpE9L0DO29L0oPJrjl4D+s57+fkBirTfh7G2hyot8zshHptmN5v37J6PEXRipwB8RuC1VsRtjydMqyJq5tEA5gq4PifCy+3y2PKPzP6hewAQoxqTpf8Duvs4HQjRIySgVxou7TtKC49jQvMNvD0tMdkCJvxKIxRaRLHdEhwpZm5vgEkLzouc3mr2uVhk9+WrwaF9lCCbV5X8b1tsJ2meelmcryuqcJDlffOVZRGH5dGMJV5zmkL59MuYQKaL1kaZAsfUaR1IanK9CsugZ4Zg/loUM597rsbxmNZyS2ZM7gYYiWXXD3acMQsTRXKpzZpU9l+7DW0rXOUfSzbZ1aJt8hhlQRjpaYGkGGMrGf+7GZqpc5WBhHo3Q7LxeDHfxjpWVjNM1eLy1rWvFz0d7szGyogXS+pi205OAXBHqhMbLRFT0rSbDBVVY45RyrcdOfzsHuIbV+TghDhDsIFAtUpML1fDDESrpbepL6tSjjO2IH7HWqoCq6tP6LKHTXtfbLkFBcPdaNz1zFmp5tIJqrQonr83fuPHdLUiR9kmF63sUyMhgCnY2KQnaUxmD9XExmL5hwppOM8T2cQEqUjDSkBDJ6Yv+IEhYQHT+1qkYwN46S/Ti+NeNCBQZcfBTaNf8dO2CRsUJ1GItLMAFbI05PhCFgViD6vP7soimRLaF1HOTsjF+F4LasvYHe8lKTuR6d3tcXhdu7KE3Gx1oqR+6ZkhcFlExY/rFXSNFd/QJd4pbxTE6EVKBI4IUQa42FL4knyg0EmQLmxGSXtCIxMp0CcJ/DXD+4Ca6End233YdcGK00O9XRapY+wreMadnXgpvDEjEWA5f4lnLw06+A8w/xkR7zerGHhKVY6AEvtz/pm/97WGgCbhXsf0jcfhkUVx5MEr31VP+4FZlg9dGiXJL1dvmgVoYj8efDPGE0tYMwk/wpdOMwgWOG9k3ht/Q/QKzxTfphYkyc2Gmc2xALInNuV3NoOQV0r0KyxBRxMcSfhkvx+GF+gfZfd49tiphjSKAqUAAswbOTfZrm5DExo657GK+2N5ZGrpaNYTs3TMVet6ne7QARUSqBHIMj6VGomfTgkyMkAn41DdHKOHCcdJLQTH+C9X3T1E4WCHhYuoKODFV2YBmW28W5QAjD8hogYbwSLJk88CezJblAyJo+T447QFl4WAL1EbNhxlAAHXqGit0F/RWzlR2BDbk8wbbfnl9ajxDM1iZLBEB18ye3cGVtXJsiC53cxnJz7BnM0eROnkzY4uCXt4xNHSDWpQs4wXssO6bidd62K8dGl1j2r6IjwxlRsgDYz5j6PZl4WAL+ka3nCU6XI/Yzfa3kxtjxBKNyNGsXze4cA1lmy/3I71f+K2qEcEVyr6P/nCbJk8++kuP8F1Bao+yhWrrFvVvZlqyo5ozCGHV7baZxxRL7hl1sQSnn/wM1D80syKs6BmIWm/eY5tTw5q5BC859hlqbHhZVbZ07PGBh5NePjghck63sDOcrlndGRPknD3wfuD8x87R9kpuGXirBm2IB5JuHxwg2xmsW2u9RRdC42HE84fXBkDXXRdD3QQRjtMY8onXSqhEhUdS5VXXL3GfjZ7udWJuvEG7gANE3plZUGW5pKXUgroId1xVc2z1g6Gsq2u1SmcnZW2KFEW6fO0gUjTFo4SFAiZY3LSMDpSvL2d3cxQY9AjfemVMJgUNFC08FbovFVtVKjuyvJ+XNP4NAltWG5c0mMCf2X9gxgG9qiASSdk6GEQMi+eZ0X0MSdoRR315gTzRK7YvLzKnwAJRsoCqFWaMFxbqkRn5pV0XXz4/8QPn07wyFP1rLL4V0ncl+gqnkRPwL8OePq1AX+qENhDrLWnbUSYvrItdDVK56Wj5249gdblaqzjsNTHSqjo+c8lilco0rsVUJMsmc2qznVzenspE1/40RQ5zqGs/fLxPnQEz+Ge+fRciqg3F0rIxMvqg1OtArNf6+plfcokn2MabfeqJovOdayoVmuEVlqrucitYhVZmNwoYgGVJRY1xcqz53qZK+3cUnp9IbJRK6AutDiMyG5jh6pyoz0r8MFE3jIpob4sthTDQP/FsP6XePg87eXpyorRIrRYwcJ8oYzA9Djg4/1uZtJlvOmuJVW68T7mdy7q1cUTe5prW99BQWO3g/WDGve7k6+o7cryPuwRE9oXO6z27mlaOPn39nLF5YcvR7MvdliXSI3z8JyE8x1mvuEA+rosFdXzLjd2bHisVsWeqhDyvpH8O6tIvTvXwMv0hg2987tRhitrqqxCeBGjPTenoKmrTHsk4fLBDbAlwZKah4QuK7GS3nooo2e02yM04BO8bXz3bkVbyPwn1Dt3fqNRtdPzf5wDXAHzCbXOWrgXfYHHOjnfP4kclfhDE+r5yTJU+lUa+QtYBmQTjg8OgIYLlENL/ar0+z7++oqivNCKvX0jeIKSOV20xWuOMKvuRsU/g8TrCfxwMndvMfPLSRnY4IyM3RjAphgLvMQHZY6TiYJZp8sYFENbSDxiCNNhNeBMcRoU96Zpd81T88ZCebUsNgeP6LVnaMxtRWddtweFcOWGmV+B0vorNI1tb7I28XZFgPQd/KxhV6JYWN8MMnYerdv7QvhHDsFhk5Ol0wNIJbJYXthPXmB3+d/wX5uNf6nf/xrblwGYSqfWumXt+f2/SjPGnArdP7bebwo/couQq1NmKzXuAx5MDIAB0hMxo6zjcxj7eWVyYlFwpL26krxS2nduSrxldrAQzo37IdBhMwKeGtIMWoEsRfESB+g3L347zViW4sXnVoOA5HUCqKdFEe9NxnGKYY6gIk/MYsS7nwkIckE5VLOLwTqW8+304JB/n/hW7HFoVRFMpZLESx6DjaTOLc0odpSAVwGSKn6/7JfYy5tK05kxbeuicyBQo/RjHKJeUxPPcCnsit/740AI/gT2JEG+afi4QujxbmJ9yJQDxkML3yGm2vtkKV6w/0+RTHp6VUZ4qU8TcLwJa+FMpocByOEYH+EPW4PrLic51Yamhmqc5hiKiB4jX4SFl+wCmv27+dhB0ZR/LHTpiQOn0NOXJpwu/GP8ABXGZ2w+3oCWrBIlD5Xwh+GICi1QcaiSI5jHQYxo39DPNSBaKvtJdjIYjUKFDf3M3EBqzmYrkmTw7KiQYhYpIeUcSkOYfNaWKIF8bgSjdAxMXO49lnDIQQlHbsLM+8/bcU3AirP+q6h3glcMFiT05J5mxHgrx4+uGvr0lKBDhXpqUTs9XrALGzXzoS41dGKeqqeHcAbADxbLzeDQizhV0fvuW1qsQEQ+9x27Bs8PVjL+p7Ly/hIh/SC+k8cbgWj/+h37tCAT/wmzoP83fVmBl2jjezqJEgW54vD33T7clPr6Gx3zENOvou+QJ7P4pQ+Pm3X5Aq89pC6dBNyQ/a4YHc4x2NH56LRKD2l/omdrYLZm9ZOIHIQSSKwlT922pliSrcQ+iyrvkFm6ao078XG8GsXqjvFo5KnOvtoTvhnDjzD8mGaIkFsbJS7c3FXwVt4zI3Z552ZtEdHDibyJkNP6qVghVdX5/RkN4cHYW1MIDoqdCCaFYO6MXr529AAKScQHqh8IE6LmJMSa/5fI4PqqZXOvqds3h8LcALqQOEtcVaJxmCpl9Mqw0mSxIMP+6OhUbhA1kbSAga8EuZRJnJshpA9wON96s0OKgcuggDMRKuTNyXK33AyGgKB7/Y3d4izD6pLZsnk5fyAG6mPdJpWQZZCyVHahkgooDEXmLJRMndLBmA0dMiSLPq2518Ur+e1djdZPf2VaMhPxu7O+tMPm0BX/mr9T+MqfpQn6r+nlPg9Bfp/+g46HkJfvdbGk5++PwPGIhPRnF5hZwdkvCfPgJTtc67r8tMrsA35Cf4dPbFz3Ei7Z4ivxjUNi3qsI9vkT3jeYuqCVl43roXdJziirp+NMIq3pZ82CWb2wNxNrTqjJ5m5Rjdf1ulKQc09PNUT9J2k4kGB4/v0R8tPkG0mcGF3gl3EpK3hLreLI5v1sYoEJff1c5WQM45VdvekLfU7VUlrsidtmTh72N7MtRfInZOmgYCA/cbtW0X0aV3iiUeMebfiJ8hN50iXhqGiWH5fFLCyEM3g0U6UfQG0rsVg6++J6maXsVerbmNAB9iDDP+rZ+pZgEVLUrASTOJrb7/mglsr9wWfiAhw81nD+BbeFriEFq7hF9k+mwdmT0pWeLl6KAostxmnr5/RtbaL8Cb8hVyYS3XhinrOJIjts5/zw5j2iNSEiRwPx+pJpj+MTJ9NGJpg67TgwK+cHUuif0DqwNZCcZz946hfJQGFSUTJswXvH5SPF9uvToyQw+9PuBxBLC6iF4FkqB32ZEFeenIaq1fn2Un3ma4rMltDA7L10qElwekFDps/o+4GPjG7X5FSr2GPZyhIpCVgbQrC6IZRhlsGxubo4TXCU8djO0u7IB5OYePtdUXAL+SMArZzNt9rqC2SDmrZzzvYQsCSxhGysURrsWTB9UFhmsU63TR462ZslxKFHzK/Vio+PiNsfLDdz1N1hewmn0MqWaKmjgACCNpiwmCZlO6IVAFOWNbMztcl8D0jO5SYCMgeUYGGHMBEZH/pZ1+Ed+6uYsZQvo2eOQ4qDQV+Oe3bgn+TwjpCZMK9XbgACu6zFv4RiGVX+yNUucU0IggWV7ouRV1EyqC2UoTseYE8pPR/LD1zXReqvt3dlNE2PEyCqvz2RvLwzfYtkDYIZcprzC5fUYbQGeGX3fAifkwntAzdQFEczYHBOeHuaVyqmMvOsQViplnzjVcC2+YFlQ5ivP4cUCYij3eSYtrQC92FoDeLOJZIAx94Hk8m6v0eU9HAJSE0Hr3z2hHX7t9Uy2ant116Jp6s3jP2qDjB16bY1wk+r2rf6vkTe42+YsXozOER4mkk8MaZKl+EVswstXKz+QlRX30BlR6lV/wCIn/3NoVeOWJN1kMNNbVbiIZGVJR5avho8GYE8GViz+TbL4ljtSjGNM/Mj6bzeQe/W+YqdFzK/r/yvkOYDJAxLqSpaX0I4545cfzftGUTIkqRuMnpd/mMKLBtc0XMeTyLdaC82mO84zhcsq1y5pL3mWUgnHtjoLs39knSHG6ZpyA+mOtOYJfm/zvMTI40Bg1z9ViwXoCeUYcV+uvlvVZw3rB5pxR7PnWHdPrVuyZBPQzsA8Vat7RlGxF6neZheMcJBXmm4tntFYjzCzRV44iACWKGJ23bLm+AbVb5F7R7wNSOgNeLdw8GAeZdbzZ56W/OAUSRa8BBqBHKFuEOWnQBhUUrYQBZB8Iybx4OHu3xVskgAu9+d/n62N1oIG/GQk+Me9vdaAgXR9Ho0EEx+/TJ+DGuswFdK78V3AFUQC+x5ZxvBVWDuJ515yRn/bscClh3UA120e7ceR2VBtgm12M32tKluIXZVpO7x0sDMcT+Ly5Ns+M1EgMLauulWB2RWempzDY407ZnOx9i0BhK3XuXfkhvNfV0fnmGAamTqEUXNZt3h36L7wImo9vqHYfl4sDbCkbEVLG2BvksjfjjWqGTAbeP4+SlUVs+LAGoWa6WQlbccG1EVdYnhCR3PjxByF6gdEbHE+FqXhY1jnojMc7/Gq6qBxoiW18TYYzGUYIhbsRv+yfDIFMRPdrUiNCcEp+T8GDjWBnszwcZ6B6jJZgkotgIO6+ATyeIxe4gVKNgsAxH/VQgyz+eFWf6r3ytGVDT2OQFedRgQY2DeAXotD/zhzHVjpD6pfLV/UxW8J8fXJ1E9lYDkSTTja0c4LhxIay0Vq06vCih4f26lQEGg8x58HkLJkyVccZbrOuCfk0CK7SXC7cX67DriXTUFzjB/IWs3VrCknFJ+ZwT3iovSqRt+WAF+2/RoP7kcLhG2KegmYkFjv0Cr0JQzZrBav/VjJ24YKpAXrqzCA9yF4rILOkAyxIdOt1wjk4GWBnBlsyy8AuAcewovG26ak9rnxCCvASEh4w4xJI5RQRxcZcjjVj3J11nayBmEZ6E+E9Fql5mbhHuaGXU5vG3C3yHUoGHgpHXWbzsqKfZ3FtbWp4SGXCVfiwNMPyQT+ewmJodd1POafiVlEbaOspmTUiuFahyW9wfA4knU+brlKyy+acW61PlB3/j1BoY7ll//C3wfiHeys2941uWmf6QY59sgOa+I6H2TLzIh1qM28K6ENg+ZEgSX8/YX6MRxDreRQnQXQOoWPBc07eIQ19NwBIsQ8bbjlUZL3x3fVa4Axe171663brIruDkQtLv34Fi61VjC7pe1B6zP4iC7HYg7uSA+6QhkMG9BilA4RMPBwtAfdkQnNM/4ExcgLQzxUBMtj4HRkIj9gMzRsjO5RngxymKuYkTpvlyTU2T5DWahNo6nyHQ5nXQsnq/1vb0dcngrs6V3dCy3Z4gLmQ7r36qcZC9eMQmO6Md7E18Q0Xu/0qHrbfluSzr5dnb5SB2ZLBmOV1ZqmFmLAMcCPjzk0hVIMUoUOKXouYzHxnTEICUg+UOqNMuiyx+mzlyMBWaLJf8yJN3hUDzfyyOEUCkIh8ihvvWl7d6jDNSNkGF/lGfD7yO7xdvE/4duHs4jDNILNIx5YqPAKbOR435ZqENf2F1BVZC25fbuCqLs22cZIctsh6XZ8tkM13fVwzoX4XAYZnm+ne+HbGD3ZC54fEpiQ3pljoHxMCRSyga6mtF+cq2zdgx2blDhSR+PtoCwSOdsHsF4grFfG5vxaQBOh7fWcDgZCL93LLFDOeK62N9PlLnTnuVKJl4mXKBgsBM0fnYLmmVfy2hyYT0qf+xEfKGAxbWmvWwizZBgMd9z2OATxqytEBTNKQMk2Wv2D51H4YO7J5kFxuHbJIXWQhOWvyCG4fNLhC0PSDhYRiQ4XiPnXE9761NcmssSkCt22jxq1iIHmhupq/licflKIAzA0hL1Twt3Lf6fbGCwPYMjCBx0lHCw7YCQnvE+AbwG/wFS/7zj4qYaERBtsTUHNt1cCNTzXvPfHkHEWcP4fy1UYk8hTi/7k1luEj3doTKjGWioFVemgJCD59SDV8kNTHDg1qoEWzhyDxGi36izjGeNzW2yGUlty8vUcPCs2OuOW3F0abSD82IoOWk7qMRkIpYJhAp5JzzJVn5Pn0XOFBlu7d2FdHjC3ooKpkYXNcIn4LYyywjq4sfijqhgletiE3nMq9eBNXzjUJ3d8WLVdcSUvI/OOr4JvCw8XkWN/3tcAbpC0V643QiX6J+qIQ8FGTgYdEXvXRELRgRFxLgVHMBVNQeKLy4HD56HaC0OW0dOIcyHMHueKWC8yml29D0G3uygBcif4fOJ2JR2HfF2ENkEXXXZ92Q0eGC/aJKagMy/uBXI4UsfuHS4MVxvj6c3WhHIt5aE8hAW76HVHsF42Jqzc6aHRDAIPLKMsbVOjzgtJK8rzAqVe6Mbt3ZhjuF+8GbpF30sRPsDF8cYsNDg8XjuMNbgdfCEpMoaSpgVuWg/eNN6Ik4vwDAItLLQxUfFts9C0ZIHmYhra4lExDyA8qygEpubsDF04K2ZW/TtgiSOewfhW4ZlD58iHnRKInJpg4AUSJNxTnFIkGtFhY9hL9vuLE6yLDFrIN76vOU7Coxa7hAffz1RJlKuYUSgiQKsmrtAB1+f8I/wWc3bxpy0vPL9Nq9AMq5UhSTtFcvD5+QtZWRRxFuyeqlC02Y2qaqz7VVeFLrHIGRYHoROr8aWSm0agQnMF6DBcIub0KWRQx1vNyHu3V04garWukQWNevQQQ+Z9ipubamitkKyUfBzeAJADbG8oX4TyB4lDmBFuhWbHp4bvdQbkoSl6u47bhv8LnLC4bLCaIjj9HmEwxVy5g48jGcLXeoDHrlZnC3/gt4fNeBugfLXxrlgXWmLZ51SY/3nQrEk1H6YXFJV+0kh6EYFZxmuSNMSB09iLSBsg7twOWq13hXQ4cqchq8wSjCQk6gZKPzu/3hbcPPaMo+J6YU1Xpac+tL3Girq9pk1gj4NQp3hLUtAgsX6E6zNK6Ge5OcFq/VovWwCSEG0HeNZ08QHRtUaYEmdUOsOwACXlEP7N4MWkHEtkaESBwCOOLybhodoMJvHqPw6+7aJQHi3ElmYjBAI2ADzmPTILvEtmDfN+si5oHrDPU04JvYkkbN9yPcJ0PkBF+xJPfsLBADWiD45ffD4ucXTebicVInwqexseZsmuU98EnVIr5BikGQ7hndosj06kKFdRS7bWmMoeyzcdUuZw2xUzhcfh7kQ0C6wZlHL7Ibw3mQp8FI1hJnALKW7ZIE4wYORIKVfnpAwv3sjwfy5Xfn4Jv7I+GwjTggMBKb6lHAYpS/LkwkHC0NTu07hKWT9QUrPAoW/geQeWHIk8yXP5gLLL9vjMjXcobOzuhNfFVnr/zFWf+p4Dw3noSseLGC5Ls3/xR9UMtq2l5a1cD700/RAkZz8eOj0Sfnmy0KImjr3WplPiW8y1viQcQVOzN2pYmJMH2NU0O9kzJ7YL4SGhEWCt33xKzhMkamVUoBydoSpDjJlJucE/VMbNpHh07NACOb/PQLwakop1QIO/AlhBToljagx8RULjk95wl4GwBwmkhPomaRjzt6h0aY6+QkSi7N67oQvf8IW4MplJB0Ypt/i7sxRmUQnFRzyArh2rhHPuvfO4r6Xh5ats4Ph44OPhD8yLNyEKeM81H4B5/Q8Su4WRH5mKkmGIF2Bx17EaEBdfS/3Nzo98xjZu1+F1z73kFs0zw/iUNVsIxWCmE1Cjm/06xPR5T+mKfNgEePJpFkBtJVU4sCfk+Q79pLVd5QnIsiSJhw3S3dnskct06cxh1RgHFuaD3TqEafERRcIjVm11byhNxlhTgidcYQ7oFuhtrxEVHGN2gXQKSOYHnazsoO03KquaBPxpsw6PLWWF5mCAZlJdWRx4wgNnB1Efj2vV8ipJFS4FFFUfI7nsRNdMyKQew9VmCc69QZ367do1hHE/4nrsh2/nJsdOQV1M/RkcWcMAUQN0RmRm6zxYwaaTuq+Oac2S3D/CILEi6QGlMV2oqcwWI3VQS4SR0g8RnvXt1tIS26yfGEjoEy0DCKpgxEkd84M0etGrrmIIr4NNLCILXQ65FPkd/MGWW81mBgO40vRhOp4l6Jso+G86kVQJbmBtLXIpqpY6DEZ9fHl1rVh2XIEpH9naxvwcyv2qVp3a9pIggcD2N1LKd4IW/fD5rqF8JqGBNN7U7dqeyYBnOpkivfK/sjlkHxuPI85eqmwQg8FyZZVCy/a9771fSnYZqKjwARi+PvaY4/SGaz/SGoZbMlv4r9d0a/LWudGrn9N3kb+7zCLfk9BOo3fNBK9V8j8cT5rvWoR3dlePJ5dCizS4x4HXFq5va6HC6dqanMLbzG7wHBJWaETquZfFPe9nGk4FLGohg20ZrUhRyprFFDvrTAFsUtLA20K/DqdY8Cq3hbZqYJAMXlR/0+YfibCBChwAa0IR5GfH1mA+vBik3bYTXBbe+/5TsPYq7QLQxHNtkEZD+17DrATvU4OuqDrZOgVYw9gDVzZAfzKkvUUt39K4yUWKcWj2tjyS2RjW4Sxzkc42cyy9d52Y6c4sqTetguZ21ipLPBCMmXi9o69Nmhes2YNCCaLObgppUugwSeHHdFkYkEoxxPvvPuHsKyYuox3mgMSD7bkgmIWVfhDfy+tgIvDVGmFMU5U1eFRBsfSQ5nmnxCX9xGlMR+ewEWebLVme7oxlLq/iW2DU7Uuwc5FEYb5aLjgYk8KVbB3wiCsLc6/78AM9Vk8jx80C5WqNSOF0Ofc+Zjno4yHHLaQ2IdP5T4A8RQljy/Kvt6KlLZ6hSFGMyW1rqY88smKr8XSpIqoeIeq4rIy89ifFbl+xrkoyFq7+hXnLxj4u3sBoYrl9IANSPHYl7A7y/UBXvcYaKFrj+C7Fa1BbG6bJLHeI3QAO/3tox04rH4PH6OCyU+WHo5snRmPVzbM1/y+dfKixu2mfi+wDElCiduCR/4gUwCZzb3UtlgxAYjbT0qfvNenmNFAh551Ob5XGNbuaHvCkhPoFlaRadwUnvzT/XILJ8UQMTE4ctH8c/IPAMq+7aaHbKP7aeXy3EUOTkpX6Me+M+imUuGKwu0Po1zBn5fzy1qQsXN1aZw7IjQVBgNfTHJkJWWWKzH0f2a04jWrMuEZWqLSHscd+pUhg3THIEVH6zVTgoaVZV6tPCibCdagCk2cc/3TODtxiZay8WBbGlG6ABdgRwNVm1Gj6IZxOBqkyJc/CWXAnVq+FfWfqqBGeioYI0RK0pKS9EVTCjO0T6u6bcifvrpAXpiv4Vn9ql+7fgFKerv9SdHxBxjf8deuHDP/rbdqe4JIDgLFmgaFwUmEplpntnnR1r/8tHuWJf19GoqTwdC97y+uJQUgaZnLHbUjz8UaKz4tt15+xPM8Jzgh34uR1PdaSBoni7Q0UY7gSct1Oo2XHh5MzgOr0UPg24L+nTZtQ3e6DSIP4fx3Jp8+rdOiDnOMd17e79fXEQSqko7aG7o3YW9965RAGlwQ5wntgiraty8P3zA/qdBrS6KNls5gO6vzFAVualMk52GRwRGRj+RzNloTDsHe1hwUmnmwSF3SWRuUrcxQFMX8t/V8Thkq2dh3E+CjZ+aGYqFxZBhgerjBlp/NfjIgyL9z0Cps4e8RPPYjArScRceNXGbCDxHdUJdPTIpibr07YtVoPX5SIwEYuZ+05YjrZVmaEbMrXLXnqiAlxhoEXWegY9CbObTppVbM9oesQaGrxJFRrAzB4MOjBJadwNXhAV/ZlT1sUHrYWX5Y4ZY9mcVtTnIfK5NNdl2D5V/kQvWMgmVcoZvOezaUNYBjD8x92rAGihrxKyJthj7Iv1TVmQUTKU7xeijwNUepSzc485k3H9wH/MaSdnn60DVk0IIpYOHtEYX5BYctaN0m1rlHPuvyfOVRbmRlkvIxyFkc4M4YaavEc+mzonNj3IKIVSmYr5OKGUVWig2vpPQsV2k9FlEnijDdAhnRbj2cgkbOAAN0wAIpuQLlRf+levW6e8l29cIb8ya+e7vAzwT7R/gZAPrczI3HvOufvA8nNDUJInFZrgXETlw6HB1kL+j6qb6N8LrG+F7CKxE5OF8FXJjQkEgnpKZFIpkw93aws+QOKDDKPxLKAv141rc9+9tEfDzsHgnTXIU4vvxYxUGtXFO/QPbfdefwvcs/LyNqmL1X6qG/z1EeHbKu0suLG5O1JhDF0cwlO6xfN9bfWpTlvqWLkrv9TuWiuPyNQBgknq0zW1wacGajw2ZgI04r/keBANSUv8bKx9wQEeF+CoQCF8f4v598R7OMfoWE0QAO+YdA5rXJjeMrrz79B33HhuiwCZ+kR8ql1LheWYu/B7Wpuqbl/6sVdDu1aWT+ysTeltVfNGYWwfC+iF849wtJPo5cwKdQgluVyQT3bsBiMYowaGndVmrU8thUe8YLdJDIehZD6fhqnJALdFb2gn9bKInXfCqm/UVXUE8SFjHURURgg75hauhW+LqD39owEA/r9L96ARdjMfKUcbO3cUZx473f418kk4wuE8qUPWqbr/0Hj7xB4CthFd+BjIftXKMODgI63OqlcZdmWBownkswUtiw7Z1Zt5Bsa8KYKyPJPiYPM60mv4IU96Yfh+5JGRjkgCrsPF7Y17BIkcSviYsvYGNi2puQag8XMfyG7lufMqjqmIU8F3n5wUPeWSbhISYrErrMJmz39JXL6JxgShC5n7434TxLohfk55D01vGJNgrWao93xW3xFuX7HYz7uPUNIpzDVWkSaP8BbYkVn0WdyXkkBMXHzAMIXsoMcrI0JuAxVtDRyy3sREF73FnGURKwdUWWHsuVnYIcekBisvHxmUhwq8YaQfKaHVixrH/sTvcBQrJXUlyq3ZGIdPyYd3CLlbh4heMgrBhXrIWEvTWvchMb0OmPe3Ru1GQXh6z18L8cyjo7O0mwVeqATis7e92WcMCLsPvciJfqkPtzTpKtCcRvw3uXJWH1L/Y3AQqxxKD0uBimqe7uKeKo9IwjKRnLL2fMXOGRX8HepJDBNa48dVRx2Z6APbInHVmJztwr4Im9BKK45Hiaf6xlkKJEWj05Bc3mPoNPurCeuWL+L4TOdMdcqaCldQoiBvo3S4uOIa2yr5Rjxe/sG1srgoY054QrfhJTGQkYmfCze3GSXJtGzA9o16DFuP5gC+xSxM61s9EU4HS3TkCPB2tADGZa/j1J0QES987PC+ukv7o+64bS2ZDgMQ42Jv+97NMrgmz4PV59Qo8qDOwT92pzOD/7gWmab6z3GvVjpehhOESVOp+HlB7jQObLYIaRVmfLhwGP1ZsAW9ldop6ND4r21tUqArQsdCugfFhAm8I8ZsBAFiPUeMsVvJk0at4pzIfTf2UK1MiN/lz5pnMVgUFDZrtZowrEm5juYZ1laYS39rQXffKAq9L3G9LCGyJpqkMPFLAYJETRlLEM4M974n5NH87GJ5WVhe3HWBAKoaR4QPhRDtZKHQD4vOXQmuAKx1+qFfG/5Qqx9/FAxPUChM7SuMJ6k7UNDK9YmFnF2dkwwUyeYoIy4PaU8Vr3QaUto6pgFax6rvn77RzvTZv9U9QU1flglSzaWitVI11Z1MhHDkIcEbzIyTjhU/0mFmIHN3Mx00NYN37qrdK+fHa5IjK/ti2N51uvKKx1MiDw1AAdetPRuOYgdsfXXbWkYo2cCIiI3siVsQHaU9OipLMRfJPIFoUsuXuR0iZT0MDtDZTisN1hVo/ko6Hgh82PbhEFAIU8HAMfE4rwRQJ0g8BwYK9tx+nzgFUTPOvCfgnVNl16VbY7qdIxfOAIP3wh4oUjM6976Ecrnt9tecoPpfW/2XKAlnIHxchrtkNekxjAwtszjFU1PWG2zHwfwrI72f0UI/VFZvdiz7PTfzHl/gNqsHkhfxIDi9k/EuvZOKx7JulA9BCxFCmOd0BZvs8GCilTnqz2XRQSZRVQMGVjs4o6zeOKu7zLl0l/X4E5Jc6uCuQ5Wvj2nSZ45dVWLSrQ9STj49rXWigxJhNdf7yzyhc7EQ/lzbbd7wPE2qjM7eLExqtL+eZa3Px1adit57JBpb97nAtdDFOxiIeBCqSKP9oS3jyeb4F77BxbFAv+uQQDooOBcvzjfGhyi2s5W4bdsZUteeQgrvGq3Ow3RAJTP94dwrtOxQbwhZYekL9EBBLcKEQQ3ODE4PGRvLVvQK2xbSb1g/5Amk4ibGc201g8Pa/o6WHXxLo/ASWD0UFbmFC/n9sXJv6n6KuMt1DluCv9QN5twMsfaQQAqUNCYBENvdQV8sEFSiIBw4yJ0qeG7qwVg9ndPS4ctyCCfrYEO8cOUypNzSCizS+nf8+QSyJMTl/y5wpCpV1YIXf4+ElTPrZbPz5c4Fy/mqe3fQGlDovhvLexo9Mc0QN2zz+yZXu5+46HT/H4eOkTPs4R9xLYDjnc+QiKB8L9EGLl/WJGePLUdLjlgC8MeH6tL7ZRWpb4B6KkP6/T66uns21+Otoj7yj2/9xFRldyGwvD1CrAheHudX50HKLIexedQn0xBcWYQ+ZKyVEeyIPU8Jmmwn1kH5qdDWU3A7Gf2I3F6+75qdrLch32OzorhVh6BNjXjZtt2nYns3m1pizFN6AJq6ABGrPj4tUaQE7X4/MUnIt2J7z7jCBt2N46J1NRn0kPmPZHqvK/DSM8JMg9mG312Jaed3aTaOCa/uXchv0eBUiXi9A4rmD/UuDMG0Q8Jv8wTKMp+vkXtLOGqZQlgEJZ2UFj1i2J+Ow+Dvm2VI/vRrjbmLosK992xblkgFO5v81XrtJMo+2mrbZfmuUwDQ5qjmNTSnOT4vqQj4htYXFUkFvYHiQKI58axGdpoNjPYHvKLxQKf3pPUnD9PFK/B7fOEnJPqlSKAb0kBycvK9ZQ1zy/z1bQ0YuprXUVQVIOS9+7kx4gHctGnUV8kcBNp3fpCKqskV36n2OrK3suzOOmOdM6IlSnFuAlauuLd8azsaDtm+IYRCIODiueqihFYAIH52eLCl+ngzb1qcA4TVcU4XWrFbDXno5P+pExNXuNoWxWiKna3TCN17hywuKzHJLY5M9z6tKVTMHUqbmZGkjFo3+oSGpTZnBfqZPaM2m5vraC6ZDKH7dMQpULgkjwZMoVaHxJrobK9q0YlhTU3WEnX6Mr32VNhoq6+DJjjNz0yJzY5eoQ5BNC8xBpOjhq6xMP+cluTu+IW8WYuBc7lpxLpFJPuJOxUuYlW4ICsF9nZWqBlnOZUHXkKfmIkn9WXStPuGKXL+BzwGiSGsZkPNB9XqXWy3J0p9UL218NXjE4I0hr+R3V1b0tHsJpa6n2dE2BS/U2Suf9q+zHNhRlQzv3jDSB1DZehnpPxVVrfCslTLnHzYO/H6RjpUEW2ehpGbBuN39ZGrnNiZnLoP2rHCi5S5TeDQ0vcsvzBrzhBlsY0veaopBaDDcLgm73fqr+rcM5qipi9NEoWBaeKeiLIyMEbbuC8zzhp7Wi79gwq7+Yl+qa3N96Z3K1e/06buGSc/rS5zXb99Bewn2vvpjyvXQehPpmykp0rrDjfH3qfbuTafBuQUfPMqjIeJOxJt6SJ8tIy+wn2WpBvmGkJLQbwWyYr4hNIEX3MB8fAwpwkJjrehwGdMDEACWAkZny3kezqyVb8jbonGLp9WbIsh336azJbdIwpVrTYVgg0ZkFRyFrsY6wC+X84dbb3KBPt7HoSyCjsyhghTONNr7scTJrRbLy1pTAG3sLxPNLe2Hq1raisCAHh6E/O/f5mYGrF5WRRSdHce3v5MVfSKq7GwD9/dSXuBw3M2Nznhfq+Eucgm81FsHc0ZhCTTsegzW6V61ReZNS+piXcoxuPvvG1RwXKSmWzjE7fWX6E2bf4ny1wsdB3FNvfPEJ2me2hMD3W9b4v4YRewTXAh4psgmdJIkllI+UMMx4/wj5WayhyHWTMM5+ecmq3srt2mVriNr1mxfsTuttc3pKgpVs1GAv952ZpzFXHFOW3lzZqSEOA0/3x5I2d5oMRjphpkr5V6BvHxEU4H1o2akwhdmOCCiStXcejPaNrrzJLWLpVwgHECoFag3NedK0vk0kURPBayD2onuCnfrddhZ76+6EpHCQbSjMkLWXPVCMTxcNVfG4rjOHM0RYwchkl08hjpD6FHnfGUxE0M1nNF/ph15waf18JQi99UOZUaNuFElqR2KCF1qm0B9EHzWmH35bKswHJFcidtgQpXbz3utpYGsfSLGWMMX28lqBH2h9AyoQfK3k+7KnQz6HrXJHp1fI2zarUM4YBG63mmUUwZPCM+OH2PF5YSr2eOF8zw6oRLuD81XI8JJVmPi9xGmqbIXVWgTjXEGMWbwcuMKmBHS0x2D4jLykZZpzsebt+GJRCcjmUQJQ7xxEIXM1naUqg/rlhrs+1UgwQjKvZkZcbNydZVWf5CRTIk7ZvWL4LLgxM9YA9443jgjJFFExON/nUW61IGkIkwiuV/C1H5FKFKyPhMcuFh8VFWYhD79hmnTS4qThgPQ8tMwKwTb4jVMyKodtXhepdsxcC98RmAioCuRcHxA7TKW4ViacRe+cqJbrjxnM9s+qEG4VJHjOEA29zSnTMjUDL6oX//gk4Ym0vzUjMqFkxAw5P3o5ga0IP+scRzWZOmNgGO2evUAKCS7iRD6eIjNAueV+9Xe36rxjRjpWkNjYHn2AUyAKjLTI1fQDDRDTs0tS/DwFswEmlhGdRgsaluXyivr1s6UksCC81kKxadajVNHlupBguxOC5RRcfmbjxC0FfjHHWMDUPkIL2Z0iOk68HbBg2nEE+AAEMim/hrXUWijIYxEcbNObplXBWHbXIHgsoxBcB2Zhu3tFKA31Z3DN0sOjAYqxhNaFlnR3VWl61GsKAesgpoQ8t3bK2+zzCp6/G3bp9rR7siks9NNFd7jsWYhMGz+h9WwL/LqbBy1zhtvstWx+6+Rcuh0zDMwSNz0X+9SYB3K44QModXGQIIats2ku2sQp4EPQ/INLrmQOOIobZ7sF50layvwtqgrkClKXJVmxnzZfZSD6fuQ+DOoaRvN32moxifVrEXg1wmlt3tOLix9xQFDuQmZpi+kgskWqfqBHCdeniE7jq3V9nkSobxkmP50h8jji7esjZhHR/0LI16Uf0dtwjSDFmrZ94mhdgctoeuuIFITSirtNC9xfCLuC0/WljM9ZX5v9h0Js1lpqb8bfH83GAmuPnrtLlSVKYetHWazxc0e0JkZT1f7zvMQMskKucnR8XJQ4+BXMIyf1v2QeNuw9vYPilnQBqWFHMfHQ7w8HageJUmOGggM9Fn5FrSgABeWviFbT6XroOk7jx0agbrysycl/GnTvFJECoGD//21U6XgDKXaJmjaKovRAlAwH/HFRCXQDAACivGUAa7v06TZmceaRqUHnw3AQSVpGdLGCL1G3gyDuOrlg9kwdXRgOHd+ykKuU5saw+e0+a7h4k3yYU5orfx1L7xed93C7ugP9YidaevYHxhGAEo4akXEMVzs5wdsgKljTAwOt3Obx1BRxWUzvuD8Z8ACz/ayPO/ko83+xoj+nbZD/G0DfK+rv+IitcdZxc8CPP+yffejt++krCRF2srPtadQu93gbgr+rTNH/J9kaWGsNzGTUUl+FZR9BGvuwYNvLqOgIR5lKnrNWxLKSI4cGSl1N6euA9qzLd3BV/X9KZb8Jo66+s6N4elmwd5+/V9LFn1bYxxC7tfU5+Hrja/nE/3MouI5mR9PdiD+wtslnFSlHIY/zDMqQYtZOJlP5oiEHIoPJ/lKF2YUSndXwmFaXBKFOV9qKqt/DwDLYFHOihdndwZC0NLpBQMuSUsoPWCkeKH0dx/ziG0nxZBqiIQoGHJ+z9EwlsQaNKeIpPih+ut+iPmaOPRSD7D9CyV1fc24AePgemOypjFU4RT9V04+0VsbG7Wb6JP531j70tlUj6aZq3XEx9WfGl5abesWQ2fOsugMnQ1+CohJToaX0uVy8jcF2naQl4ZuLrWJsjKGE3OW6VWjn911/ZP0tCrTuGl/7MF4zehty++2phCThVNn/XP2rVBNGUGfzXitEp161S4uue6cJ67y1WRIy1KvdRl64BO2YZaMMZ5Vg90SJhdYnKOfphh3EAxR1qChZ7PbC3UgGfds2XX3spVa0uwxVPWp7f5xXUv8D912lBcz+EiU6C29vO1TmvrMn7EKCNYlvPdD7PNoj9x/Y77SZtZ9uzTCiIqi1QbvUwLOttpMfC/XApBRfI/wzR8kJjIV2xgOXq5I3ODQoGDe22/QsErKSeABR6WC2mPglvIDGLFi8+hSWiAfUyXtkl+8JSvWPqCcPrRnQ/WkVj1fT1W3EF6vI7IuDR7ASPTI28Cs/mhi3itFfMfs7ow+EE+9ndmyMEd0DzDGmR3FPfPinNVViv+2HiIuABiBVB8VA5I/o4ziQ7PMZ2wNrM0rbL+eRilbxNULd9O/1lKR/5/Bdwnvo1uzvLepCvFqSVtZjUx5GVrYz3ga9GWmYvzMJnaPckg/FY4ZqRDL7Ox9HHMx22zTGn0ZMImpzU7U7FhMLg/khovgr0ilJwf3jODHcR30ep6mS4gspGSLf0JbdrTJGAgAAsAmPt8yb/H+iJaHTPccdMkjopuJ5LLfaTegV/7TJpO8z/tMyoagEboHi6B3cvvan8hgZitYVIHJJ4wpKp6NuB8fbUCGjh4hO8c816ljhZiJOPzKoMQdF5ajoRxBAob1ZnB/QPtd42ZYYCCDRjnxqfRHB6OCu9YoK4TYRgh+b3c919v5iXcx9LppTX1Swel3wCpl3tFU5ZqZZcF6ZOdej5VHVJHEPwoHSbCvpvtAfxfRSHfZyJx9P4vD2H+welyKHj1Z6uupAZ2+X7XYfXDKh3UZZ29sj9yN30sDLqpvjVKZpXMHe2szUQLH2iGSNdtKRBeCMFvkbO9/kFccIUy15flQaFfYGkkE+cBswCVcFWfktcyRyBTLyWn8Uo0o23rGglqVLjx/2qr8/SoePkz4OrZMpejC+nJPB+OUz3ynOjopuG7TS5UcYBgYhyy7PxNtvornRmiesFf98mFKqnR1opbH224dk7QGdTxPKBUYdY3EYVAm140+bvxsm7ifHw+4SEVayhm1S2qADKhQOitsR2yFxXgnukCsUA+Fp0ok/ioz+RtKLxQ10pR2NkHsPWx8kPXEbbLfLuxi2RYgGCcvNn8LYKLqI7dLwD6/vA5mkqJEQFK9CzUfym47kf1FxYdx2rTcjURQVipiawahFjJcwF3lVrgOs0RsTV5Q03uuV8mgA3KS1embSw9sOGVHVyDsYkeBk3BZXWLGQ+GcQbvfmwE6h1nhNucUE2O4QzcR0Iiguz8akyKBYoWIClo13xMpKOu1HUhE3XJDiKm/kCluzv7G9wu7ydWjHdME4Ncl03ePTI7dMd/RlrUgF+q20qLO1uJ6VG8SAhfO3KDUVuhrqSRotctLIQX2WypWi5ZXmAetOcVCkjqF71YpxQ5KMvd58kMmt+W/bA6HDNIID690/fLwRsnq4zj0Yv1NwqaWhLPSsC3rJ4N+U9LREvdZIGqrZXrrkjfvVdDeLX5oztlauXnKRlwNRqghTejkrVehAek7GbAOW7/Gmq9BWfgnrvepKKdhp/1y+zll4/Zm3xG7uIZIU7TnqawFeSQVjnXooHf+WJ+GDbgd8oETqbIAclkBc+aQQtoqnPL0/VgMJeTq5A010i3pQUDwIIy3vX4AfMOySz3m5ST9hZfZ4idJkSivCa8yh16ectH9k+P4eKJpP0hDloOtqI35gCWwYmw7vBV29JWr6t1w4GRgaKxEZM42GU9xvFsnJwxKy7wXh8leFTdjOJnGgznWw3J6RcPFE/AsAHSYhw/mL+FqhcKBswyiDktWbEt9CODtEZ1ixedjIiknhR8qMJd0V4DchByev7eDBXYiXiRdF7L8mwp8LyWAJvf9epN+yrWKTjSDOYhDyyga7EX9LRaOECrDs/v1qSmzvHRhOWNOw+vrxAlbg7zlpQ2BllxXPk/y9v+rmljxp0SzJ4QDbfbxBxhpS169F+wQo7PtdnuTqtvN8CPhm9eS3dxMedVnafXIjtVq0A0fOZMkjiZ6WU1VV2kMFOdc/mUBqQzk4YaDRWScWaqd446QbMFiv9ILW+vlrkrUKp6SnD81o0Crl+/syaEFBSx+4/vwthJbm+7EUYV4bK5Tsygw0krZrBUQI1DBbiP0PZYKlnEZAQRSMztYcGzef23vMyM82j7N5TH6Uyfezb0Xmj53C4EdZSs+r7rvcBpikwD/SK/jWBSBKJ2RtJOubH5vkz63GF4P7sbpfd0akACzVNkpIynUXhRcjqkwab98I7lt3CQEDnyOAPnbfI6hGAKGS4XTEDxKeC3+838P/JlY+krPJ4Gxt+3ezSQdqCvn4wZYRZyIRz7jhm9OgUui7MYoW/wRxEiTtQtc6GdmPmu4Y81dP4BTp87UKJdnmlRYf8vxU15yMIaEc+bVVoOizWWTdzP6YVRA63YdwWs3jxjlS0ZFv1VW06ZTLrxMFhVn1GfDSJ34O27/2z/OpHYaAlP8lYYJ93WNhdn2WnaBVRhGyG94XvKvkgrwNHUoTtm7Or9iWhgd8+tHKF8GRFXSmR0QpSdAPBQkj0FwIZj61v9IRxlJ5f8PJj1Q+Xj2TCuVVWmA7eN7K/9LkXyZHu7b2RAz30F118RCHe6484E3trwdpRhzsDiuY+edP4KpXSqeLT3mr1dfriPOJCvpp5UOgC6Q0birt+r0M6+QMSqWHHdhOG6RMRfBK9YzK+KX3E3rsdA8USTENvJl7b/lYKynKzvCXT7L38HdRRbaibyadB+fb1cYKScV9dA/r2KYddwRx48JWZATtVv7GNrPkqWHikzy0h5LeG4iS5W3Qjasi5y5UQThBPc+anf3l4VJUb8dLOnBmvjoanriEIXex2MCndzPy2AkMlOIfn7JvLGK1kQRliQ+hgc8KQFyoOvpjgJ+RRgd8+m816hRg6sia//1weYiIUtiGZkGjoCQWYUBdTGxqspp8DABDB+uxSVZZFBcc8Kzlzco5O7B7ZNQNVCmHdYQ5xhklBt7UcqxS34kxzGemTs+gMWnDliutFfMKe7dxBCAnMFWplNwBfgCCNNETlR+BS/hFndWpVif+wsG4SWQI9QyezUS9eJy3jDWkvDvehAsoJKeCQRFi5FCQjSO7gF4zSmJlQgyTqzTKlvkosN0GFNWbd7CCYHmWnwQNZr2hDPknlxf3ZtkKFFUKMGiAS0JUuNns7zm4jRjyGCX0vhjzUZB+SWFEU10lsiV+bZ0M7p5bt09sRKmGU+b2WBMgRGcrj26NgvQ2pBWH/p0sdhc7TgDhXbXbl5dcCew/QjjGolbiup8ka2W4b+ZrwUnl7XXH1MEid14uodd5iBliXeXcvVFj+74wO6WioOIkKPW4PkjNhB0YaIg3qEs+nh0RxBOQ3OSG6XsUDbFFGAsrSq8PyVuqngTwg2vAbWL0JaJ+v1Wztveuv/Y8PwUwSU/kHjzt81yUZEnVpuAezbQUIWy/0Bwu/bndzVpWm+gBp2iB7532GxBZ5gFtDK3Ul0Mu7461R/nG1lllhN/gkPQgzapy6OLcMhDucf4b+0huiUoxIBNE/zDCiHOB2o5JtLK9I5L4K0VgThUGB7AKeQ580eJiDHbtibVe/QEyqUXbTueGayFgXaSam7w+Zh9zPLWAT9xAoZcBfigXllCxOB6keNQHQsSRIlHYSTubJBHKggN/RzC8lShscGVf/wpuITyorp0OLHjpNbS8d2SdDW/+DO3F38h32OKoCJQX+8TOil8ugoQzf/18qyIghvGfI2aN5L1lWyi1q8NAZCf95zRBlfsB/n0UFeRoZ2M7AUGlXpRsRu8zKwkeL71tfVP6GojqU4HVlI2a6H5gRLXqK3/Q7O/Jpu8U58Y+KYfAUI0ZXGCtTW/uEjglQIUjuIn7ttIOPV9AlRA0jJx14twPgKDfINr/AOtCXMlwuMZ9++c/D9iTbk2Y3w8TyOOsRYeUHYuIt3PzHJ2bsXYHRktBvEERZskPoZ1ytPNV2XW3a89ffyyJa8HxBZLz01E6l7gkfGzExvLeYOUs6ir4o/TZxrkZyVp441dLD7GPP69g8OCuvY25rGvBpEQOhyj/ivKo3QLhQk4NeyxHigQtfEpJAt7vgIYwP3LIvHIAZo+mb8lgnqBVrl6g2/PAahZPlRXpPzH/0X5//qKZ6Dvd+kba0gksRNVt8L7JzfJkP50tf6d8Ul4jkq25LRJOxDE3avCnsVpDc5XVxeRHvSEwXDGDPeOqzI2u86iO7cUZ7FrKJc8JiBDhzphjR4XDNb2vtnaoiummI6QVyW1Rwide+FRNHj1qzfJWh7S7Uf64hG+vqAcv1ngZP9Y0GNXBbVzCB1rUw5MalPKJd8L9J58QtEfG1YnZi6dLTqnnuYLRYt/AEOqmc5sC0VIP3bxwvWF98i3nZUJzyLTU12dqJzdKQdQjCnmOYHATF9DVQ2y2QsFNSXMZs0yRCJ/N/N+W8Je/o2YA/oF6ulysITGriWlQC/NQDk3+dREAl+VXVtSbWEJbtCDViqYfxnI7iQJJTr8w5iMiCL6eZXcfF0XyL8V1Lz9XylSL0Ez7IqIXWZyFQGBg738XP+RG4aOzEDhO0PH60UlhP7RWRAmPQf7cwgqbXTZmmQ0pJTyU5tWiXIhz2wEFZ5hFP0CMLW4SjEAc1GSn56VxUMNUHjFNwPlcA+QWiI/SGsHDO2KA0qB3UDqJBjAd2hnlNtlZhuqShTRjOK1ttw6Pa44EqdTbXZluOULxVda3XI6dhhZFbIO2hTL/5JIu9uodmVsm5Ny20YJG5s9dT1btpKGjvPUIA2/HD7yXT8eIAH5gWytjwHLXL+q4PVqOwUXMzs447mApM39VxrXQaqGhlPissfdIpU9ahN8GU8jwvlTVgLElrzZ2bRsNjx3NqSmnOVkTBj8Sxf2JmEo4vJfVdFwsiXFeCxoFoRrTyJNvAFjVvp2i/qOesQGWfD0Vu4BddKY5gsFM674s0uIQGJA/gITwARnko62VVis+xBQxdgsy8FRS4/TCutzKijK+MpCH2GOsEjyPMTPBujjdKswDfEVdSb55dYYmW78Yujy/Losw4GKhXwvdewU8powHIrwd9d9SXXZaHr6yVAsguu1akYnZ1qH5ur0V2ZxWax8joNLnrrWJeKjuroi9D1fLXY7gda2f4+IWYKvSpqE+oEhFjQJI0LsVVz7dB3smMcoEFtQShFoWzXJeePZv24sfXW4GNGJ44LgI8hIOzUyKHLSirGPYOS1KwuIlF3tF+lPHcumYBXUCbS7wftHBTeq94j3PiO+Xv/ATFcc8Pl0ELVzS9dsEZKINEhuSWdao/qz+9sB9F3gwSh3h5NNT8wOtdX/5qib82pCRieBsu+QoT8E5R6lP4nXdWglJj4PiFsOpk722gyvoTWCs7biVFMJ+dkGfk8NZPdUj5qiPs+sJdWY+0nLOLnUpgj8uBmmnZP+RRhn+PpLW1Zm/RhkpkbA5ucQ9sfUfXOkJTwjh0yDkMnX6+0nYfHz85/91GP3/u61vNcMzhhAMeVPwgTo1pmAQwlxMpLtFb+8X5lCO25iSkpOKrKoOChd0Vs4x1f6E96YSYenQR/u9nOwYzvYgiwPIwrBOCDXM7Smr0Lgmtovq/GMlTgYZQ7RbO2MiBt04msrkeZaVl27NQfbHCz2COd9JK6FctJPJmCJRTinZi6PHEMG1JwUGeygn2soqps1PstlpSo+e+h6vT0SavZ+SHxVBosPTEHeAWSlZMH44K3oA6DN7/qtEToY+PJF3dtlFkFkVweTkvmteR+c0VXR9hfOiJYa76fYssuis1qx3Is6Mpe24vD1McNv739H5l5RtS9Gm3FVZa+Hx8SXl/TLDXi3/iSYXIOL1Y56OUDM0Uso+w411NSiYId+1ZCHRq2sKcr0Dm5K0qx59xyRirXFArD1B8gdrH9gq4FCccdC58Gi6D9k1L8ChR2EY2Aa5rzWGC02cOLS+4Yo8KTC46CUeBiMgUZTtxJGl0PZTYS2NSlQ8JwqQ8B8mF8BNhpf1qIRpu2w3Krcg+toGVnQn+i7/CF+IdHZYAqD7ZlTUZt1ilzpOg9PSZ0FbPqebFT9me1B3jtu5vI2zI5i3Awaxag3PNflC5+q5sfnnBlaXNzaMCu9PuLGTAsOUzVlDIu004iwNyDCG1mtVEtaZmRIJt6+SC9Ehg9npMaIgwqchlMth3Le+mUpcRE/g9klzyQ9fhmeMQjDAky1nVsuKs0kAiN5asZfSx//Rj19WVWznkbd4xB6tCIsaC43l0jJbqT4VtrIAnP4+khC6fUZ7fk9iWX6EJpFuXiT0eDZuoEJbogGveYLurhTo69CPD56cOnm449r1Y2XzrNnzG4hePDssnRo/D7wvMvu9YNFXS3GnlPzh12DwTfggCH2ih4bdQzxV3aQiKqRBtgrgQ1LDnpNEf47/7sJUy4EvF71g+8td/jopVA/ABwTEYli/TBLjS1q2eep3ClXUvQzX+i/v9J9f4ro8Nbv+ORqgJaOLlILYEKcfhZT54JwntB9pihMbmauV2Ut6r2BhWaG2qTUVQCNb1tlM++4vdz9WjbdpRODbNMsPoSXXHYkkPxZR/bxW8dhAVdBammdHPyztqiND1ubKSTJ8PHYswp3HHnGQvxe0FtMsrzRYfm/3MxYr2/9uOH1f2p5Zs3Lf7gesrP/7wZLwvJp9OK7xW10zBb8fIul3Y8rCcceF75BZupiJ+6a8Lu4P9Ga0bjqHJbrv8mA6DpUsMCm/UliwOip9JUAmrCN7SyhfZ80aPItlmJWXW8DZ2GzCmTg9wrbwOc22slR1kLT7xD7ujp5nN0SzNvznwYZIII0gVEqy9wJIpZjNACmhyFbOq88Cssw/eUmMSih9AUskv7Uv56NF/9rFiJfNatx1b5H/hjQpY95yKL3xa5NO9zHV9/HVX103nzbN4k1uYU6CmrtMCs+PqLqCV1Chr3as8txQko0qKYIXVpTXW7C2u9OUDjW/tZJdZswY956B1QoETjxgZKsNWjEfl2/s/eZ19UGWunMaTVJjSxcmcxNEykda3nQQQwgAauNljhMxdR16dp2JRk6qSClvUkTZE5OPfHztrBk3cZFbwk6G+PySJf9zBCno0MUo+ZdA9Ti1+02ij/+80989UCHw1cx3Lwsjtlqpy9kiVqEJpHvXDusaAHiRZQ1UrXKeHGw0peLmT2hfWWjuJnV26rVcclaNpY65075iRe42JG1IXtUTsZzdRFmC+4V2GyXwVmqNFbPQ8Jnzzp0lI5gJj1dZ+rmbJltN2O6lyUklQP+dPgZGRj6a+CAVi8mJ2UlzSd4SygIJ9tTO9mklBaN/EV5CTxZMgm0zTxHD9ELKaXgXueVh5AYOVw0TMoynPQbvV39M+CrCK0MEelc9gbELDFpxHEItkUPv8vtxLJT3mHkvvcBMlBn3VvSDoRIi/VJGFXA2Eom7Lr4Gm+/1MYZpCDfm5muCNAgp5ocDHXh+mNTNA7DJc1qKbqGXhThv9Rp5SLh6JNyNmIn/XpeLz0NmzMS+2YxheRJ4dIPPRHbMgSPhXs3WQIoGEgYNzt70gJdeyqjziqz0sS3+N1EtnsNiKY3gx5CI8fLDEXF/eyyFI8od8fxtn7J/dwHCSrK1oMMThfCnLUU21GrqnrDSNNa/IcouJIjDOl6T134CV1kY+/HzFmrwRDFwpbFcx8UAe5SVldUIcHs9Rj8qObDXCsvcGMnYXPHH2iJXvCU+FxAIM0fQoRIBKvbYYtUGayWDetO7CkFSkkQvj3XSCiK9KgnUcGAiSV7+Hy7TFVK53ddIbpP1b9NB2bwsXgLoZlTUsL+RRDgYEN0m0Q1y4+dmyXJmvnbOTWjUNCh1Qx1jZRZDni39+urZtIAhMsbDtEaQGXkCKa/y0QWMypKSd1w5th+uvjxqSMRDgqyWi/otiiXEfFgq2IET4YRQzBVl6yDcLlO3lAxBEc/GMz6jPhlFMpePWH32c/NoO7U1AHPRGpUG8wE8/QA1CCe36/8EWiC3786iOgr32ZMt/McjB1rWQD6ax8/hQpOLfJ4Kv8uon0Smx7/x+k+Idj2W0sj6B6I9+/tJm8uXnIh9Oa+xO68y2UzzRdIJiuJoRSshAqtO22GFJSLICq9GNbZ+nMi96ro8VcFH9bQzT5gJ26If3lU7X2Bee7NbJB5Vpcb/zZsj1dNvnGKpXi1dOd6wtCZn/nTUMADSypaQUUCTZJ1b8zVdOkfwaXzmfP3Uiajui/j62uw9iUontu4gA0zkdN1+7fhPMnaK7qpzHar8HnFUK3wD921QK6aSRfku6/U4pGqZpbFbL/B2ubiGZM9YOliqbkjHYJ2fLNROFyWEtS9/Ntwj4nzTqfOvQsjae9SJ5m8tY/BmErNPwjnQVm2Jzz2sX88zZ2jwgm7mmtjYHptBE9E7694meULW8NVfbQayjBCcR3fLdzqOMzT75bw3l8ZHOf5g/zBqq3rv0ugxA+H5lW7LesVRRmwwsTtSfX2k5sTy5X2h9Ks9nfxZKpYCsKhhLtNUsLzggH1lUbQS3XUYJHXJM87L+qvVH8sZQaaeNYKnuvpLrFjbf1NY98Vdudu3psbkuab/SKdPwsgX+7uKvGXyqQ73EvE74Shiu6CMeuXjIq4v7xHkmVfWpsbiJ6amLcd+36pr2vvAKdP3jeavQv0oYWIrkAnHbty6oPCcTYSml/mIcv+I6oepbaM7HWFJ3mNvOEXFabQRH1GM7c6aaEK7+b19tO7vyEwURMNrUUDtanpx6kjFLWKFNE99ikmfjnqyNSfJzJLlIN3eEUefy0WQaIP6CBHiPdZ0R1ZAk1vt/GGPOJy0a+dNDlrdX/mhnH1BTQ7P1evb98DMkttzu3Z5GQ+3BGarvA1Hmof08a9LS46aE7stkINOgaZfzDH5oe6LNpbUuSkDUGLcWIYUmQRAEGKGSXTo1FH77XPiSKjHeHaN4cCXfCCuSKSvOQi/RxbeCvUjOnwAoChDVLF/AWkisuRUPcCLqZ89ZYDBVnIW0eyr5qYHbEmPaziYGstCncMLHnnE+wd7TZy8OrAS3INw9a4sH83qAwBHKc+9zFrSgx1nBhQL7hq76lVx8ob0Xyr8QY2TaDZwN5N4Y/J3FG5Iic3DDJeTu++09vIjwhMoc3jWwlnil0LG0e+3PfMHzW2vk0pW1kNfRGkeloXNlJJ19le+H/pzuOFa+HEn/6b9rygeMo7WaRSW89AiEyybDmHAmz8Xj0BSzrM7T1wPMbutfHhB6iD6r87nPiJUbdessLqIRj6PY+Sgen8iHMs7iKYhCd1q2+/i+DrYi/mJnmsd5WLuxfOIdW0tMtc4rkzPzTHy1af+3KrdAGuUq0bNcXvgdlMgsG9EuyDzOpBNQNrkzPnA19lYwOeFX1OfQH0V7j23wGpBKq9XQ5j8ZTHyWpmotkugr+G6nIheL0VrwqQJK6csTmbDpF3bHsuG4VV9VSZ5y4aLucURpiwpX7p+GJw9RpBPsioVgNnR6yBv6i5S69YzE5492WyshU56cmTN6F6mE2bw9ioVaT7u0X7Y2fSxIUGJTgB4o4grepkJkFgRW+eXceWYf6jawYaTegmIEJe5nFS88+XMUwhlw2/ylwftcrtfN5lGbdLduNYCtNJOzgyXzifJdSaHuLZeJ6+mI840FapG3TzHa008NaRAPm6X4I8GjTIkDcsd7toX22M6v7vVi9G8bewnG02lWAmFSLPT8TU5+U8TIXIJ/dSQX7oskCrr7iw3NBiJvhL5jytO6ligb7X46zkIiVuCARDPjUZ7EQzwhwDhhy7A3LuyV2Ln6aIELiP3uOZWe23YaO2d7VhJxmaScaqN+rD0+hd7yM/6SupdDyGptna3S+NL68+b8ipE8KHnhOP9+uwITEmzmbEv3liZty4HvZoG/MbsLyywWsGDewLjt/edLWXMVEQp4aFnvEg0TBoKV3oD6o/pRCaKkSO9X3SF/D/6qVdGEFioKldH+LjOzKQHqpBJBlFipjkfNUas6+AZ2cVvEagbUPRLmvjWMC9P0ikkSRjWF0RAjtP+/6Oewm3322vO1m2lm0M8opC0d1KUtxuBYOUYba+kM/z7PzxUsW87Zq2NHqcbZGI2+4nl8rcrLgK+//ICjUl4Zc2L+dE4SKTK7FbrYkctoWppydjyEB9xqKVGSrzcWlff1S4ptWnCsvX42XKmMvC3Mi7k2C0sEVCsvvrEKAmfrDlGTATQeILDz/7cIVhM3d+2qNq/XvTypAzIe2YiMZdmEj9GZTYIBm1RtcU9oHhFOaL5qnwiT/jQzmTOOEobnHO1Q9haMRxi8iZUNkn3bHFepwjgl2vacCG9PuwoUdz7ynI99t89cOwKMX2yIJfhG/lq3bv7V2rC5AxUETw3Qj8pSNS0UArfxudzBFnqXFoIuZQobwDSQnOtu0aFl7rXp/lE/Kjr4Ys/SCh9LxE7PnwN8X+fzX1aDscm8kL1E3tgO8K7hsE1lDzQAUau7qc+sB3SvnIB9vBuSI6J033A0YfdP7kvaQPcDlWLdqKte7TA3xa7z4LhOfi3baSK+IyoR1F+8KawbRt1DPkGuIBy/te9hZdLn9rQTgDErajMEiVztlN5iDkkck4c8Z1qxc/AMceF/qtbwGDNIeRWeDWjyyOGdPVxYY6borFm/04+lvNWmmO/5eX64EafOJQscvjjyqKBH2t0p+0uk6LhZVeMYPTTl+jVRtv5JAjDE8exN5bygDHvnRi4Xvd66zvHtC2wmCXjyZAsVRn6wLYfiuLEkIY2r0VcobPUT0yTp75i9p6QeZLvAXaX4rI8Lr8X9LLmctpnCicqk6v3ReP/88S/Kx/4MKlFNubcN1E6VxsBs8UKbKWpS+n1scv9S+rIARFeJYruFBckcDkLg+Ll0tWR/6lcF5y/OMpYj/2Rz6JvJpaqQLpT/Mx9SoBXKnuOw5af5fc16MxtXibBod2KH81CVWgsrHCdTMbhPPUjZWftdhy0HYJqlhK1Jjs85QTosTEVxa7SV//mtuKDT1lzYG9vGjOxkVUdlTpuGwli0LhjI8tUoNTOVZ0oQ62aW+i3Q3INiNwhyGkOd/Zuo55OC0Ce6xQ/FuoAzvqjqlYtggNhMDUaQsV0BoJkvPOysFeZLJEnt059KyK0I3SwOGjKYchyqMNnXB/xqFlMJx4AJWqOF07xX8lOIIucXnhHE2TjbTXuQDNnHsdnkrG+Vq/+CupI8p4K8xkjm6Kk/470O0/4D0/j1OV+vnwkBtN1VL5POcwBsKN+Ki8D7GvRa44PtfZuSrAiDeV1/N83hvyfM00fF3OpTDd/2Wcb70ZhTtalzBjBVsxQLb8KqYs1CBgK1x6hc97yy9d6kZiXA2Uq47EptW6QGojfyLKvIEDKWH4hKz8/Q4WfnkH2gpF3hh3H85d5GeOYUiEHsXOHfBKZD/X0XYQGifG+yTOMAJA8/93yxn4326FMWE0+arckpNGxHmPlyJgrSuVmLkLOph1kI+jnCSQEFo7jnSfGWr6hffp7KdaXMD4ilkRIk+aMHfu7b/bivgrCsZST6zP/OknkZnd2PQE+rzjOKUkNO6pmEXDzMu97wCVbbEvC1d7HvqD91ZEIqJlSe0IrZztftYUpYhLdxShJxba24994f0ueJBWeEGauaC0NtBamI51F02pIcstSU+mFxorLuEVmt/TN7zUr1DxXTUdny5dX8PuUSXSc9qRi3JjQwe+48bWBScTcGF6W4/OQtqwcDgffinhk8IPVdgall4O4kXnlkIp3HFXaM3NmnW2/GrnDYlY4dgUvShO5EEe4b1rH8e891C/at1LE2ER7ZznpHgprAfYq1uS7lyMdyJHSa8cy66RHTmFFWN5m2zcG8YRDtmkvnBxz2eL5OdmFkrZmSUqyoP5dobBtWGRgfDkCbaCBGR/gyQiA7EI8wKowO+5PJapZa/eAlTiSMPeupdfhHkPUPzoKccrBcu23QvRcCsgKwFOUDV0EgV4kG3PPGLVzr0+fInGYyfj/1C7zyUDs1W8W719hgKjFn0gVOAz7AVwBSFIOYZTjvFd8FYkmqS91F28YFKSx3SlGyux72wvB5OHZUvhVRFVS4ohIblZ5wNcQxwd/QO9OlPAUvTkw869uqLBDn0cwtaE43dx1TATQ8XDO3R94oOaRR2dG77AvIqi1tQimUYCfT7mTCkp4YKsYFW/I4IZSaL3rvlFD/FU8C+WzZEjyLYOJUrb1uQJlfndAxWAEyVQd4wMXUxLE/KxieeFwF6pUoRtE7UuRY3tN1X+dAkPxIDfeUPR1FxKO6Zj9W8AFQHTzNEUD4MsMriyspac5lR804tasVnWyXXRlnfzw7UbsnKFNRadNcauX3cCRyu3KTBW5CdLGzsTljrzmfVKUi6JC4oRwceJ93LjJV8gZzzVkMwR+upyJXH58b/Z3uxlEtDSRV1h8Yqg+iuxx7DBj83x9FnmeVNgjsvPh4GUK8WKe/lAU4OisK0lG92jQii7z2+RamurtVARqccHSFzT5XNSwC/fDJov8uh3m1B2qgdZhIS+XFDERuoASSv2O9ftSyYw+iTnc0H/L+SJ6tzcrDD0TreGmUqrP8KeGNbVc/N9pUl67x04UIuy6ji0MYzzd3+SVeZ7HzOii1YXbQZAETRXHmlI+p3anqxWjtO5rpEf7QaZXyai6F+nf++rV76j/4nxMfz6YuBoluKhEmQtNyMgkKm/2idLbRzhkyjkJNd/jDry5Uq48dQbDWdMSFqxTcvxhEN+hG6oaqBHT27btFyKnO0ukgTlawhj2LrmP0nPfXGdivQ78aRbXKO3asM4vcAbr8xK86icdKVOYY+xjbfSjf1+Xcrl2Hj/YHdxgrBAAH7aVttXh2BvQ7unzL3lMmTQoFQHsN//Ia7pWiZnBJ78e+WX7gLZ/E6YcO/O7xn2JmoNVGs96pXlpsqjlgPw/pTnQagWwSgPNL2U+NTDqOvui/3P9tF+i9VtTt1lyfaKX6hQOF+3z476+e2YXrPlveV9uo2w8/kRSLx4K7vE7EpBGtaaqsE1pHDXDhn6YU611K6irwwRtj5JX4PRiIMV3b+Rje4abtdqkcetmEdcRMlPSMF9XnYbCadOpGZzw9BbYpWLO6PXX2broBxZajz13LhB/uQMaipIr0+7p+7UkfU09OIFo9zWzG730AZ777Ocy30wtzoowL3OtPoqnUhP4nBd3wxdV4uPYLJb4MQoRpK7GRJlaQeOlqYRtvpcI7HFX7K/TrkBUwejfb004AKSGTB3wiRCbyTbdlJCfNWnemz4rctGQ+567b6lJnKI+O0Gdk80hidIxxinR1uYgmoCrMbkHormsmbcHEjYIpikFCzXb68kJNJgMJE0zJuvpPW/UMpnAX5qQBYayfvR6CxYqt2pdK56EKDN7Lngjwlgj975bs5cT36iXKFdb4jM9RTujCT3y8o3487r38LZcme00Lt5xEvNSWPAlofocMu0iW0ANd7DBnUehWOvpIM9Y7HV1fl4VgXaLrtBgQQ+qhfuuUlR18nGKFcmaXuAk+J7HuinTPT0zqnFlOUEt1/OvwKCqag3BC11uwyyCVNxAkkvyOWQBZ0IDBeitXVk+Qx8DGTNJtezjUJQOKUurkGc/lbMNlDnoTS2WvtdtQFyQfnazNRZEiX33GrZO7HiGfArGsxk7FXYTAy/Ud2jc8AWU713Mtwx9gimLRttrQiWjb2AGMIAnpSAzbPREWllBFhnLT94CjQu2DByycqh8KbHFhWdRwg+vLDR9WPavRUwED0axHqJlV7kH/eowZUse3bSCMqlzVPSQNPWueSroVNReTp1ooAJkufQbZFtPDZ9DJnR0S4T7WL0AkfndfFBgGW/Kx8TOEhpk0fmZsNAJC5xIvLVkP/vFOyIUhwFNy7yxq86seI4zXHkdtDJ6/PpGmT8TBg4nBuAPQc8qgK+tFfYtnNVmIqqldK1zbU0LKCkTUaKqdkCU8HRDQBi7ZEz9/KEw+uOXUP3uiReS9gt6k9ciFGoEbEtoniPLClzhsXP2bbZN5x5/FPoQyMVkdGSIR+JN05csKmErzuTB9swU6W5S9LUxHFMNJQ/DZDPzpMZI1bLMS0OM6eREnLpXMFM9yP50+2rubQTFdIsTO0WHgasVbzX6xJ/QEl0zaY7sjRB3sYZ6EfTjgtg05JFJ0S/eoRxA7MUqCz8ai4J1aas4t2rEWByv3YUXtMMbwKTynZ59YzmfAujjHenjBrpB+aOs2yWSxxwq6iuKv0R3r+Tpi5cie7VLXDEwoGHwmnLxyWIwiSi5BF3BkeKjAvOY7EPviE2bn2xQooj5xiBAJsikGiP+X2H6LugolbcvitrHJlqgLRKl48f4jWtKBueKb2QUmAHA1eYuSfZ6OO1DqJ+RAYfVVTjo4ANO8/BZjJJ4BsN3jzVbNPSsbpaWCyXmoe7Zt7Rvit8vLYD+pFZagYYktNYaW2mw5AG+aUOr0YWsao3ZtwZco0bdNIqlAvjCcOnzBke87uSKbtffkpxj4QcAbFfbBRYsmKqoW9lNgSd7WbAv1eDSmZ3Px0KQKjSPXj5E/jgBtRCQrSdWF2s+BDTCLepIXiuS7NFS43IJ8C2uHVsTmlHmJaRkjNlQG1PVFuIaaqgBN9A6W0DrSl2soQ9dhmcK9iFpZIOG//fKZ2OTeOi0BRZ24TBtSrg0U5RD7pOmJnUoTEtzVs6e+Ohazf5TVyYRh07KpW3NaBXfVrBK6yEsYMmiycXPh3ACFarlRwkuQKXBfJR5lPZyOQTqSXJNL/RZ0gmrY2GL4l8BATsfP3sA+IwfP6iGzPorM1iFGtiMZHvueJ04vJsGLUYIaXd5mj00ivrFhDwqW/X3W6bl7+mlm5G7Yh71qzS+D4bXHlDUXBd8OkH55dZ1JEzncETzvMFkbOT9NOLoT3cwJ2JKwBo25yYuNKSzwYg1SjL6erz5kwvFAYbD0QNf/BNPw5GmIM/Ap6V75ukZfRw+hUaq8P+YyW2+B+DU9qwVm8e4Mv7RlN1W5nv8trlEmNUftln81AlOi/MvonyCAW6R+6N17Q9dhqcdo3yQZwkRqQs/jrZFXlnqa+XpDMayAl4bw/Jlnj78kJ8A9/xB9F/s99ivD4VfDiK8LMkAWwZA+uDpM6dQcmfqYGHxc2skXhsb8U0kNbdb8qcNhX9WMCBahc1Z82M+ASUd0bCkn3zBjvV1XCvCUYxYnVqfJsOsKTmNMjEYe/HWcdrEanQtjC3dRQmxY2MCnv5VZqTUeUy2X8yu3TQLoqmql1nCNlBXNjQIvW9P5E9mESRGl5u8A7+Ueg2P50OFxAtfDm22hY21cyz0KRHyIlAoIoQpE0Q1NZcmzIIQqBNKhpXOlyTFjBBDHFhF1JJEIjXLI8lMFVJ4NWExsEqHigG0VxZ5X16kKmuGR7YwBB/7oqqsTEFu0RU8szzZ8QoqDYnQ5DxtQgtdFaH4SL9y5aHM5zFfZo2eQYlLvI/4BpeJTPvE4e6Cfa+zafvTTsAy2112kDIK4/jHbI6PX6iRXht/p2j3jI+xqNgoxIF9nYmYU5WzAnZnqnRuQSBVu2fB9a30igQB26A81efhFm5F/qqpaSaycN5D68W1d6UZtJvFmu/nt9djvp0IQudV/bN/H/zZzSFaEmS+4X7d7+vAJLWrcNabzG3hM+YOEhqzCH/YavrjavN39E8BOvJndQCAtre4My9GvYkPyw2X6bNTiXm6749GmZtS/sVr15mjEAdC3kYBnktpBJsoRWNUagN4kmhNrcmmOuGDqS00IrH2XsAJ4a9uychPIYWp2D8HV7tXtg/u9WFpYfNXmQlVNl59r7zhRu3vvnnuJU8syhU/mXATJfQG1gRMZ24FXtbM/mez6xSOD6IbwSgmRfaIZ+YaOakpKGeARkjHKFLtrrMASpnQfX41ESGsBoHwtw+O7qGUbZfaOPNpLAp5IS92DH75TEBrmqjAJxvOrJZGo9EJjhInhT1QzW7z+4MZ+EUWbQBKScNJpb+0yBLf3CkoqO1ow5RoLJlopmTL7Ut2Jsph0N7SczTYKXpdJXbRJVqfCDaLsi6YmspA/9Il8/LrpIbGZNi0u7Fe0OuOE2mjsNci+pFCKJpnuilds4KdVUhBA2sNKIluG0w9mhvbKosVtsSVMGed5GmdkG6ViKMnsUk+BcmPap4mHH51fWGHLCB+dzgrPmVItNVd63udQwARPRbKMpGhjzOiTGp429JrfLqlwGW8nQxbmTCE2n77/P6VG9BJYjgVflXL+AKUZjWPEcBloLd2zyHbSmRQVUAAz93BHTZTYSbQdfAd0YvBmSTofcJnUD7rA3lAQXYW9s2dSdQa2H2TipYHHUE+5d+M3c9wGoXfOCeRWiODNSv77FD3U4JP/0DR3+4uGDjMI+F0O0sepH0ALE+UEAhRYcCreJrkSwRFg+AtnPplke1aInKMlw+tVWHpGDnzXltcxp1NczDkuLyE99pmXOX5Rp7EdlhGMZ6Gz2vMbMdXu+P8cMRBQDtKwCtG8VOU1G9HEnf0dykCTj2fLQpbpMJl0ZGZEOEKhkt2qgrBcfV8d0zcwtwiEy4L7SDsNlYfC65GYY+UTP6BXQrLp9vxEyZR2zLE+Y+Q7xnkuN692hhiZT5WG1CkeXSy0VG0OUMzDNVt+Bv2Xhc5ZzjyU9GeGV0GL3H9qUooYVcVT3wT65LyFHE6qmh//X9t4XwqgBEWkayS2tPNGNbL8Tlxz+fyv0rrfVWApR7eRmGpWJQjc2UXanLCpfDjcwV9c8YGQ7fFMM91Xp3cmInUdaz5OKjtgstrtBOcnmknmnCX7N2agWmAoELPnoyMZekgFLhbN4/RTq8CRpxA6c8NMVffvt5tb72012AHOwrkqXG2tYyVJzbN6eBHsC4TOzpYSsS3ypWvE+ZrJ08KIx+jWaOIDBXiqZ57/8u+eGuXCqFIiuC/LpGPIEI+I+KshX2GXPQfD2vsu6FtUSCF1Hti/T2cley4pg+OGVQS8SWfXIrMqk80eEnt4ahKLJTPWAWwXaDygMqYmpl4tx94ibe8ZV5Y6rGAGADLPQPwfrwTrJ2fkKBY3fKX7bEasEozX6Qz0GnnqWwbBpVrz55CINRA1OTdQ3wPbjHW6N0v33Yc/cxg7Obt9W5p9oYxNNfIbIs5k2FmIMdpj82a+CN/PakkskcmQSstBUdfw01bDZOIUak0l/EgoU2iBaYTrNV5T0r3zWPJY3LICInTtGFhj4D///J/FWzj7cXn9nCYcgUiD22T6aKP/bBUG0z4EMh5WOor2b9pgLqCZrByIFxPFMugRWpr+35KLnkj+urgXFGL/u9Wn8ov0X/XYv+01a/+S+xdHvajQ69avSfp0DscT1CNCnifyEezBOdtdyPFzdblK0x8g+nEFThOWnwnrh0pTmwHni4/genW6HbfeolmKWy+oX865QxqHMlHmM+7JnxCFL8usyM1T/mL7+B8hJQOer115sUpmFkPpPh9FVEgzs1DMIc67+O1G9Wv4Jy4zAZS64Q/N5ltG8R29N2Ue35d5MW7pOcya77KF3L7R08HNdpTq+i9pFzuZpZ7flpmM2k/+86JzSi/gZUTvf6d4GT5R7raN03+GaTi/S0qNCbvzKqar05oqX65vCQ6+BsbRF12f3rF1rafU3ccx2kLtSgfopUIfnWdwEpTcpOGYNTWu+yUv7tx0hzNxz1sOPW8Ld+gyInU35rxpcms3+WakFxEdBC9xq239L5UH4S9Ow/Fr2O2gfSzAfg+9PDHOvpNPzekI8f7CDh2qY7U+ofQv/3B5D+iBlawJL7w+cQaNeA9kR/Sih/U6k+XXRTzEepeeefg6cBe+abq7+ZwFNG+uTae4MeFb7ZeAwbpRRQKqnv1xQMXRHadat8wapvRn2lic3+QodUWzRRvcEmhPrKyyFeBfj9pi3qqiC8y12pcW9CffdKYVesfSTU6kNau59fOpEInSU96lFOqVRhPk+ywCGz3m8p46WpRdBZ7r2fvJPA0wTMTtMmFBrwu8xXFFJKvffdbczgr+ehdFh8rr6f/To0ZksMp8SNbK1Zw0lvpVzTR6LXbIO/Uimnbisf3Pnu0deGlREMQsXz+RI1JKiItXaMRA0Gj8yYmoMVg3wlUZy13qAYcW7lXk7SQSAY0N1jVm0YgEO5W8rozL6P5LO9bn/BfWlknAkOiOLNd5RjrWQ8y0UecdTlEWPFzMQlEa6zR/pfD/DxUqRUkaZmP3iXZ6FY6JyKNcmrMopTfjPzoRM4UXCFy6z6riVbuqC98PyYM4FhpjVVP0Frfc3NUBGpKXaz2P4pUusoJXMsIGt6LHi/UESGEyzcfnH+fLCC1+Emcbb3XSMFZN0M1IFgm7CK397aHlrxPVjVGJlooIqbfX1q8F16NTDmH0Xux0tiAo3K9DTC3rraIb63On3cXWPHLsMXl9ydYD6kojpqyvs29cO7cYmz+8wzfGlejVvzzfPf/Xo4Z/07rlVD5+L/SL4Rqwi22FB4zL/fPh4/78sD6ilP9vYpJv7R2zCJL0ZZT/d2HopcWCoBTb3jqa2J0eNMbZC6IXjp+6J5Ds6D8ODxxwbu3gDf5gdnxUCzYPcsN/rYbdl2kiBg+ZuWxryh/0tFUsXQ1pXWwWOahq9i9OPxvZt4XK3ZLyfjCnkNYodP2bcnvWw1UKEADVbu3fbG+QXL4MZPwnxGruo+LjqKJ9EWokQ10ALIigylRXRIscl9dLh3SV4LkHnS3go/GBJj6MfIqY+lzfvMwVB4qooybzpy98TuNs5noWhcB9kMwHBfKG2cHQS9KquOebGjfq7YrJyeEuvQz6boHNILds/ShF4v9Bs6SnLWZTTqH6h47sPrVNFntmBECJHqkBDFoHtxh3unMj2MvC8acLPgHJ+LDYhbn5ZQH5n9lmHF1MAlMaLpgbouJTQ/gXO0+58zViz4ZIP8ODPkTYw4LFIptvsyLyEfdjXgexEsIxsTdRpTjj01bSAdgWndahfL+cJ3C66DsNUeweW84jekUNgQ+xPkl1Rr0Iymp/KNcX2qT7YXbx4fOdM8cp3wRdpZzJn8aaG02wYzvLonewgXgs8lGXAdqg/YwQtNVFm0gwGHsfmvUse0S/pJIPlpB3YdPTi2PVBXYWLInWhT3DFHbnP0TQ4pEv2E76kJCdnrJ1RHyp3aUZqwFHowlJGfHwJpQ4dqwezmpTp8p9EXLZBhOpI3/2rSMNPgDAG7bY0CtIA+IkuGoBVCei3bZtaQ1GI8TO0IFKPNJ2sz97BpXB/zTvHelTqpOSG8bZDZOVvBH2TH+GHq07RgpvoSowgmdbRA49WUcjiQkhflVNQ+XkLTE/GNUWMrwGXDbvyFxdCSSrxxWZe2dQ/cWmCpiOzfTxkEgvT+LO6/OXN8ZRbEwMs/+G18MbE/46dTekh9luNruktZK0ctzVjEiVDY8DrH7lj+Hkce33EGWaFoJjqIsXEVBLjXmvWG0I8XkOvB8HuS95enkzFZY+SY5dhrLENHRDynHRhaQnJ1ndjqvsr0D8GJ2CBuz6lycX9jLFAHrq55xkiQshyRQkY6sQ+KXhc6jerXdpfA5hG896qRtKqpIKCrjW8tLdg9A788+z1x2vmwN6dluelh4c2IJVpB5EuHrsKTnzQKsvBfxexqlXjfb7934dP8aaKJG81KXYA1R3nh497nIy004paMmNowAi9xFjbnoY1WzkzuEbDeLFQTjp5dtSI/0+RwOOSOriOS5VD0marKPWTO30tn83NFWtpkK+08sAgtnFlX88GHEZtjA0XWJy9IujRRJi70QXr0saFXM+4zHEwCLmpNr5LkD6LQk59IDqu5+NGqvhl7q382AJjymq87bkmTvEqpQyUozTmmfrAHBrz+kdHx0xpXBeYrsLMM7wLTBDBHFH3miylK0xSI9viyD5nGtZzd4KxKmlKhRceIdPyhXrzzRvMe17JQuVNwjJEp0FOIfi27QgCCorYiqi8bBn1RlogZgg/2/O0e0Z981Q7X+gMj6k3NE8+SI4cnj3xtjdPTAlB56fV6ng2y1pHA4CWnLkTtvra8AjvTavvl5iabEaEFvpoMYhmEYxxdyKVE7s9f54IN21giPVIihEkWkFV6jF09Z/+k0pGjVi9Ld7upv4LhT2jIMn4wOPyauM8HOBidtWe3kwNU5r2V6JLT9wnaxYZDvJIzjvcMCfA9QmIwSWc2E5gnTib04SRuYib4JPeey78/WOIRRvH2P3AZrG5KDucGzP1OGVo17MQUMRci+FRHRLScmrOpfnOZ/gvN49DDH44izbcPLuLpqd3CWXzrvrIafcsN3w5/vqFsanRlkDoEwmdV/c8jroynLdxaDwoKeNLohGjS2i8w5I1Phwf1UU2Pkwb6o+a2IPnGsqiRW1e/vo//Bqjb/e+iXbIbyNxAo7cQTNqBxSnCB5JpkPQC5t30D5JE0MXWZ6yHMBmj69dBTS6fMN2Mw3/ZIJQHmsdmtcYF8zuGNWGheGIr05F6vb7TbEnbLi1zCXON6uAfMTi2scRWdyawrIZuNl9YJrPr8D9zh2Cy7okWnKrqrM3SZGXPtKGw8vk1S5Q1sZGYwVT1Z5UfmDIRHfNynmgvUDy4Hy2SthSBcptLqrm3aXyv+xEYobQNbVUMviAcgPTG8Gfk+Lsl2VehVog19iBul+j6XEok7eh5AnSwVlU8h6RlK01s81taoALr+Pmi9wsTHypfveuIBCsjnm9JpcP5cyAzoxbgNoM+0hjzkIV2xUP9eK4rmTbiS5j+0LW26r95gLun1vWXtuKJrfvoh94BAJEIM/lAh51Uz6lF6p9rZQvrZRhBRRKhjcy0kvEOsNw+YNfEEiXyybhDfiDyzTO2XErJTJHozeaBOMaQBs/kK3T1m1H0Yu1WYSR99I7GaQdKujhb9M1Wit/bLEPTvV/Xm5wLD8ZwRIn/kfetMWS93tJcK7aK2toLxjNoOT+b9/D1LgMM295Jb88SnhanFGjEDQnS6tDZNvLY+ZvO5zT3nIXEedeNqLe+ut/LxmSZp6/h/eL5pwgCojJgYMNy+ycfUmVRBS/H2g3MK3RZC9g8+t1uqAi1elvTbQuhhSDpdczGlaq6+ODItGNx1Hshb6Pjg357M1qwbr9Wi/Tn6Ps+VQuPKLpDIVkhL5THknG+yl6dCIwksvmu5SaBnhhiD+uCJKozYD1ENmQqwJiQhBe/K9SF+VE3CrT2Y0AozIwCpKVI7mG79qsBiHxDVcCaJQA1OGL0D2Xg7AdtMPdTIsfdcQj9qyJwa9vr/eiTOZwrlfBWVnAOaAI0Xs1WIzSlUBVkDlWn21KdcXJ7mcQuVW6EnCZcG9du0u+KoD9TavuT35CTph7Nv/JxoLH8C0ORm3gf4rkuBYxXAy/Odwm7CDxlI90q5aq7piAz3tPyhaCZF8xl9ck4wz67evZkwSqW8xbcNG1s/0PN8hmEYhi+3pxEvWHH4KMcl5vwWzqn35zikY/5MVgki/4mwwDWs/r9dns7E8UFbEg6M1B4yLrR8hGk0PcU0OygLDuV6tX3lr3JKea46+RvKhCUO7qPyCZFP6dDr7e3hMxrSz1Zg4QYS+rUmdRfcIXh/gXUzmw16w8aCaiEwcUCHqq0bd4Aw+PtsKyG8z79wgDkI28IF+7mEtsc962CoNGQ4O2ziuE/vOn1Q87Az05FWifeEGy7eg45Cw1p36NdLxhX+wQp3VavszYsBo6LmLzxOdXjNpDNJlWA6ZZ0nhY1/lROWU242mSYIDUobkBtfrscWmn1fvTCR4/uyzw6uPVNQneLMaeZRHG7ffRyqAh9+VFYKNTVRDaLdctZfEXXFiQ7hyvzUegAQD6UijoFpJdLtWnOhRp58eVCxb2OE6ka1d74efX+PFnKBvCQJSwLXwV6vXMngDL6PElm4oBcX0+//zGnBHVFAMYL7dDv2JJRZIuIDmEhHjISHVF94ZcrMrGJnxbhjj61aMRgtGTb1Ko5c7357dAB1zn2tYS8zX4vLSUCS6XClHWQkF0wtR4hZVVEFl9dNJzYTHmI2fBg5Ofl0B2YXKnRnpjdDe3/h8JmjE86Mx279i1iI4FKCWuTDesddgp+76KR9RbwkMkrTI6mGiPdcAoZ44BuLaAjveILuPQQY6Y/bE5VRzCLto9LTNbb7WDcofLpT8Cq+lOxH1oEJnG819aJsxfKvcCU6UpKhxEIHrAMXCOtPIlmQDbjoWJo3Sm98sKg9qP6qXK2BzUlD8Hsc6V7y6uxJ5/AqII6u2G4VwuH/GrM5qkvo1mbcEMrfURBUWjP2D4yJMUHRv6ZtemLLyhxjk9wTfpkppJ97+7woOparDgd+lFZaukRH768LhHl3GKCnrcwQxAKDJldO2PGG5GT+f+PdbOYnCIYy1VQccCRFFfeKV8Y25EhVh+3lX0zj5z6osbC65rTZsWrcR+tuv7jqNwG1d77VzxZcjhohFvINB0Gk3939x6DOy9EtR83uIa6pPGUup7s8yevXAX+Adc32UPJi6lq6sYgYTPWxl/zqn4CBeU18S/3aqt5KVQLgiTXEEh+165fyupT/qWfgLoHkGLqM+BLMfpr0HwOPOeE0BCy5DlNVVplghcqUTvKyhqSsSNGngyUYqNyLJvSNAXP7dZREq23i9oE/OMkayNLWkVyazcCEdNvxfPP2Wu73fTg8LaO8XQJOtcjOne1YKitu4remcgzhVRDAk4gFre4aCjKIJdvpWrPKkSQ6SLaFsypSdveAFeKQrkC48/nzP1fIwwH+pKHVIwzHjmQX5azIGGrCq8mRgGzeWZXwU9mrW7EbWUezeNxA0veSu2EYhmHHlPywjmrU7SLu01XjEdFs4+Yrk37r7Itwy6xK8uugN1ltToYHTIdvJilYmOxAeNhLRNo/A61rTEycBO7q8B0doOdGgvVqwV5fQHu5z2BJlEDmFyl5TlZhdQKtP2bBPQ1CiRVOgKwGGycdSSlmwqAyZ6H/ZXuad+dVF10Ue6O+RbyVvu3g9D80iOHkYxqwgKOMGPhi7GbTNqli3EfdFkvH02IINFztnqJAjTfRtuUH4jLRSFRMxIKZTKddQJMxDeSFGS8VrWe6aKDj+dKRHBrB4enhF0VmxwySx35P/+Rq07tQBUNFSc3qRaY29R1lMF8pRRC4YQEhwa4XT2voiPXyiAcWhcwc2Zd9mpDU7KARkQGWb/tbFgWAVuJ59lSfRSRQ8f2nKO9Wmv9rMfhEnNJdTGGBzMHuDz13T675paHMjyqXIzbW93FbX+MwpI6SHPIckLapemQnsj1QZExNlRwsTWDE88jvQ/P6jnkKaefzJgbj9J/cylR2mqWv4bFRtT+nQd34jqfuoYKT4RuDRPAgw6kx3gQW3yWIH5Qm0gQ8cJkwfUhnET8DZmZmUj8VSpYrHfpVQ+FxBI5nN7KKhad3oKh46C0X8xA/Hlvx7y9LXMMdLHwZEHYtNe0XeraUjsAi8i8iQOA4VoVme38GGRhaJ27DKQNjTLm1Q3x+i0xTMiRdPIyeemRl2J0PEHlaC1FUd6kzHBi+T9GsfuaD+YKWox7dQaQjXFEII2yI5pnsFUgv46WUJ0nMPEuIM/NbR0fZ9n5E/RtVEVotOgP/slO+sZWqbu4ADW9KJC0aj5qhiiMuz+AZpka9NUrZrH2r8S5xy1vtEc/quNZfBQhEKTrNRCZjOiHd5Kr388TrYMHUp6/XM95Tt2GXm5MoyFpeFOvscDKepJ4jpfGqbN3odYdkxBDY+0+vU4N9zmnCacA/uabWfwvcdr7Q0pJlnkJTQdWWe3s2txVSizORNWHh9MgTgRGJxCauH9XyL7Y15ZaGEKoiyQJWK0PpX8Rc18kvP077rpat3ksF1GpZQHLdygNxkyV8p9xedbRAeN13osjxA/ta1zk7/mZSFhmNJcfd6f9zs6sEM528ceQBvSPSK3Qm0CSXuVXfOHlR8RKgv8OQLTvVrhVFvKd4RZH4C81czDJ8enxzMJxXL22AsBZadlEPVxIAWNutjsrtzS8BSxBBeISmByH+Lk4p+CK1VwIjORy0I5NbnMUCChPxTbjjrDj8o8HRDf7aZx/wd8bYxibW2YpS0XN0c2OQfBSKfiuidMm5olwA3cRvXZhwCPefxnHUscqwIz5VPjMqfRdyjyc954PT/L55+rzXdRXnwAXWw3iJv3mhUZLw9BYktsQYhmGY8ime8cKsxPtSLpQIFkEFKWY3WgHXhAjgefLC5SHzjldxVO8GzIxXea09JGnUc3j2ehepu6ow3amc+0VcOS+cVNoexdb/KxaVVsdZtN0zWIZPtPJ32vTgILH9tij8XG2jVLqWx4Y7IN60tJgPkRELHzGk3JwJ/of73mlM2j8vxWiNzGUrOGJZXFPnIlYoBvBd7/EDl1bMtkZGbg93M48WYNC+Sfrzi5qjXf9xh9eT3DJFFH5h1EzMn7hdOxwmxOeOoMQY6+jjIOFASBIiJfehM8z+l7Pta43SS0dG/mu4S8VrNmmUt/nTYxd0wnPuHP3kSGoNoRBbObuQtIPo8nzZgZHzwskSqOMokg4cbZbeNhmkcw/qmQSHteowmDcxlpo6/uFxU03UTSFbfm2SGlnM62lP20PcVPpifDILJjr3oHaKXBK7NgoexFY7RsAPdo1P6ZHGClMU2pBhnnLjNOfTt9VQIuT0e+83UJ+UWtJLuaRCpIPV3jQpCrwDXwrNYxITaw/df7MoRvaD6+c77wRGx0eTsawGqHBPiM4hADJXIlqg/JypPaoU91yby2QFloN/4zFKPFs0XwRLPv7VgAlfmys4J9sA7mWcz3madiyX0wuaHIv+K8oDrsBbXKUr9B4srZzVSeedidNlmOigKDdo8SMgPpHQO3zIR1+PvUKw5uOym7QQhsw7XvZeaN03OCjwuVTR/fFztQ1/lM14DDF0YXUHC3PMPFqAalqzzXKs/7l8rgZKruEuFYXkeZcfHjeF9ul6qMVYampX9tABGlHjOGHHlDrSnE/ffDokHCQDCc1U6LsbwVyJaKpL7/jxq6TvfidvwK3QezCbQyFD+Mx6QpPdAcUwxNAFnwa/4JTIFJSmWyxnmwwkNOg+c7gT3ruz/Vlyn094705ZVl4bFOHvh2hnFA7efCFvd5qAqjjbA/uodDEyNQK9RVQXrM8NXq7C6zll5lM4cR9D1kvuN1/Ie9do7mv2U9y8WDc31tBjkKhgyKBe3ZyqDr6rvUXy1NAeUrI/dQ63BX+4PDW0mRmkrToss6c/FqlE1mFjAY9Ab9G7S16CihT2vfkQ6e88aCFyvIwAPv4Lkix0hKba9rQ92JYDbFAXNLcxmd74fJEA8UCRy0vznGRRzO1QF60UTtwn8KG3Qkoki1pcxjmLHokqEGy7fRrbDAR9cfptN2M0bO5jvtQvv/H4kB/4g9Lm9EtbSGIiGhpXF4KAfK7z/RQ375yj6HwZ9Dknk25ISpuofbSrCydFl9Tt+udgEJjou1aKb9+5brT+4WeGU7Om62QQtkBjdjUDdCxWhR7nmzSnqiOFJNiwOGpypltvDfcgjsTQ5/msJVxE9D1O5gJMhmEYhh1yIxA+c9I47YP9B3GP13HpEnTFcNzmdqDZ8agVJFkUqNBIr95vQtl72pz1XQ9tXo+uekCq5kOsFm+KH9o5YRR9xDOcynYfCJFvJ1Wu/SxDk4wnkf2SsyzEBvOipr2SKD2Yze0evd7zzc/16UrROETBXHoKWBBAlIIzfiXClvO6XqVCjKg+t+OALS5bqurb9ep/yKp5dDEG5Ii+NITLfVsFdwX3HLkNTU4fMBpwI7ouhVsz8jlkzns8mW9PFEoQikpLltTPQnRfWjpHQz82Cqw6o9CQzv3cMmXkhXfimfxJfvHMq4tWdB6o46KwAjRxENkXT8fZ1z3pyMQ222Zx/4nXZMaFZ6DOlj4D2cgCMVnY3iFIR0t6QrFAy5w5S+NF3pNIWni0catsAUOif/wNhhlF+BeV/F67Dq3bgNqIC4aDhWAPMelMm87csSFi9KySwKiNzZUPrN49ut71AVU7GH73qkpKR/RgdBztVqUivlUT/g16yXOwwlxoBZLytIb3Ff2n6Erj7xlG/2SwlJHcfTOSbgU7g6gNxdsoMOJO1ZLukwcdcqW85kMkLlePL2iGjWZ9sdrJekhWbArRjKPAqk4QVehQ2RnyknE8rQ/1gPy/YOjMAx1HdGab+qJeHMh/8CbpZwdDSBWp37gaO7E0896ywanII3+DSuvm1B/IBm91Ze1Wrplg4Bic/biUGKBLH8qhnMFPxAfN0lCs3jYzYbA3xzO4J3qfp2xRJ+Fi8yzlvkMndguYs4goCfOEIpA0aWqzCz75EuiSaPpTxA1O/8UMc8Zr9T3OmccY2UTwiWG8RTHeALuuZOW8M7RdtPZF8fBvWqzvZ6sC+pwiOMPk25pQWUGWmZerDAs28tu1DJ1PCGWV3W5LCQFbt1uu9MQQLAZFlmADQnR7vzZHpdE+CgjyrdAGQ/Hc9JvqhcuHNyMwsCRqoMz/n99twobJRhv3W52+6Ea++RmADXOw+nsKVWdg9o1fuVsloyneEjWVwpKgILodOl6l5k/7OFfRD9xj/9RbvAHxX48NzKyEPgMiYdiQ3jP0OWOfT/FIJxl4BYYlqW8P9hdCm3IWviHEFAISZ8aDzTHDqt4ZX9L1JhGw1wUSBXSr4yHmOVvC8fzHkGFyUKDe6Cy7ZJ2tKrQTrxJtEeaJekxJ+EPC5HgKmEPMrjWgcT89mbyXwckapGSr+rYPF4m5PXqVIcLhgGBuq1UQgjNUlhgUVXQ3wadHDc/mqvLsW+jGVRXydEc0rau/j/wbgubMpeBpdNJT/KJ6Uf/b20FmyH6mbjFAG5e+euYdVR/X740x50olC77pEt2LNLrgN8Yz2sJ9zq9Rj2+Ri5muIxO8GeQ0m3r+4fPpomEYhmHYZ1pQBvODvFGlexxkLusL9rg54vHMWldE/81EvjXdiwFdC6PMEYsjXoxvzBkyIHIURDV9bsVOrjkL94cKdTMfufJV9wW68sWqhIVW6aP0nd3PJD2SjQY5KZpg2lVg6mh8Gu9BIRemtWV/XxVCW1wC0cYe5c2wfl7i6nJNS4AljJ9s3SzIL9Usq7mxy6cFsn+AdnF022CIoIe4QAqQuC0TE3/p/I+z508gSRtYI6zAludCODc+CLk34xVY1HN3PGXGLQFmFaBesEvOiBr6ZIANZWPm6uOnyVNa1TZCbe4gjbsItKVWUGIljce0woNf2XaOA815/Y6VqaPQZYOfaUGZIuxnGjWqKMM/lLfSEjdGWU5d/zshERS/soxyNyZUVG5Bj0zt2oEUcf7tpBPxRvaGSlCqAV2ExVjJ99jpXH+uQ4IBVylvy96r/N4cIrrgdnq3EnjzjBc9Zpp/iw+7HaWUBIFCGxH2DUkbohDdNMtjWHKHuzInpbGIFGDXPujj72NVMRNiDzZqf9jcMh5tdLIpv33UD3qzE1fNyURG9/CySSgkSqNFRyARV1GGJ5BNY3AZHm5/Z5gnbbD0noUDKmqd0De4FC7hm8ejk07UAOyZXlSIbT+dmvW7IMcBONw7q2pzRbTrKMrPduyGlhRLAhegmJtJBsZvN1zr3aNPzA/yxuLRIq+7owAvDLVGpEqoA/5n8Bx3PG9n43IJ3olvdVgw8nIaHvi6eczPxHZbggM73JrPzrT37c80YhqLu4b8y+YpqNRlcC2P+aZDdpsJqWUOgG4JCZyqV9CxWMNh6uFXz9a5BgWflocmKkhjoXZUJ/Xh77t6GkNC4E5tkELTSoQbRF/QkN6pziFz+zJwdJbh2wT+GbtL2pM9lC91vCx33uyjLcpv2AKT8wzOY5GdZHMEKOMtg7anQto9lV3LNyQBwfCKkaslpFuB920Zr1Dj8Pj50f/Jp7S45WBcQo11PwOWbwHFmerVispV7pXfX3Dk0kCkPLDtxzSyv9FwPZXuceCcvH7RoTs5fbVXjZ2itSeKEXGDDQ864tYCTOHFmfxlQMWBvQAKi7WiuV7xJe3g/PPS8gn86ZdIb91/KEbMzg+eXjhrFsNMLCTsHzvXbuFKUjk5mr5UVpi4zkj6M7GyVOm4iCHAhiUefJEL5JSEgXqDNpSmBCtiid8kOFbMrdKdRWuaa622tPGtjXAvICP3Sv5uzVX1PQIOYfvOt4tmKhGStbd3nXDhMM7G86fZxW7WVxMIB7T62ka2ZSfiOY+FguYgtp3nc+Dme6+4P5m+vzyM4wFeixRVHtGeDgnDiy66TF9CTwSwAEykK5UKI/+rbvdo2eL4G14rZCcS04IYhmGYS3/nNFvUTzm8MwOvHtHi8K8rilfGDAaLuSywq4ggzaJpTgC0nESb1CzY9hE1eAcwatoTtOLr8jeT5GWjgB3jGehGw94JQaUCZ/uxoqTJx2jnl6jOMlYUh0Kt/MvCPaYf3RUS0QeGE7xkyeQq6QAXlVD/HtKet+MOTl7lL2O+/ceS/mhzrj/nM9dkxmTugG/XEXhrXglTylJoPK3kNMlkqIQITPftHqKz8jcWG9gHQUm9SK57x0ITvm7dG+kfDexaT63qV1w6g9u7eSztGhpv+qhhTrVDRyvpvP4ZiY9qSCBMhSz2GU+S1yu2muAIMChSZhCamuWhHtcWz+rR6XUT27MWG25eOeWQLpNR6HWRH9mOb2vse6ZkzMn5RHGrReY9vH3iE/TWSxwNsaQoqNDnNhqBxmLJ76OsBy2VjDpMnlD/I+rlxPFlrZywRXiFHO9h0LTBwcKnQMYjpC9yfh9mP09Eh+uGwwIlmfmUBZPzg13wlC5BjVaxITUvGXRI9S74Bt+cdBVuG2vWAe7PU3CbkPkx9hcqP+vr9Zbt6yY8FHglfe/UUD3iFHjmglFfSujIL3hu9Lzxhmd7tyrD7Aea2bT4F5xZc2riKlns4nJLkzoLLOQuf/RBx86XiYuuDmt/sa9vsfE4x+4ou6tKpRpqVR3DSpB0zKxuA/6e74LTsz9DvBQrF2aBwwYPqQw76xMPZCklrmg+oiqffiE4zUIqWGVdIJc4XExra2xea6tsLjFqAyEnPslZTg+IdUJox5IGtv6kxy1VzQNuOsA1o1MRCtsqIc0SjcQxRa1TOe6hL7gZT8Mu6IbYR1rZdIvRccQK/1vwKkTqca1HBZQ/PzpSto7jeuLn5JSsmCYQglLUflSJsxrQjGElpOQoJf8U9Jc3QzKj/tMjIJKybMUElkSmO6fYp+zOU8IQ0WnU4IU/f93Gv5vBE70kwQFlLPY8wZxNbfuAjW9SIciYNU56xEinMmIJxmW/nyCBb7bVCa4GytNvSU1lMIPwLQjc+HgRv8Kk/5bUhH4FdYEHQJAXwKPxIJB8uXd9dZczAt+jm7Tx9xp0N5MMqWasZBONzCmoCZaAlisQBM+8yQ8u/cYddfTwKSUX9P6MOBY80xKikhgQ/cDcbph25gcnN7/4xuN7TBWRCP4RAZrXqEbf0CeSXFEkpXSAJPCljiK2uq/Wn05Bx2+v50vLWs7Ug/I18kxTuUxvLJNe7jYC+XL1TZ5YgTpXmDhRftfwZxMLJiYlK/1WcGEGMZ1Hc2MQDsOKICKktM1m+1zfp3tvtPsCiBxVzvFYSpcwfI16PhhJiRQuebA9e+jJfBxOoryRBxbnIcuNQxvqkvmtasrwJPUr1slfhmEItT+m1EsndTKmhEs6xWzG74tTNVAmh0s3dTomm8sItXDG0RMoRU+Y9eEONWvawZN8JVXagRNqZXXao4so1QsdEJUXODGHN7hlbhzhnjzzBRuF8h8uSHDARJIxxTesMg/4TK2c4UfmcIGfsjEBIaBZDEHZqlSEjojMCQPRpCRMuMoyp4RG5ZIysUN2lC07k46yZ5llgzVWKo/YghZ5xkVakwHXcJvlA5dZK33iRjbQN27KvdGID3SZfvDKg9IJdccOmlEP7Ixm1BOeMjgWHRPmgzoyw2fqhpn5E/XIb/wP9ZRzfCA1/KrZU7Zc4E/YRI4m/4tNwb/st+SRwfiNvMtD8gfqCYX532wCE3WfFAPfBo1nxrdywSLwafyHHxAy3AQ+gioxOOMDlxhD9NBW+BNNB4bklTPncODYuIaE45JL13ColywhXoK/Z+9MCNyjOKOgXXKX4ntghWiMBeNy28cjtK/ch7YDteTgOIN+ybNjDmdsKZhTcwsK/GBzw3nDgXrPr+xPWk84TF8Oqb7jt++7uDjgmpdbjjnewuuFSYhfoLpcnCLDy/7GN3LeBpAMqwH+bVsBvvMWqIc5cLeicG0NWA4lAAG22kAqSpAzpyKThx583ioavaClaFtJbr1Y55kcmRyZPGftL3zTw4LzN12wjd8WBkvfFiujk19f07XPp19fG2/F6X0ENGzjZTikthRtym2zK7e/OkC549Ct+OPQXb6abX/7bTHcucPXxXXciD9t+w9Hfm01k4dTn/7vd5VxejaCSqRI3Jkg6IXpbbg1Ey/Dsxw7pMUMGCsI4wVhzFRa1CiUgcLYuVx8DL+MfsW0BIJvgCDAIwreAHMm4HSlAIBMATZQLyfYYE90fOshEg1G0q/kD+Fyo411dD6U480tk8JkiTm3mqV4cVSNJ+bJpSmf+7W1iYV+wzBebpF8+k1yd5ZWceafejza2CaVK5fbe7aOa2/K8SrL5MTfZZpbW0jx35dqPG+ePHrgc0f2NiGbdEMYL1gkzx5Jbqu1ioOzevyVtejNu6neR2vVu+1d9WdRWyYz/7nSiLJGNd76VM1ZWPNk547P/fNiEyuvGybjFRbJtz8k92BlFRe+1eN/LkaGJHHqrqBnMMkoE07lCu2Ztq3iT2mZ+7NVjzdbxljqN47JUpTGy7ncl5Mq+fLbOu4589y9pXK8ez7O/bNMzu1sxqOly9UOG7qkdpXiXWaRe/esGu8XiRtv5smNJ6vxKj536qJOTv21iQ2zschtLDYU4/1w8ePLIvmxsR7Pk9yTD2Xy5MEqjs0tc8f26vEPk+c31C+yuqfwWlOVUC2fjHhDjqM1STq1OkRzdVoMbKWaermScuBXrZQur2vMpKMcD31LEj01h4Rq+MS4DTkGdyRprdURbNdp0iuVMfGwWJIsVdG5+QK99yfwvfqd40uUcY95PNthNeEc+1zV+PBJmX/0zn9V3zA3yrg91mzFr7C71oPG05vnssHyI2eP4lz+OEEf/BmMrzq39c7//zZkgljvODeFYN5oXKMF2l59g+8Pb++9h7fassX4e9M5rOy9rJzMrO8Fg9zUBjBIJ/+5VOE8UzxmMzN6At8TFRZqSdzabf/t1+ZuJl1Of5ev4YpU8dwo7nWr8mp1jEOg0qvtU64nEXX+ViCqfQoeEKZCHcu/qFMwgjCb3ZE2PSggx2Sh9d8Pe+sNf765SQoWnCnGlDdKZoFf7IyBkliMc1LIyTs18W5KZUmcTf6ZHvhptfLugB4AGgX167HG0QjkmUSjkzQ+2YG/m4V8YMRkz442vKhf3A8JS5/vhf00Tvb//BjUoKk8M62mKpxDocXCDE1rxVEPHCkVtbOjKEsGuiT2dD3UIh9l+y7K/6eBlMwYnyk948wZGRkbF8SYKK80GholqB10YsxwJjIj/E5wwIGdEvgnjffUvRU3LGw7yvIDhiIrp6gTtXfXyAuEB3cUVpcRFegZ2wABXEE2iEdUlwr5EUIy3FRJ9Xoi6gx9im3CUQ4BY0A+QNyDHpFXiNDhbsIqEKVCb5Qm/znZye+IMUE+QXRZa90K+RnCKdwGZIGIDUbAdkYTyxgdcoW4zYx4vUJ+h/AG91aJa2mIyqCP2P5DMOGakC8QT1lz8chTR0i06MurpDpORB3Rf7EdcBQbMV6Q2RF3iu6QPRMhce+FVQxRDtDvsL3hVCYHGGfIdx3xoGrvdsgvmXAD3CbIyIj4E8YC2wVNrMG4Ri5ZBNTZ/SNfM+FbuCclrN4QVQt9j+0LgjNcK+QxIx5Nc5kjP2WETHHrROvWEPUU/QjbKc9yGDH+Ix8z4t7Q18gfmQj/xL2wZwVRBvSt0mQ3WzkUGAfkQRFdVF0WyLMiXMDtBakhYsUQbNNOF2sxbpF7RdxGdXZHyG9K+B7ul0pYQ0NUPfQPbGMmeIPrHPmsiKeougTkB0VIo+rOMdULQ9QN+j9sv9kgNsF4Q26KuBvQS+RQIpxw/xRWB1FO0B+w7bN9+XeAcYF8r4iHQevdCfKrEm6C2xlyp4j4C8YK25HrYgnjClknB5cSdXb3yIsRPsG9UsLqDFEl6K/YPjLBAa4e2Qzx2KouNfKjIWSE27WitRqiHqGfY/vX2cohYXwhHwxx36IvkVcjwu9wP1FYRRFlB/1GlXiRv4RxinwyRDdVW7dBfjaE6+D2H1kMES8wamznnS7WYzwhV0PcTi28viK/G+EL3B8lrpUhqgL9B9tPJvgvrhvkiyGeps5cQJ4QgoXxJ3GtDVGDbthMNbEBIyMTcRfQQXaIAPdnYZWMKDP0FluvXuRvxJgi3yEegtq6LfILhMtwOyADInYYEVvRaGKK0SAXfHDrA3V278hXCK9wnyth9YqoFHqP7VMJGlwD8gjx2GsuEfkJQgxut4rWzUTUBr3AdtJ4lkOHMSIfIe579IT8AREm3GcKKxNRRvRLpcmfZie/CeMXeciIrlFbt0SeM8JF3N6QOiImhsM2azSxDuMOuc+I28bCq0d+y4Qf4L5T4homohqgf2L7VoKfcF0gnzPiqVFdSuSHjJCWRkdJdTJE3UI/wfanjmIFxh65ZcTdBL1CjkyEM9y/hdUpopyiP2J7V6dycoBxhHyfEQ8TtXfnyK+ZcFPcLpC7jIj/xFhjOzZm+QFji6yNDy4+H/gvocJ4oWemJnQS1c+VvtnNPqjUnHqbP82z+0g99I/OSDV9UafKmz3QGanJ3Jv0zfzSis5ovunv1Uv9nfVq6vLMYd6N3Z91bk7HjJ0yv7e82c0vY7rZ6HpnLtVsCqaYJ0XHN/thijbMfwX/f5uOhYXGJ9FQwmwGylg6chRt7LUpIs2iyqv0kuq0o+RSi6dyGaycSixxccoX6SGXfB2qBZpotNh1OKayUr5KD+fQmpXSl1q7k+tg1aa0wiI4i4Zdyen/xEovPItO7HMTL21pGoqiNh4o4RgasAAIBR4B4Ij/PoRjODKHCVXouMQmecTv5DmAtXbSCaxJBDZmGc9k06Pc0S3hw3NrNs8i4U8GN7AAaf9377bPBkYqAvNFA40EqW/7ZHFbk8SGHbYiuSO3adyeCD/Z0h1GPn4d+980HsZd0rRdoLuVkDFGSD0NdUZdBAA7KfAexKyEr+xaZDy2fVeNsOfWKRwBXlDvso9/LvXd//nRAWu30L+9qa/6X/+v1TEq5ZBAgsvFjvTju18bp2J//6vKtjnALl9duZLbNf6TyTC8bPIgh7lu+ltVhacmGk6/osLjs+uv/eFpm5WBgeu3KL6zZXPYHvD47OdVV3bn75unees07v+cU6i6yY7Ltu8Dx4P/DHH4dteFjevHj/J1/wIJmEyag2spGZwXj9xB8/IOqC1ap2A+xj4K/HBdsLMwjnQiI+dK5mWUG9W8+ieDuUJaeKEW/1rfXRpB7HF27YL04WvLEHCmS+7BitdpjaoFJXcVWszhAoF3kgNpd6P5BEXJmMOpsNvZ5hs+jas7rdYBEtVUXLOPgrVcYqbm25g8JB9PJ+KtOGsg8856TZUCrAovwHLWJnOo/3HEBoGfRZH4gg2UnU/WqRxtJ9lHxvgt/JpUlKk8qYtfzR65zH11rpENDsKfk8snAjbVoYr03D6JH3/Kg4kiJ7tnJqetUH4szr6YVny7DPmmaaMI2rU49itt2fbMbGTJHV6lEVsrFUFLnC6QlWQ0KnpnGitJ+4Ff5xkdmzyI7VWZ8RQ9iYNASBnsx8brQPajd2xqbsjDAuLPg+LHgt3NYdCEM811tOLLaJRLsnfG2Q2cD4mKX1LLVatHSFP4t/eDATc6a7i6hb8EJnovglLLj0f2ToZex8tEdl3XkdmlZYVkLh9RAgatiEjRZi1PPKKHnMd8J44GeWhpuHRtnGxs5ydIqJ5Z4lNz+f+FH3At6MabI0TXw8T2ZBWjIpknRHrNMuho2zSfT1q9Eu9Dtyb8JrAL25r2USbUpWSrSrfOVgf+CNM/vmAX8B6DLxWp6atha+XbA1gw+dHZxISg5WHWZX8FWAaP/PbXqCDXJEg4L3O5x+l+v6h2Wu5mdvb+uqLrW+UkamFFGkLlWxKBG2rRnGd/OnIR2wZfibOjrvjfyJNP79JoRgAS4UG5etGDyM88sKnK1LByMNnyJv30ywVMZSegQDVDB1Z5K9Zkzqcxm3dsTnb2ofQKScnachZyTGzSV61TPlAI3TDJ5C+ZwYofiNyEr0UNzlhujiJJPbBM8GKKQ89+1UyTmYar8SI+i/OEVUO+08t3pCmuqpNlT6xw7jjD8Oe6IknzanRa596aMK1STSpeI4qRlXNPiMUcXtmKlUbPbsXoIgBh+fqsoJEhVzuEVxpB8K77KrB1AkNcppFzFa5Fonmnui/c20pet2ZTyG9MK0fCcnkf4Ic3B5iN8jVh6SYDeYDjZY2YaMrZmBG6jWGKja5JmNo1wCJETa3JkfKJymaChCzfpthR7bT5We/BRS+2brMqnOzXubvSfZ34bRtcvC/hTM60JGyhqdQ17X4E9RRfbMZuKS3sd4ZmK6cy6vfxXTUS6GsZoARoCpUI0RSpfPKsDc1QDPUaCoMqgH9AMO4mSLmP8cVot3IWOOfF1/ddAG8YDK3izRm1a6IbzupWhS2ZtAbaDvJucrD12CVtNPJuzD3PmvK2sP3y6i/eA7DMs74t07LjdVG8wLranmdmmckj30sovjWzNk84T7Ld7GUXETDY/s+BcHpGeR8TYUXHXsQytLEOxi9LwF3CHjA1qRsBqpUr4viZ8EISgtGm/DRp0PjZV+Q7LGYYDgy6/KzMXBm5p3iGveNz1clwpPMtnMFyu+T/XUCW4UHxTzH+j96l2xaA768AmNBs3gtPTZpWr103MgDjKFiJ3mNd8wX+fdy84DkorqGmkgF9OttUC9nFU6Z9hRM+twH0TxoQlitII6K+sCUC13rKSWwaicC2m5dbj72IfSmTCzG+7N6HhrhR18o7hKRlm/16EduBgXb55V9/3+haYpzwqMxTU7Kd1zzQAfk1UAQ8fFPPBK+E1JrIC0AUcmJbUMjfEk3fDFZhSvctYMdMXs2BQnoGlvD4/nXp9Zcbt56v7D6eTNNnUuUuU3X0nDGyDFQ99/SlLr0vAzfLY5z7jV3zh9YU3LKwYS8yA0oBAQ1p3D9DstoONVp7vbXY0JUW9Qjn0dCZTnrBTj/tHWvgyi0Mk2JrOIg+/5M0veQVTaprdbdluun1GnqGBggPgcxo+9LISCKNTjXY05deET8m3jjCvlM32jF/1CdShnVGLXrPlk4JUw/GucxyAobtJhioIKTJyfvMAld0mKusXCGjzbMKyBzSzXIa1gxO5Xr63YuTuRcWj2Uny+pMZcRVW+yZUIVuHRQr9d9JJytk9QviRgo3XxnX7u0rZTWBTy8pvoPYKqto4gJAUmGcRlW3RYboDSeJTTD/O+2hZyjQwjoh/U2M0SZyaEqVb7t06HpqSvSB3qT/JOLsLb/Dp2DPPJjgYw2+uUYQ1e0SIbPoTPWnfuCEdxwjxSPVyy+FPUSBpaoj579belYIwEFWIo1im0EsdVHuv9lvBbZReEubZg4KSP92P2R7Ucw31i4d7b4ddkk1CKPnjLRlB2k8plnxMr9jkXNwQ5tpWryABJEO5qbtVbgLT3vtJ9fUaHzm+Ikjw6oXGqDzLEG0SQ39Cn+2v2nfU9nLXHziA83TEmzeCPgtxh0KGW1KA4PfjODv/NPjH5Gx5GZLUyR9n1ujBinuLD8z4SRjjuStCDsKeLuq2HPQ8vDx9lJipOg86HtCszQVHRIIaVeyeY49d+js8mIKh1sFFpz5HnM2UM2EHO3rq8fLzzIL1jz7ZvU97BgQPz7nCHY+iZWKenRpKPxsz0P2o3UU2I85w9et9JjNCLAxjiyEpQ/KSFWnwTArRyuSgcNEe3vSzSlVguRpqHEvFxe7aGJGieXQot8cA3WOyqGJ1O8NpxP/M/XDDuJw4PpwlK1+/bY8T3zvB/o8V83wW2t5+zYZmmiZUhenb+AJaD/zzV5Vh3Y6zk9E7YNfr9K/IUOwjq/E/tsKdHeDMb//fCw8izEwj3Dw5sT9OKoj7CwcMVHmEXZeWCJKPeboRQPXjODUeOcBeLQXC+8eDnu1ane0aERAcHyp8169ZHdPwv2HEh4EVTHrNpPP3yQ9W7nCFsvgVKYo+HV5Ygqxt5+1DCmu+tL0S1xHOgwVD0gAHBRltfbyGxvHb/ck13pq6k+cSuJpUB9GsdhFcmtN29GmlDvoz6pOz/Dwt9hjCOzJEdro/rTV+tY+iLhCpMmRDe+Yy7f7a1MbFW/Zi6H4YU//hSt+NmIrV6u/jtf7M2yiOBk5mn78/6Xfy162le5R7nmdJnrVHU4rYt8P2/DMqmJGfWJRygauw4OsRSmh+pkCIumgFwA0OedxPlr0RtUCYRu9JybYSBHsLjAmdxTV1vP0oikLgzFYvHA4NxM7lEyfNQdUBBNFRQjRhC9Sxz2Fb6KxrNjOy1GTnNqbwz7GYHc7P3j8JdqIzY/EL7JFapmpTMln7zeNM/dyvykhocYs943FAOYin2MOn/Jtlu54kzZa82THt9qBbmHPyH0W8kgpIH8vi02+lLY1+6+2yg0x3t5/MhNsqSMDZEWtvGE6BIMRkl2rmdCXWZwhZw74xN5QakiNmSK5oBKkz4wGz4wL9cZzNZXmZT6XTjF8bZQpvjpderTQ2ER9ZECLYoZonUVt7JGroxlBOSUYqPK+GVxS+95zBWnm5UDXejTL9SU9DZeLINPmHNFJWk0kDBRZy6QHJ6V+SMdm5PPmEZs4fe+hKlp0EIQeCSU7Q7JIsLfMXjFvmxLrIZ4HjpFCKj4ZUL+VAwbqxqbo7D7NZzPvIq1KKYMBd+xpGiAMGsfkpCAYv6VmCjoh19oVbuxqBRU/8AyDO0ld2U7pcOTLEgOhQd6qXkzRTVsNUI6ykxd8n1uWPItXhf3dyHn6WE92CcK6tufRVZIEiYCVPpJD36fKojbRdhWvlr4NzlMMsqUP4XFaY/cGuCOZ9DVzFkNhDeIA1LrYhBdweFwmkxW9MIUUqwp0STSTriEDqWUaME4rODX1ZoBrvos2iQw2sT0ZyvqTtWS3ciRlE7b+NBU2NjfvQaOuBkvZprtti2vePMhEI+YGduQQIq59KHpnUDLv6QeGv83z0b6FNmK6qZA79zSq4SBJIxsJADqRpuDFgscmI1sQ7TTHR5c/GxhIOe7X9wZN1rBg5KH9yRwPy9RWD778S6Ih7sCopX2smYhMYEu7Ynu7pJQR1KIKQnFuAMrSSuhbuLB/B1LLkWTQ8iPOQQQetrhgzYuxyGgN9EcaDP2sXc/+UVo5OsZciyDaEvHWvxMIu+/0CC/VYg74Q+thpZvSTMMx6m5rap7ZUyR/gYF0AvVS7iS50ueKFWSamqRt6jeSlpyk9GhpYVwQTlYuvSSyN5P3nJnJqf0vRBOJKEKjPqXfccDFxtfEzvesCY1Gli2ncSTuqENEMsyWoB9JtO2CGc79npTes825ji3RwYLhXdNHHafXUN5DT9EMYxDk3crhJYvztZZ4TKh2YJLO0ko4e2FqvdeXaaYpzExpPoqxVThj7/T8GLqlEGHdbZLK7mFHAkrqVqJlgswpP6gQOydvS2gGUNdtmykWoyCx/mdPoNYuVDfHyIRapoAQ2XHcYJQjih18icdQ9sZ1632qjNgf4WF9StNJ4vnVfPQU1S0IW2ZLe8LrGw/QKrU9XKQmpfB9thBHKyE0HaYVNdGt6rr49NM2f+soguYQktGUcAfsG0dloxzNHMk0FeWBTrgNoIiBRoyxNlFi0Mhz12OjKPLHNCJd6+owKKKvDVsHFwqP0Nkraq1o4yIDyEkmaeBrZyfh4B4hQROEt0ur2NLrFeLVefE2h7VM4Ip/ERA9087vZjLRNfFqFGsjxnbAQ6hjx0umJvuRwjx/sZdz9OB78HOm4Dm/RIcCgVHOJvMag+IauIEx0uUnXCP3aFN0ZnkBNEjhU3KAxdmnCZRCvJX6UMI7gK3eborqwb/0YClKNv0tQKqT5wcsbDTUZSSs7brNKUE5b5JjUCr4L5Os2E6cv6KVUSSbK5nTuZkurhe1/IvsrtMN5+bRVqoFi7Z6lOyiaBt9djy8GO8tpD78D1PfpZgRmBaz7yhb6+eF1jd9d3NiD6P9WIWqtqCpJ4UMppa3gV1x4PYdH20V6ZOkfemBEFt6Y03E9nusLhlOw/04Fez2OMbwICUeufcGwXo0WwKtJfnuqIbqpXCkZJbofl9Vm7FQ57Rm8X6eEqzcxTAVMiLVcySghn1eSGuEWzY+Dub6k1c3X3o6hlkx6p/0SN0/H4/CpXM6G4gxsFiTw0g3glFYzQrXZ2OKTUOougm6XhQ0XzuThMdOgCXzkkpUVx5NVTXlWO6c1IbH4aSmDmIxYbUv4HmFR3XTWeTDqqMz9RT7B2b6nfLWDnFYyaTkqEGH6KT+YM1l5XccV8AiAsdUu624cCTSWxnjcLIgiaNuToQGmPS+dVAkS954CKGuBX//UT+e80kxIK4JcbZv1VPyA+5sjhDwYxWJsLiXQ1xveIfJNVbpCxRorCIXxwS7J5GdrPIFbvdIT8Z62eBbYSzJhVO3b56aXhYuUE/xCtE3HwjVvUBIPPJ/bZa1jCCLyqspSBDUfeY8+VHzDPe1hIRtuV+8b53npDXwNJMCyTGWx/ew5h3LNciz/jqk5ao01Q6ib7yVtvhCJ758nSypvYglNEWZfVGrk8sQsJzUbivKG0ZQwfTC9WUUWnBr3UjkaoZbc7vanh/eph1IzWF5DQc8sPHwAE2ylPTb7XHZ+UaCQmNWFevm9DvlCax+d4R8hEKkGGqxQxxohmmm4/nhUhqsdRkUcCyC/JT2gGAsNOLLU0WWRDPHWVE/Zf19ntLvjoKCKKH95OzWn9dUvIRyujzHzPIgSsruZW71c8cOSNbIQ7KxSipepNSQW9IaWaa/u297kSxHhEEl7BieqXn+hN1yfNK4gUwrwORcGQElBuV95ATDFAvgg5QszJ/Q8i5Qcoubl5UslnmzqardCCOAjqAVtRBllPJHhqqsZB6p7yNc532DFB1fu69hDizXWm5U82HjY8RG1xog5ULZbcWBQPboQdSQyTaGl74wscLoC5NQsQ/AGcEZhtqcCY7vAgtmJV5a1acSPQyMInIw6EW3JHf2yyHKrD9lmntZxqA5lcmiLEv6QOtZt0UItULcbuSV3/gvgZ14+5wQsiBSCjceu9zcK+as86sQhBXac+/hE93WbNtJjGpaYVTYvCzcKCPrhKaylourScYNviqjgDih/Bpt44U9Xl/JNyOFPiy5lpV9HId+DreIikYApmXvCtpmdlDJcUfiptZKhxiJpFQaSVIt7+yN7JBpO8q5NhjmxyeKnis8kLWO5qBYdtWMnbgvhx0RAOWhbmjV2sRHme0tUPlPhsxvH4x2S1hxYEyR8HH2Jag9U16abmnar4n4NhFncq3Kqo9TiPLndJAtR/MJvccZP0MTjA/oaK/t4HqEDWLKIaV/hPtiF81Yz1chqCJB8ZRSyDtJs/Htkn3KrklbS5EGuGLcsCABsofY2Xq+26uF3GGnonOQ1jCZmq2dY3N/MM/X3cMtMLzUdp7M+0aoQm1+v0TosgSfBjDeefesCzQeEdS6MY7xQB90PDAJC6IiEFKXQuGn9DEwvl0lD1LHHNSCxkawf0U23xpwhh9xJ3npQ6YRW7dTa2MCvtu7Q2iSPNVlUoTnJTTRAUsncjNo5t7QGA8ahq9qcpaZ1QjescQYjoiuLCgn7HtA1rFWMNhI02n4jVAyw66gnpsb9dM2nX9adqYn4Z6rd0sSpi+003J5h10W96ik8QD36FU/GOeUyYkaHTVJ8eV84Js9k556TzlTFwN4xGgnASqbomH6GrGFXD6mmyEIWJ88cp+lPqZKT5q2n9Gr/k2Lr/lC22oNnsLM5cSrd5+tDyg2vmoZgy4T+Ho5fUkCY+MbapZPFGQQBieDJcDoAdVDQdbACAr9qkK5QF0xDcmlSOPOcvoIe9dDBk5LzA25ZP5RifdezPBrJAk89ZUu5okpin7LJqMfckYdOa4lmtkaajp1QoACmwgDS6mDBJ3S9cgvMoEt7S4cA/b7DDswNVzUWb+ZKAT3FLvv6LKlPUZ645XaVY9NDbenD1o0AU9G+xcwBktyeUzxQqKE/JkYm6bCb33iQylfC/anKXb5G+Y4mExM3FZUVj3nj1aPRgj7vNW93/Q4HorXMsY784K+kZTM5NHEZgthmL8S5cxkkZjxNMKwo827jLKnZZq5jHqG34A5VnUiJbdKfY3xMK7ZjSxlYmi/abB8usGg8g1Q1sesG6LCmNjJbNAWRlwn1Kx2YeRtKsTtioJet8weCOYHD74LzBi6ccnrUSWnH7tUm2Wdl/7ioD+2SlnhPYs9V9g4eVAQwexwCTRzeFfQ2O7fh1p4G2HH1mH4Ui6L8ZDRMLx+jRnjTym+9wlIUDoC+7G3AcMfts8WRQ9Qgk4nNrkw7DmxSgNi1jH12jkTYCZ0ze6NrtqzgQ3rmnifIyY9rmO/YQ1E+9azwBmsjN00en988DbesgA73S72aqG+O5de8AFtsMx037CW4OlihuRaRduMbYjembWFml+cIntg/rGerNQBibYUxrDSqKUHxUPDiNtr4LwLOfLxsjMvm+H0r8dW1FGTHzJGF3oSADqYPpa8uByxGkFigZTpx8rsGMUq6dKgV4LEhJ29EH3vH8ECGHE0xrREOOvtrfAJ2P4+Fs3SOSKRqsu7aoqKO5Xi+XOukEGsvQyZm6EkSft5i27jto2D7k3M3fycMnu9Zf6/GmFMkZ952ZvfD5yt9DZV2CEbSL3dr7jCsqFYLVCM9OMUMU9kK7de17/5az3CRY+/ZGWmr8KNayFzT4L2rRbtXTDT8HIdTvmhbqj/p+xkkYDApYvg0UVGOSN59z5I3o3n9uWI+pi31Aj251ueNA5y5MsVSyHbnqkLEaVr9BrdYU9SuFpTk8VUrfU4JjCuZE6Rs6o/nY4HF7Mfsxk0Tt/L/+R7vN2fK9nbI+E4jNu5MjcDZBskV72ufPCD6YU50xcRDPH4r4dR8lbkrwfFfBkZYb7Ria8hrnxjcoz/Qvl8lzfM2eo+avZbM/DE0ZTjYhWHmKedzeHZExkNHP/+qhyOcD7zZCTTjzegLgt5LZ6iVJLM/TY4QAxkoPyNKDXX1PHC4VzPDB6oivo4IqfJdIfTdbUEOF5Nr6ygkF/5+p7nK/yUpDVwD4wR37PpXPj3OVOmYySh3CS+ZM7R8pk7aG/Wa62L8idT1Mi7yvbeevXmqNSzmnCjabJ3WpYsnMmJSVNem1Mmo4nj4T2DGDxPqNhlGtRT8e2ryQeOSlUC7MBFmU/4yMMcnlD3Z2m9Mh52KJj9vvr9w3wZCkmv/Hhbi1znj6OfZqK0MTNHZRmU8xRFIEceU/Ja+AFndIEqMZDlLIuPK15OOI7NtI5+b4Rps8++VAuWJfNgLpRrdb0bVgtOMqXIxAbHUrV1N3LLofJZgVptqhAUFMwolAxBnaTmiGV231hhPXLj8zrQ++AVvcqqLd5wb5WxzgPdSTX7oRwyjlIr6GN8j06QD6/Bp9xB7ru05PTpzJgjL3Iw4YfcHSwhZ2uZ3IhTIfuwdFLsY3geaPFZaYBYnRrjDeiI4liipeTYgGeKMCG44ifj+UqH0hV4zH6DvbsCBpe7uq1pdULp2pq81+ePSq45mzBrZnbzF+8qw9LDhHNmwdlFlu14bQ2sUWMfMOlxQ/v18jMzWcvcfhyv5nU8nxzAIIvzXEX+KE0bJMFn2CvDQmsvohBbOV4IqpdA8yg01RmuVWWDX2lDNfOb1vLGe4T0KpUcyqenNC5xBFt0qJzYc4xqymPGItBgoBEKh4mXJbQXbC9AsmjkkfLWIGquqBFVMGYG6y+LuGmCy5kX3EH0P2sf9hLeN0+yNPV00AVQPeLKPGPFAHsF91TZlMpKjh+tPuDfFgo8Klmg46lJsB9EcWqpkKwBbtZJ0eQb9h/x0ipU0XITgiFrt4kZB18xsB403jh2TvUex2gzVaUpmIoRuyTq4ZjNO+L6f/Zre7MoQ1hnZYCs/oB3/siPCDJzP7l4bfq3I/jTPisb9REe/Xtc/+cL4zouCLZT/Df89kUAp746e+AP+7gY4rW23jz+lAXRbmMVxRYLjYiUPJ9/Ez0H2PpFcmufvYHKLGbb/9L1hjnZ6OOvxUqBfRWDodAoKJlrbDnBT1TLL0uPh5hj1QvbBfhtg9y0niuPwJx99DiFR5fdowOnXEg9ULHAouBuPSLawEE2sjih2ifTw3xsaxNn/CpoNs3DBDiNaZahVn0iGpNKhWdFRBPHlkZQEmL/i6NLbC2/mgQShZ2v5TaZTXItsAaGeuTobJsCw4ZPWbEMU5ua7edb+yuoohMtASSK5eeLT2NZ1lWfu9jX1rRrTQQH7D9iq2JoF8P8uaoNTcY6a9QhCJ1xtGxwZw7otB6VaqTu5A2ohdDKjP+XgkkhcL2q5ZZ8VAxYoZMizaXMH0Js7Cu8o//bg/OmNLqmQ+hseDurJg4zYZFaF7OPf/vjzIKcZYmHzrcZb0Fi6kcmnlVGEaxC7cjVGiXOcLxYGNqXLquAZAwjBmzhNA6VW5ryMEl4hSjNQgt2Zf/sGQphfCpeJvxf0Q4Y7tljHp9YYtucdVH9u03XfYwU52LvTKtvjz5ghuGVIxrLQNYXvJUXgmG/ksngUQolacd8O4WPqZRe3Usg1O3iY8y6IF/6l/MeYhINFCLNGWhgGh1cuBwmWyVFxTG8LUXDKfxLioEADAXq7NoPHBpAoCcP0mJcsCaHXhapHta/4QEYZ2B+RZZBK9o0sGXxXyWXnmbqgBKty041+ihmBheBztptXeL9FA+3BgS6ZzFYtjgY/YYAZwMEDzYdr63dnOPK6NtcFpYiLhdIgmiwbHGw9vk0WLd5+T3uVfLHVleZLDoNwWaPIHHMjo0tEWR//5bLnBl/ovgJyuPovIvK+K/MMx6zlyU0CCjG/gkgF9Bi+mfwRrCA/90OujN1ZPZn1Zsc5xpFQL/RyhGdxnsLENHVgRZDcUZVnZpQ6j7x6tmkZajukYFzaUsC02oycmNVzfZXO2vYY4Hh28zjHLKVz5WfcR5J6fPzrbH6bed2PiqCYY3O+dYQ2MP7YxDSqWgF7P/4FFOkquj7WZCPZ/r7E/3pmX5MWDl/HleGDlbUzS43T+EW+DEZRGLjYVgE+o9B1LH085DrG0YOsASPsCl23DXzBU1CI+DwK2U8QviAqNJxOOyrOMNwWY4IqdYQwnD4NIhzC3/f7M7zeJFiiMO6gdc1YvJzKtdnlAFj6Bz5xCkE8uYjgf6bdGhidGDHQ8KzbmP4zqSAxFRBXqbgcBOjTqKsjiEIUVUPKZ/pbLP/0tkkbMN0VzNR7RTwwToeDr2SEudzm0g6tMsiukTjoQVsP3bOrgfqVE8AYCmbY4QxmDvCr4/+Tac9eqZHBHd9FJMR6Hj+5QgUsKgoNkpY/XlyPe3BgV9i8kdt9+lmY7oRsflyoiM8+x7P7znLQkaGA21gAV6nxXHWjYfEgHwzG73rH2lpD24qsgsksv8V8BtUQSNc+ZknO9fnjWrkJKL5ujFRUEJvBbFXZusOlPphObAaH7Z6cJ1Us2VHU93O9yguXN53t3MExFQrTcUZQjK+3Re4cl7c16aURkvzm8yc3g4w54JGeIq94/1165NqM7X5DiZLPfTVTBsTGv+yrKa9xHBccQQuOwK8W1gqgIAwb6mhilAnQGA9JszSfcUui3Vjw7EFl4jgy8zGKkDX6tiGYOXsjVjcVWIERFp12mp251y2nUxOTOFUwKWgjkrBSj2WjB+O8t7oiSiz1pzFid1hf0FzHdjhCk5F9Z2RZtxdLLfzZ6Vk7BVpZGCHERw/asRIk0RUjMWGIqeJHhX52TeKBNaXmxauaCn08zaHATthwt1FW7ZGmiLeL8ONh36XgXjZXtW5sD18c1Q2/AwZFfiLTdL9rZ1QsfXY1NXVsPHZGNZEDPuwpbzAgGbUjF4jzo+JoKSxfi9Tvip3m375v1O/MU/W8+2Zwxf4S1FtbHqpQAO0VgXmlYK5bF6dRoDZin+a9IIRMOWzseAcYPnAN8JTWBvRGCI0vMCzGsepJhnkj4MsakosMOU1DcmwvMqqERtNMuBmGOFEO0jQ/h6qOOeLr4kCfGDb0yxiCQ9qv1mgB0EWJTWxgaVLj0j3lGReuZADa3+LXRujxqCRYTqb22hNS/RoMQaMew7Ve7WxOqCGaC1XewHqgMJEKtW0NmNJD2FySmle5/g3TTlD67VA1UzA5dSyX/p5oGjW2YxoJzJkMlOp+W64S1N3wcW731RzEC1F1eV2ziB8x2SkpI2g84MHGExop1zb1H1ON7G3G8fkC3FyVvTsLkXe8zxOqf8krh5PSmhbQKvmmkpOCP7UCpuwqmn/WyLF8zKMm8LLqbBtLzmtNv8zvUUq87chxquT4R6+Bi+tSy/LaMZ8YwH1u99JXoJu/o49NsLoK4TUtxl6nYltIlTS6YyOjAkMKpe/J3xfh+aZwGTcZOZUduxdWq7yJVe4jKopJfKTToPKBJcq8+S5i29Md9+pxFcLuJjWgEGvoW16wZ/1BH78lymMJKdwVNZ9r1XTQiTfa+LIrXbGj47W3vrWovEo12V8nxCo56jwqyNki2R19HI4RxGa8AuLbNhZSE6XktR2pkd1tII6fmfbaNBkDmP8qGaRbsuUn0ijGBTNFvhXKLA4FrPqLm1v3QJhBO67iC+KNmMTpr5BZWOMywQ3as9oFqh9vp1szRBaJryPkJP2dcHZFARFF5urd2NQ7W41poABLCs8RarawALwI4rxw5QLv2aK2Mbu3x7tacB0KHn0cruTMqnIs9K5iPQxw4zM6nJicnkIgqO6nCA+BuFW6h0a7VwUoHtWaWbrnLelOcLUmaClIBjegv0tgFaQ2LOr2qjl2bbhW8JqYmew8J0dQkhD2ieaNHR2w1T3JmOs6HMsghD8TaXUIhlz4g7HRQW+0yQkWonQREFaKS03IykZfQXt8wJH7lLhYESo4/Q3X3ITMW6xz/wuickYgpXIV4onOgzplqHZBvEIQviYCIrwPc8P8BRdFxpUOAzvSz4y9l/Fe0deS8yX4sTCAR/GKfw4Lk6K4Er0saxdBdDStPXhmR+Ztp4fFfhVlxSARCcRbFKgdTmGLe9/kgX9Js4jN58g3nn7V3JGmOSNGwO5AYcxfhH6CeQ2h479QwL8vl/ItjOlj1/3gmUgxIc6Z7Ysi1mFUV81VJtCX/vMorhNOmOwiSCJapWBE5vS1aoQ300IPFvo4nrnUfptFShiFSK9OWJm7DK9xRAL5EanMOlyrGiUja/k3dFtZQ7QGKzRDVKU05Uji6lIMLQ80IX6jsxdBilOI+28jKEuBv6ql3VNFj7HfCVFPe25gPMgw1J4KrEuS2QCESi86GEDZdldZKHCuNloEgd9Xkg6vEAz9z6mzNPAKpqZTucQHjsmFWYQwzd5lpFj1A9P7eLPObmLMT0ScHCXi9IkURrHvCn1DaIT0EDTeqxKXe7wRRsfzLyn+S8eDJ5eljDPOEHYCYlZ3xc+yM59H9Ob8sLpKQCIngUFrYSJ0q+GFnGwZ4uxQ4ihrlghjRV3sbT6HiGCHcgjeoq9OvhsSpGK2UpKbOw2of6gTkL1WJCUOtQN52qC8HDq2qIw87W8NJNBPWY2nbfuNWmecYmFUOcfRq//B0FOvWP/G/QQJ27FMfzCZaQdBKND8/3rAcvDLiUnPrPJrAmX7uXWpRpb0V7PjsClQn9MgDYfqizUFkYUM4PiisERWSxQupTvSWMbcZnHmgwypl2JtJdCez4Uz2xVhTHXgZ+ROvf5Jb0tuMdMsEGszK5lIdr/yW50/8eXl/fR2J2+HSlUOGFHJMQwQoZuQ4iowBf2qZPn1v1Y6T9QhuuM+yfvQOprvyMcReoX1t/qdrxP1NcgkiNHvLRfq6hNT/nlVzpZPOXXe8z0oqez0V7qwfrWNqGVgCxexOOGhF1VGTDv7a7vsDq3Dp0PeBXhX2IOrWKUYB7qLORi7l9qg3D4g7gcB6snorGPJJN7A3GXXskO3aNyzkjOmkGMzPCIRNyT8H12U1i7g/M0t/g96t5QBQZH6fMUw2sPv3+yMi9PHVn9qG4Oczlta2jDgeaa1m1aevWRPXSdcxRzCPJHDmTIM7b8xiKjvpguWcqyJPWpQ6PxsJnIiG0sQgaG05z0vAaMVQbdABvLXSIoCAv0udGqTHuIomEYuWz2/FtxgNrgewUqo1HtQMDAkhNHWE1L2YHWbmtrw705OgHemoU3dPO4DV6zVBdwyN46TrYJ8ii7PSugyVW6mp8VikOnoufPtU39XVlPKtudMMomUiWrGyXEZG8VRJa+iyvJG+7xGQdELnLeVqYqQe4S7YaSpeOi9aYq5+P3u47M/ZiQVTWNDAvXeg7oiBSrT4hWIoSS/LitbN7usWdumDfhY21ojxmEQ038EbxdCoYqCYsLZPp48Xf7SIRx/0HHpWTp59DZt3c9pjM2Zm10Wdoj8K794IGPLAlxuwgccrgTvCYnH51nowQ5CrAoduCSXG56cYjceT3ZvPIDIxZ5waXN5z3BF+93t4mvXVuPUrpapHQBhCh6DwgzXdeAPbg2QzKqXRD7OYzPG9gRdXYGhv1fQndO7jvmqhJS4cXnmvw/wFkAgTx1J9xN52nHzep3V24fwEjtzJdmL52xD3jJOqFqWaSYYvBQ/GqkfBIRt0nfRfShDl1qiTwUbZRALeSS7y0oBNBsqYqhEb2CJ+IB1RznSCDi/YGA37hDFlsyHyH1j0kHTtUWGJsRyE1p/9Jz2VAGKEw2yL+0Di2VZdB6vgbUaqRzcwZr72pbd0GPZuXdbJ1ULAoi2wFWmwRCctvU0CTVOohNdaRojwHBKi8j+CwB7lt7qHck/IpkvNihZpU4JOoeRZVsjZ5FLaICnirZg2PSkUCZ0qZisHyizExRPCNb+EJrUf8calZXmzRr6lBz85hcdV+KipgnAZ4J9q1uSLEeJTBUKaalwr4CaDa3BYmsw5kPDdB1+YZ1QmIybttO/2IhkuC1lDb1GjgN2vUzqu2Ly8KApFDrSGUXy0xFrRjRW/l+NgAPAe5Kj6dAY7wdT9J3BSEYcXalgdNYcEGmS2+b6+Sjm+/QV96zMwsDgwNfnvd+tM1eWpoeWFZdIWvZxXVjAhdau/voHaEr5WgfFDN+6J0e/VUYyJUIVu/k6xEaceh6eMQVGNKDMHzW06tYWsxouSgp4sRSplidpo5Tqah0DHCtnkr0k0XaEQsKqiWRY9GNOmQG86apynh0maSjUHxVbqs5+ByM0NcRg2KBOcdEEYElVb7CU+cbfwgmJ+alWbHIfoeekZl5YpJkpj0kIdV15o9pK75LGvBCixTFmbYi51Fb7Nc+IstZwSJwEfqp2bI69jRkjChGCHwXdHNfMVBJ0PwwIIkYMGRdDVIDRqQzGzvkbPsy/BXMtO78GQvfC1eUH3ebvwJIvkMlVzLtw27aoR1hDJqqTEmQQx8NY64yPBoXta8RwWZPxlX8Grdd2/CrBhCykzrbDsE51v6b3X2G5v9Uxd5ntutH8h3WSIJik0RpbOnDmKfMRYz7GnqvWM/YydY/Rt34mBaicLfgbMl8Sydq8ThOh0QXHWQ9vH+Ob2zEuuHA5QH4UfqhBvWXTESwYLW0FQd8ObQ9V91bXJZATvZavGuoB0frejZnYaDt1Cu6Qit+hCErHYWaLyJ+qx6EHGvmoRY7hbCvJbbE5sdQiXs2gCPTT8+WEMC1OkoXeDM8FDOxdSpgfcPLsK3IEDgzBVPlUkxoMgqUVxGzbkkGWMQcUgnlWuxuTketmnOAjL7c36ItUtAOIvKtXPykY9mcydzagglrMFc1yCtbR3wWWxi5c+l8pCO9YQjo+g0qJhr4B6RQUo/bBokvOkyPa3h32noRh06z9qjMY0VcW0ROS7kWPBkZBPhMA7764X06An4MIn2Px8ChywQ5PF6csggQDb1V23o5NNAZSLR39/udEk8Pqm90RwzvHgw2hcts82YHCYAYm2XDzelevt7vGiTXpNx4IdEsMgtdnJNEa/NfsCwkb6RDM1ogORjakQnke/Ipni95S5mOtYG4clNwasyTBcwr5KvAA2Ec3045ogTtoBvuz8jLANatZRlkmm6qLfVCdxG1gMDRgU2TjLYydok0cWXqOQMmI8r6YzBCCLQBbhhkkJfh3qqBOK1FPY4eJ0TZdCLjX3ADXyI2rwxcQJ+OWAei7tXr0r1olB4mkP6+zfA7ho8PI/MWDLb1SRIpeQKBM11/aXwHv1riXAmaDlLcb86LWvEeQTIYI/WJQsyT7J2rkfGzX3Gt/X7UjE2wT5zUjGdqOnnUwQhjzK02lyWN/5QcjFo6WfP3sNtd4it/CZZh7Bpyci7aAui0zTX7hweCxvTC06IraNEQbk3LNeGXtixXEOpYnGYy1WPLuWW8OEJYwxameHk+dEB0hlSiovwFgxiki/Q3gEl0vrbIaE3+XGuIa+hIDiRB8eaTi9pQ0romo+7fqJksHv+GwFSUx+yzeIPqKzSb7dxeWMAS8m1m9tggz522XRtUmrTQA98W7hn2HQR1t1bW+qTIjjkG3wHC+fqVXT6dGMBLLKVy6Q9Y8xV9lnQsS+jTF9x50yiUI+Rf1G4XNWvBI1e8a9EPAVE3/4yIO7P6wV0MRkx1YXctgEg8/VhUDdcmewCxjU0cH2f2Yc1P7Jwxke3oCobHBecG6X5dTVMurwtOE20/KrY729udPvgzW8PjTULJEl7HYz7Y0Ac/U5aWGqQnihQOMjFcGzFKQDJH+v+ljx1LH4LTqCOjcSYL0J8umtOZfZHZAB86mNfPcAg660CQlHzNUVHOs3r1VNofwnWTPv0T8/xo36JELFRCljouHed4vY8t3O+s8SfU5q7+jHaGzK5+vuprZy8g+h4tPqq68lwSZ7O9hZOeWbsSwtv5WbX5w23e8BU7KhJzWax+ahLUq7pIj/dPQ9zlHlcqqqcQxuATRf/hUkD0/EsYBHumJ6C2m1MFadPYaR5pOZcNr7vg5dQMgD6tM2HEF4qxKYQrxBwX5+mOLA5FoMFdPlF3YnK9AlHz9UgFyV6YewE9rAySjNF4kOfKnwiKiZo9ts2VZOxZ404QUYt79DHF4RIR4ikhCHtZEy0qnzKvO+KJQmjDtskDj1WB5L7uforEBh0ATby6bKo9T7BfrO/WEMvp71xwG0E0hEGU/A59r0ZJvtJCZj/f5ZVRYVjNShkIC67P5naaS0WAY7F8hAICs0fR1MHp+kp2zv7MBhvngSH+F937T3K6dNQAR14/7o7iHm0g0XGjYSOMs7NF6Kidut1M9025xOwe/XP6GP5jdf4YcROb74VHK6Me93C39+I0bB4Vrp9draAXAyKyL+QuqU/PhmzI9r5JSyxiOXjB4bFiNSuEp29zPVtdCGpCjgnsBPcsGN8/ULB6wnWbR4ovM+WjwUB/9LFLfJamGLlGns2BLjB0uDPHh7dG0Vc7eJi/GAxeIc3dMYOnV6SH/rcudrPB05kNjP+QaVvkAz0SlEY8bsR48iLmDj2vDZsANp2mv1FUU57jCxCPO5A4a85qCXmWWoSC9n0zX8V/5nT805jdZmwac3f7DnS1ssElZqYRIQnOGwS0WymI8e3TuFxujhusHpDWFZjfNlOeSuJN4ysnH1C5xEVhB4qI+xY7eTSsXsZFzf7knz9KP4Fp2UzPIeSgzZPFzVKyMF7HiwVh07DX+hP1jxD+S4+nfDJOXytY3oj5BUXmWfpHXT6peokmT7Qv8bSOu/acFC3O5K+rjX17uiraDeEDvqIhAmPYNXysZS1jr4QJgS7FYhZf0iq+cdWl8iTzcismIQNv/Gr14s0/QzvapEpywJ+xVkussPUJpAYnak+MrzYr2biHI22/xdFoXO/2SUWys56R2/UkriG8K79F081aFclLy3hsJM1MEci2Dvg6d0YchYtje2DU9mo0XWZmNJDH02jrfgrJyGGq5M+mpmc2GyhTFjeDQuKwV2ezKDEg9WUERTbQ9AuYDCIvCGLwW3df54Jf9SJetGePxhKvU1opbDVtGLWCd8XTBPZz72s70Y0+vlDOQ5KD5g6JrpPn+PbwWcUeEY1K8XxUIhGjf1fBUAwrP0Lpju7wG70w7UgLIAtyaIQRXOXnWsZVZ/BT44qdY3TPcigw4kJ994SdxFeYKt6lYutW8KWQ8FT5EBOFFiGynF3ZIlGoR6PYnKrT6T+aG7lOrsIzf14JjDsopdMBS8WvYgkZFLdRG/8ISjXFjVmZ1g08mPW0PudCDf8oJGYE+XvY2mc5ryM9Jt4tSP4ZFnrUvYuUoESYvJIbYXvLR3hIhQIHYD3Ba7oa5fHni+FYdC8iQDUSpT5pNr/3fyj1DV4DhMJxCz068wdnnmDBTOWHjdmJOv93paxc0o/593MOH3kT/KRY/cPmvsliI+XxFsXW2JkxSM3x9DAb7AFTuMmrkKxzi3cE+0rOSWz4wqN7V2U3VscVLragaD8eP6n2UG+XVDxBzOpnC5pQPdHlbbGdcpgYpoe7O8paNnQOQESKbfEQyVGScc+NUrjEObaVysiHsF9KLqHaz7YDOQTSU6ezS0NB7JqOq4hLn8cVl4YrafjE51nJe7jYcTQDsVQDe0gT+wnQrd0i5EFwbmNjiEnvdy6p8z4CZZYIadsU8NR8spWseSSIL5K7v69ldVyD7kaJPfNYO7wvOafvkJ5RsBWovTpr9MtlSiLfVYI27ZhuO9OreldT0cdBItei8yiBexQ7Dv4O5fiLHiPz37BuiBggamMpofyYiDMBxwuSf/kkYPKPEVrt+B9c3EcZNnOH3WsTKdyG5gxy/8rTm4oBYjXB6BW3XcKqfYEJQSuv6E09LxqBmDev393I0j/foOe4LpzAHKI7+yQ7RHdBApdnJVhZhYtwKeko5Ka4A1hNX+L4A3d7N5hb1X5wCcz5EwpE/aZfCawd3EYdYc5Nt35pMFR5dUsp7Bshge5SDjk9Ipu7JWkXyQTfMx2xCrwkoXDeXLHSkwpj0ZPstiraDQpiKqnzPXhw+TKSceEKPlp0tFft6LwXgNsuCEztjosHKVBDN5jRofV+bxC738G91Gb3qiIb5gDxbyXHj9xS6WAqyaIrQJJ9DRWSVJfq6Mv3QgQ5jQ2vGAAgHd/6WSnqpm04AwctJNbG5PD0D0fR1P3yS1ugSfIinSLv1xWkReVkUZy0JqCrqx9VilLdtz/Bu2r/3tuylh7s1zWf6MbNk48Z5hU7+0y/tiGXJucTlyPId2OtSoPOtrsJUjPaivOgiFyzA6I1zdHXVvX6XIRgN3pmPsvdahMGbVemn8jaITzx0hyS+Lo0o9xMOMOoiquaMmSCZo1K9yYa1EQUQJaipfpUNyWPb1FgF6PJmUh6Z59nPY3OKTaz+BCj+0xn6uz6OmbcuPP1WlBOzVu1+v5CZwOZ6EkLc79Ogi4/IfFrW0CmbgiZvE5PWxjjiphvtgHD87kex2uq1+9rP8vCyyRkVj7F3M7aw/E3/he9sKImhYK2z87b+cUuxgEUr+Fyy7aktCdoHpFiX/HcPzCs/PCTA1b3nRo1j7m6Gm+Ly3JlEbCF6Et1eKWTLVpyYdb5iVkCAnJHizUXVj/5SbugcoFg8Q16KFN5eVg8OlitJ64sRjP7dTtS9EDc8zEbdDVI2McHAWmFz0J9f/0hu23uKYKrneAGGc1Zwok5VGk2RAC1v2LZxvAkZ00eoVfVoAYF+3JCuCOrDO/GaVANLH5kAHPC4+WoIIY5rqOb4ugFWTHTCNHytDLCrD4UsbIyiGKO/PDjCiJIF0UyQDxzFFVf5ymRgua6iC2Cxhjj0Es9Q7fTjHh17HWuCRZEHk6MhuKNb9JJCenXXVcQGl9+rMCEMfhpR+9bl2vaYHAj95lMfAV1GJHzARdVhx9djDLepkROgzd3KsautpqS9hRgQIj6of1lBH5KqZ3r40reaRX1u+l0bjh5j9yBEQSkOyqJl1iTnrqOK11gYIa3eEwrdRR6gL4P1KpET3jlgCJcy6Aj3Q0ZJOMwLjPV8V2rrIN6W9m2RUM7SF+Sj280j4vHfXswC+ozF1iyWVVCaFUNfd6dsPcaSGo+g6d8GAaooWyfH9pp+r54ASg3cOnC/gMlIDAYAC3c7qxxw2Reym3Un+wDFxRnaEK2b9adIIH+1Pnkz6jSpzzAgAAsaV9c7FE+8UQHANQBcQBANaCBOMCABpIBABqo7+PMzmwqZeFxEVRbK4PpqLegr/LjfP+Ol5fFcJ375TI8aPQ+uubPsI/d76v/diDL7X0VlldKhsXdv8WUaFil89zuFJ/Ey5ZRqFkk55DZHVDyJgQO61uf7/e9+s/zZ8zZS+cOUCtm/DSm74WVnXAoRwWdUMKdqXy/3RxXg0+iHMxUYQgeXLn6vZP5V7X8DmRMk96Z43NEpk5hzFA4uhJEELy+SXWNDiqKFr82f1yGMh+lI/aPVW58N0R5vXt9INNEfEfXhsT1EmLYJljwotXHDv3LIwxkAYIK2FLKN6Xypkxxj4rwmmLOUrsOuBCv3RX+t3jUptlDKJoBPItX7O9o0aRnWB1L++D4tWk+YrfELEmSeOPfK/xOXewgNs+WuiwTltTIoQSwGDzIxyPPoNiME4lYIPD5Klf4qvcAzTk3JtTFrYjxM3GD61dnPYFBW94xc78M+dzbEvYXA6tAd5J2IhrtbsOGS1Xe6sbvYPdGY/DEnAPE5MziDOo26GY4Yar2SMH91mv2rlaI3oft67nBlKV35vziwob+RPkuIkkjDUYPt6phZiyNIgFGwrYp2LNXbCcxpdXbeqWAApZCcDqsImUXtpvgMvtKnrt9GFquJxAH9Y0QAMGfUMEjwHkTWlj6lkSWWWiMMgm6xEtT5nb455M0hX0QT2L3pyOhHV84iyAbsoLNtGbdOsM00R7fCojXUKeJ4/hMuXvWUEgHFMYRqwfbEgL+U2pjbD9fO/GV99eUCB6sRBcweGd3taLn81Z8/jRTQEKPJULh4yE+mD+A/Pw2MB44Sjj5kQ1YmzR2vKL5B2o/L1XUZyOdQgQutHiX3NzoMWqevzeHonwLS8tfwXy2iy9KViT2IRtCFoZzwlNf64KPgyh4gRiq/7iTfwzn6R/a5esgDn+8U0AUwFmh5/06TLVyxHhlhFkMTN3fluQ0Mwu1NXRL3yfAJNXT71gjczlYdmoRY3k9LZnafn7gRoVLVKZXROg1wqZSw/a+RIKR1HtLF994DsFTSO4W3SE7IwO/z/fvi26sMW5FfbguDC8QcMEAko7R3L/bjnpX5xEe1EtX7xYqCLesMsbE3vMUxnIsiapjtSEGHpLP1n2fjMYsV5tDOkrK75kwskbAe89OGqY5PhcZaiTxmGAIWRnug+uwprgpdPxU1rXnSlmY1E8JQ2bVvFkR+HFW8xhC148GBbD/kjCB6oeIVX8SVjzsyLLOPtttA6DXX9YgY22D5aF83OXIG0jTURpFoUPRUaw17mJvkgxAv5wdHkWYLNsaCC8bOuAFi1ZvUw13m12jxXZVsBFO3Az/JEqgoNLeGnP0aeUIxeRfBAWmdBJCE5J53dSIw4h3PjahmS/W6t8srey1BtlmzVoT1gIvwu3ta57d+rEKf9pLUFrB0FON4kEJaM6zaXx0VLSgVM0bZdBx0WpE3P20FxBdWPUdKDyXtYKQgmn8JM748GJNv+Y4jVkuJp1hco4wzTxGwkM8h8hOEivu7HcEN1brUDLlNdpUY7RPFUdGVpHh8J8/apP+ceBhKUhRMb/3o+7RdJ7YhtK5I/3KeQhv6sUPWtdmd/s72vhJZCRF5yOUiUdnpxDTX22sU0nVhUQrjTTCyEmtQZSdreRS7IT56TPRfwZX7Bbslmta0uzeaFd9hJms7DKzF97s2UnaXiyr5tL06ITCkItydqndr1fcuDRrWJFaGW+cQJyz+8EqJeYwrF3GQ97edJZu5vBZ0xmUIVuapnvsC/WOZFuNptN5W2qeqxcNEz01tIDN1bL+HU937Ulu4HbkOPIHJfpKfmfguXuQ0njsHZIv45oVrHbdCleY8JvmaUZteMP0Wg3CuNiGAwyo485+X1iDS64PUrP9BitS82rxi7Btx4aRSv+62s2ZUrDyqMu7ZRp58TtVW0BNnHUd6rumIHFIDlmJ69CXtyQdgtPSjzqfG2lEczdM+YyOBaLMStEkTmiab5YhjJTJS0YGpZdDpq8lg3ieUnwHIsvTpHvoxrLFBztrEtNe90ytZNlvKV7FfD8OdtOoNH/iBxC0DQSvFlALP6N3u6M92ISize1s+81HYUMwzWP2NmQ1zrLCNnGNFBxKxVpmUdKSTYu6xsaUQxrlmTBULh5esiEovq1oZaxiFOLTqhoHdveFEi0UHOGx6MgOx8Ez5SNMxI2+9q3+6CciP/eozWCTruriK2SefD7W3CLVjuWGMM5hIYB+ZZn75+9/AO9d7ax/3831Kht/9oygGiK5E+N/l5I3FopQRHy+T0o/saTcAN1+KkF057UAUXWMbN6OYM+0I/xSegiwt9JQ2DxoS2gmXu14meO3uDFMzd4OeO2uIcjqZVB2wRu5JxbSjAfU+Xn77kk0glmZe9ob9QLhocd2bTUyX0+iRO6oNGzTc3ysIxdXCPw/iQJH2XSaGRyYq33B3dVKxDN7PmagDenOqU/RkMuDJzDwhBVkuz6VBKh16y9tAyLsHnqzHuXQmKKM67oPOmEIBuFJN+HsT9wAMfc2zhQlwd/jmmDpkplLkiiZtFKygxdvSnH/TCsP7EBB5NKNFkFU3diBCTk0hMoyPS2PAH+NqvISeRVfC+WGZcNbUCHAgtYbfffUDuo8qzxHiQ87pkQqVum5yWdDzm9dyYGO6ysk4eUdwxJeg7d2EFAHFGZ5FPL3miiLsi4zwBOz+n24l3yRxrSW51xd2al0yRXAmHh26a3/Zr1gNRTvj5yM0XOohZpoH80B6zTJSFRvsuqbxnzx5zYyWtVZcfcLMDIdlzreY13U5uPi2BzjYq/pJ7D3N9oC3LheEFhXpWNOfKpNDCnTeLSvbxKDQWJf+YV6Cfz8jkzwx62O65zf+3wk7e2MMYN2Jj5Sznf7Z2Qyghp7vmUFrbc//comaduthUduOrXseMYL3/Dn1tqU7nZ4g6q+EdPZrHRLQpgwlufJfqJjWPsOm4EI0A4/7wzgVPi4Ks6yKUbUtRAVBJI0W+lxmAQVEkME4YPNSI7W1RjZuxF4QcFhgrzqtjnSL07ocD1QWPdosuqYc2ou55CVa3CmbNP1ZFdKKlQk/NH7ab6uAA6sSZCgE0DK+bd0IDKz6ceHACq5Kio2xSPMiks5/0WzxSNdFB58dpCL3GnrUuZkJAzxWCGPRPOVGXfmWrrjwUGGnRDXTq8WWsyXpp+bxMN7x8ar2bVc0ns7TomisxUNU30EmMK4aglB8ZWQ/5snZbOgDw8z8LlkyTKWzvv7VXmn75XxtKOrlZp7lHZsNrS7Ljr/F2ONjuch/HPsQHPYiOSIntexPJ3SeOlRQkX/viZ3/R8fCkvw5x8yiLVMGxYNp7sCr32j0Y7QZvevyJdlTJ8CLAbu8QZdP4VdojrZMy1wU8q5h48kDLusrd36DL0uPgE3HPXkK1PQfkb/Et1HUvQ4WWlePo3546mfa8anb3qzWTwxzEG6r+jsm96rp292TbNaePN5NV+kWH/asulkH+qLdsasn+g7jeMk0T9HxZeGAUaDKX/GV2IwQgbu6IMBLxGx/bKQDV/6kjU6+WOQl58VvLDSfX9Ej5nnjL9fuSxkTfHBG4ujAqqLq+oO69DcMl5mdOkIIiv8CldYx3e41IIwXGJ93UcftwpBNU2XV0uW9zcX1i9HWE2WIy7E47HWpn9c5Q89yOxghoOAVyGFZaoBVXynw3tz8+HMnEDitx/shORzGpjxXKbz0aCShaR9eUXBxIYqiZATbJwj2yEPKESbmL0FP3lJ6cVKu0+2Wbkg/+wELMRevdzsoQnvndeqE3hJGZkzWcQp81sM2Und1xp+1NLJt5FPdf9t6GMfAHZvaTqLNtAcRZQN+iqdv5XXXZZIjrvpIknMVtqqcx5dKOxqncbFEySkJk7Cj4Qs4vcQtPOqTc/oUR9jTvdcP/zxYfUhvAYEk/7dOBgijubIdqPISsa3un644Sh7+8AVH+fc41gYtDVjhpTvyJsCd8DDMIZmtCJaKnIecuPKj02hdwUM8YITkPsFw0zq8+Htm4/o16Gmi2bqj2LF6mu1bnwqWP04MeixO2lag2KK5S3SnNTInT9goK0ldni2Q9FwduviNT835Y5P6JXE0vfxs0+/vLPNZhSG9g7V844yaCfvTPfHuGOU7qOV1WMtxA68cDysj1xtvpTvgsdnHGt0jDcLm0JwlbAcavEj7dCJHBhnPqPJATpSf0dvT6QXzoIA0Jm+DnES8MwIg0qPjRYCOE/N0N56lsr2qjxHMbvVwvL2w2l1PQZmd1ebrt/gPB1Cc2fPNml2E0ux8DnPxDM65gkUF5mIULIUyAzFiup5VTb107N3jwJuVm38SLmvxEWYjlvVY4I531Q2ndBOEEXjuzW3pessITkXTMSCSFFWkhCGesVefRs306RIx1c9iHhFt3fukJoR7XUEuj4iI6wO0+3T53iBXDwKMGln054+0Km40GT9JN0RGTxEGW/fjlH4jL1oAtUtlXC1fuaCzydnQItoVu01g0i1wkLgh3nMd5g7/BU1aGf79+Fke2JBp+hpn4rlfJi93MWPEKYM5n0S8/+CvBSRZ3Wif2lfHEmSIDNPa9VRPC5Qx//tjSeKfpwrOIJcXa7Knzvi6vkBK+zv5LhgvnW81sAXrbpiN+WcsPyFS8RcovbmIyoDQxWbdXHhMiRtQXQ8up+nX/sp9MU2P+peJR5X6wvvYoT8e2C1+VrHZmT4zJsfF/lt0cg+nGKmsZN2V3kjL7gWwCqXjqT9uH8hLwTKMBTVZi5Z/7jIz7mpw2rFqJG2zUVFV9jlJWDWLnEZWhl9xDxmGhyMwlnujZ5/04rIHlf3bJUd1j/mF/LhVZzHT82GDFCHkdBE9xgyrTeadvCfd5md6rYvT9GKjS1IXamlVgQChphEeSLj9yyYrvSPmxCPsdnsfdssXr53UvY78cQcSd94rNzyk/GgzvbJAIFfum8boqbwZFhPOBsO5cC5+akr+YPpoxpOG+3zbmeXInjB8IDobAW1aoPDcn7UIWHASbxrQ5c8uvLP0vSLS3H6Q0ixtNKwOnXoDBE9E7f0JLdhZBvmzar75CP+XVquv60gbVjPVg1hIf0jDKw/l348YMrQ/5AZxF4T4HzadiCC7DUS9gvltpdyMmE452UgQodx4yaBU9io6QS62AAtNTQeN1gUfTwix3iWHdNkxhvWq9/GYzK9x69qB6OHRV0hcpBfGDjEZUyb+20q+yO+v5rU4Cwl+74/86tKz4hvnFNZoRLmdJTg4bWy6V7uKZ6+KwVkr0vR1ens6FqXo6crirvM6TBdyZZ0v+Q0MIo9gYrf4yc+oM0QV6UhklkoIw4xVk7Pu0cbDisHZRLmIsGntTYF6uOHkn9Fddihk+6lcmG8Iz33bY0kWtmFdMFDjmL5xbCZ4CeFc5HcL3TBbsVA2GlkkO4TiFCgjHJ+4ucJfIx/nhSvI98DqcAbf4tbGs6rl/URPEBjFEJ+s3vJBn3R/3vqWAxDP0m5ZogqNrEyYGRU9PjNK3cU0/LwK+f63gQcUvWKd4R1gCl5uW9yBne7VsTz+CkoMFj7vshnMez9+Dd51YzoPkEptZVUn4S9kgPB3jgTIqszjkvcIyBEcu20Ts9B4kq9+BGPt189+xe/hg098a1kSn+0yWnwcckWUfSWdyVqntMdgLq5hpY5DU49OhyTOj3++q562l9JuaKE8NK72Nq6rN68d2DcVYIdSWBrPzijGdzw6seCPMtSkDLjqd3f2tnLRtU5C0H6otdzSntJh4ewIeBFX4MyD4HiOpOBfcwhR3/Zz9ro7mmajWy63DcaMvL149qLVPpv0ISifF493RfX4e+GLzxzOjGaE/fnbyhoxXh77DDMoDk8QWNUDqgxwWpfsABE5ueum05fu0MvhJS+nYVvUj8aznJheFBnGuPvuB50skWRky7TGYVYAkWl3RR1D5KBjOYNKDlBnvpi6/52Lw613ooU0lpchOOQD0GpjnV+HB/f/BNT73HR99i/dh5/pn9KDT0dobrBsKZfCEdXPjjXr07/uDw2ej7h0c/4YmqnNot9Zq6Nw/eqWX9aA2564afbMYTrEZSSg2C+P7PX4zZtJ7tL4eU0dvnFrUvv/nVw6Pka0YHbLQd1cQ709WhBPaaw2AFYyl95/jLK2+v41ScuRgmbWgODCbNQdgmcQwxQgLoJn5stP1Wtk+ccH7C731lKHD61jzf55S2GbK1t7XoKzouTgYYlAyor56PJAosb2Zh3eACJJt4+LBOh1iY6TE1t8Y45WNmWQ/8KLyiNcbguyH1YW0UBBa+l+PTimjrg0sVatHd/+WWMh1+qWhoStsIBugxQzpDqMsfiNg28PLwqWiIQ5tPmhM6sd5kOBx1wCbWfokZj4C144U7uJZwcFqAtbAL1X0jLqCyftF6fi5MPviF+BhROh1v15kFtCEP49rkSxJhQciacwYlgxLpGD9/39QRBOJNCMZcLNdO7FlQnb+o/fJF37AagBVTz0MaYiUk/A63I1P9Aj82mmAIDsjtK4Z3mrq/OJ2yYD1FrE96/efbAH5cbTQnKXnHpce1WpUwpDLpBvyHhHRtWYXXSh24VeTgT9N2Xwua2lblHH69dy5fa3y+mshXfTumuOmT5AuBA+a2uC2/HMjTyCn1c3hTk+ewVi/3/KsU/3ZKsqJpumJbtuJ4fhFGcpFlelFXdtF0/jNO8rNt+nNf9vN8PwQiK4QRJ0QDonE4dVwGKAyseBDZn27m7nP5sXg24Bh/rUTOdeWVeD7jxMIjlWJTwGurxd3cU+Vv6/VvMv+3Xh+GjsmGjxlt3NPkQkxiYTZWQ7QZqcf9J8Mf23iGs9AaRKJ7uq6f7+um8Ucq/0ICIJDSd4/h8c3RVFVypPT55BftUj4ozjeDJ66vKb7l+4npdaXPF7AGukzzataNLFaQoxGcHGw1C1MxNns7Zl3Jr4NHHn6U313K9bvW+uMbhi2wXjF7w0wu2rfNSFA+bz3ZBD71eVamanLuO0lNZOcs+2iwkFPFAt/nlzV7pRnAiauXjPBIul0QTDuasuuo9bNu1tu0ClsnY3yS3eUKD0Q76420lEivcdsmc9YCBG4zS7DgVijUJGayYgPVEGzqttqAE72yxVXgqrKVMaeKoIHUxnwa+nsxNiw2oPWlaqFvR2swFl1Vo7fee95W+FXfEhe2kIhY7Icv0S0g2FjiejYKN2vxX/hD/TYK0w2dZev8/HoRA1JxPd+8PIBGcK4mdDyHIhyr2igb4UMsuwuK43FsHP7FfKdz0M68PCF8e83pkd8Ku5G46mu9lfL+bi6BfnqrOHQJfSnm6XbY/UcZT0oJ2OWuvTnnSbG2vXHkSA74u5dPBsh1bcJ4I27Rz7dTvtwXpIS3i6TTwHkjUnYRaOrX82ytrxaasm1MPjDOkwJYJNAh5vBcRY7j/L2REGBqlgWSG65zXNB43hxZy6Jome8qjmiHdO6bXdtCddglHDw6+tntJHuVacO/s1/ZCM1NYKz14+NpePlCX2lbhO8dTvsIVnQon3Trntb0+dg55zR/vDTwqi2dB66bMSaGSBraC0jHfmuoHRmotSKqQ/zje4cX82V8iXah82/cIKpEt8ZwJV3zggP+WNZZJ5MtX+/iuoaVmDUjmuFz106/Naq1EPHKVz7De97SwXn4J33ZlClpTBeNd5cvdN3Ze4sb3K75yknmwA5DEJdMjv6n5UN86JOYjcpX1MdZusGpdOOJcpcKixAzl41yYor0IOhfK12SnZ/7V3cC5/m40a/SpLp9O//H5a7iqx1QS5+9XXTOVpUYEI57j8FTf65klkjpuV/shq4PIiHiOw+qffaAOi8R0jJ7q1309lf8LLQFLcsf1Kr+FL/4MmwkVSf3Hq9zWuk/Qq/xLUdnsTMq3mGjFLFI4xqfLsiC2AQfxb5PPlH1NFUalVRUfCGEc69VZUA/YTtJj12QnZc2usFSeArgGrvObiO6UfOpQ55q0ZI6jG5qS1Cux6Nbbr6H9cjsHsdLi7E/9d2mI0eIs19BVKThanOWp7/QAoAJcc+Apd105Hz3UyDEi7S8XHBuqdOtIXiXVdYPsgOAo0OgoOOva94qenuwi8OoqpuXIpYrirCBwrgWhn5/TH0jn6I7mt/m/O4UfqAV3jtTVlB1JcoSYDrmasf9KDrjmwBXnjHYZmRDN0biyD3PHZeaiO++62qDTmhIdxHKOK6O9zPjoBI53fsxU5C5JnnL50LD103apQDc51Pap0lRX2wie6G/1O7XoyJo5GNl28/zSMSY+qaKthiRH5F4O0QvULk5koaetg1D/ycTEOYz40xPbeOzsibKe2RlnjTVrLuIM+jhPUvHZjIVk6PMXIoMMdsERh3Bp2iG2wEDIQt9IZiSfzHWPzmujfn6Pxcz3KOMqG+C+UeYH6tH8H137Zr8brkMq3O0GK643f4iLes4bBc1B2F1s/bXVw7uZMQ0BJiZPNQaCbJ5rnGqMjA7pIZlRITXqAFc2eqnh0sU1omGNtohOmAZacsF97rhgWmZs86XocxfllnO15Mwp2uZC0WfFqq23716HaBVz1agt/IcT+IFQvtw/MlvYL9rM7qWpgn6VyiIweyy/aFPKGY2JA1Zd+yu+m+TD/90is3qVGRbzrMeuQ4IOmVFHx7eetm/L/kPOc8HF/MuC0K81nLr3BViPP5yR5WgIF/1Ine5zg6Ua7GxGMAQC2oxn2dG+YM00+1MrW1FIk2Jxg+7geeohRiJqPHJZOQUPhzJjOjJiQVwWnwjrbcdHd1c5rcyCfIeMf0+TB0Gl2W6heLPoGLfO6CTAjf9KIvhdr1QfXUEVic0+/+KzaIi1yaz0wJIFkO/6ykTu/2iTdiqGL52HLbrKYBWIW+fhrjiP1ouYgrcjCO5W0u2iJ0c/DJbU0Np1KSxgy6DUZtHSJDqEzmRiHT9Z+cHGjnOA8i0L4rmL1bQUeFSJMaZ9CfjMFYJhc/IV8CbHfU3tt27zxrLksqQz8UJnQrZvhlHxOzvcCOMxmkaH/Fv1c/km8hfBMkVZJMdcwLCPl2WEByc1UgM0ixynfaRWwe32fdwaI5Ofn7Nsi0FLKsPAkzXTmJstT6v4PK9F37YOfcZvUsQeKQSfuJ0zGEm6GD93TUgF1ZlwFKjsiLrckxENT7efjm330CHosejkwl2A0yQQ0js3H7IBJG+IWz9KtF/lVsPAdYRtEsZpgxtZIyVATX7kIokMOljGM1ipoF3EXC6pbFissayhNYqx/Qzc2ieq9YY2zQvX/7YYDBDw9IOSHybb4HGbURaTL8/NbBahWQ1NONsXN+sYhfyhEhtdmWfnhfXBpKbIySbRnClb3TNU/uGfkt0axZJga0UJgMWm3xnNMK2sTMvVJJr5v3/rWiKfSVAH2zMq93MOMI2e5Pn3ZZBAxEV033NSFXK4jPJj9YtLRZRORJkpS+HjnowgvrOW7Ya1umazi1Vy/d5s6+N17Unxo/TQ7jbxuja2ShrZpi15q7FF5VUGgfOuyrzSoo0M4I8nic1DLwSFTAfoS3hsYZBLpncToXFrACUfomSI6z63JjRcMs+O7pFSuqv/hIdGHFr8vCVHxxGYf/wVX+QFTs79LLtVzeS6RpfwrByYtEVJyou2wn3uW8h5087zOFtQ45v9MndMQtcZFJ67V3arVI6urT3swCB8F+jyLtn+yYbsU2xC+wpImdQk82el2YWBPwAY2TnO71XUsFyagnH9ZIj9dSpf6y9nQ1jLAlM1wkoqswV6YELF3ekEB0oJIjhEys7bBfG8swpp3XEyaLGLPqtscgHy8fK6BCvisyVsWOi1RB/rNxsm8JgBoo/ye2w9xoqwLT0wYh3RGnG6aNgXUgO2D0lD0ZlZtRFJ+xk3alH9nGTtNo7iPr6Wp+vM1jqOt71I1l8ZbfqoT5V5v9nAXNl71qKyudX8lVk+S++uBW124v8r7qqDDGWCJ88ZcYyM1HZFtQU67xbO822fLMtxjTQjP4v5es9qS8e1dmaU784+dGv7qcr/yrC26k4kcbM7voGmNbQxTE6R4j27Wh1yE9qRNQJ2hG9jqztaGOaLIpKYPI1ez6gfTTGjIsgNtraBnVKY1jrxcvXhVE9MLgsShNqN0YXKtqKFpGXkSbKJq6Gx5QnfJwcz9wNX0ZecyZ6d/9ATYFibQuFbaKmbN2WqRwat5XwkZgG1D2huaM4eCXK/t1/dRi9Nkofv4Yju/a06BFfBvUx42e1pXwbTzd5Zwa+SothELu5vqgAzO1s68p82C0kqG/NNxD7ICvsSH3hLIUwTaDvS5VHQLaHreOAoPRGR1E9hkhUUKc40IzzLsSUo5OHjh2MUUsNsqGPhyyUSzXoorasFmgS+Hl4YKDTBIvOFdzH2dUq7+PbZ4vT/e/24Ykb8FX38moLGs2bzRw1XZAw+Q6StGAfFt+My314qn9qgbvr8FdX454T7HlPeI9j4yHSoizE+htXf4NVXc11auz759L5Okrvaj+IieM2Ooh32S89h8AmF/kRe86FHH/581c88PpPrwwkRmsnTN1+sLW/P8nLjmvcZYuRtXys7PFVdNEYeeUQ9x2rZJyeWNGnfEy8j9PeDizCAq/wyXhyrRyVCEBISqxI0Yt04I3BkyfU/JxTAZIwFA9uJ6AW5rilfiCxuC++x6zp3owhje+ZUp07M3TrYjDzy/R+x2OyInFhX/I5GOz0XdmbbIsY+wZakGFdMABESZaiTRDe/tbpxYiHDzH6rxpP1whftHQbwITNmq08MezuR6sRHDnZhXrKhCtume5R8Ml8YnSBejlSRxgPDZRP/EV3kDMmk1Q6rHvzKW1feG8KzeobyTbZPyzPEx2o882DGjwzRiD+9BI/dxrc9HLcY1vQh/pjzPgHnxlg5vN2Wfq6vlvVZ7HCs0rJq+c4b3GHTxh4OVK2OI9dFazPucLJvETCh0oCxUUDvgg+Nm6Atq1cEcr0w+dwNwzUtm1E/CF4lERIU1hP000FLKX04LM5n1ti3T6u0tRmj4GFTeAQIRBqrTid4QupBAC5HqqqW93I3MvNp3m+OYtVUge5J7vvCnw9b3Ocd3T0UCxBnOl8kvAZ4Q1maAcZIBp4v1pdmQnh14E5rZ59vsKPuPDCYYsMWCyHY9BNIRFXihm+zlk6Pmnmb6eCYZiienGU6OqLf7bUBr4D2ZBptQuNVjKuNmrpw7DwTexIFGqz504xN761XKLxjjnGNXs4jDI1hVkamGvprz6ltRNJYlKawKAN3Ri4j1KYdU0Uaj5wHUdt51AjDMBvaUq4piUzsiSAFrBZSaQB28r+mkkSQaId7zBUj7U3I+CvX+qGpaHjuwIH1n1/kqvKDkpKnNsm73yHk+hGqHX3G6c2NfJKEPdCs0xlzhwue1b2MVhkytT7AWTN468+lHB2dG6qzr8LJ2dH78xcY/ZOAkePyEIeZqGk8VVr2clPnw3dReevGHr9KRWIuIVSfjzcHPoLZG7be2c4loJO8S+djxWWmnYeoqJ6FJz35K4aI/CKJvzvhdtftt/SgiQiK1SAtwrTG8m6iKggBjWNsrd3ilULuNLlhZe0NpdlyRlo414xOVMUliXCz9KpkdAQWiq9xeOUfrNJVZiiVEnitMKIh2i+RhGNwPlkuz5PhXKoOS9klyXlhv2gGverL0dsleV7FH59m+teK+AJ7gF9jGsMN3Koa1b1I3PpDydLYsKs9cCjx9tay9LsiXPSSVJGHwFtSuh0Z7g5QtfcVyryPSw8oXSWHOLe+rhyAuItsFj73kFy7PHuKOASUuoAIKc0BYzSq4HVypZLDVo6Moe+HwkzKBhwZ06CUgdB12+rLD/UePNS6TyZ8wO4sK9D9Ub5s0Znare+xdhAO7jH9+0fmDz+7Fh0y7rQ607FGx4FfSVWQLycgQxj9vuZ36xINsoZau37Iko2nfE2Askc7PdT9jK59Yx1dREwwKHcEpbmCDtyRAtIhQ1GpOMZDevogRvv4V0rop303YH/FfIkTyRZSBddjMgrb5N5gRFivwka+dkDjbpv4HQ7GQYftuC494NKHsdsFz8PM+nlm5o+o+kq5e5XUG30ps7HjGim/hFZneYm+jkJ61a5ZimJmhQ5jU4SMFJUks0XeIRwDSynoQovWTq+sLgy/wZvhb5PprrufSgRztqj+nuzDuECblgCEZl6gWJTkfyfFdevHUzL6bXiZIL/cncZcTAiNv4ugjQ6duDuQTLSMp4KhATeAoaIoxTM7SNNF7Q8tZRiJVmfrNYlTUvelcFrcdRyShYdC70vre6h5aryTWPYnwt1Z6wj4sHHEo/PaST0J/BwC2jydoeLtXTKqBkuV3g8sI+4ipNLjtnGiDt+zxpPCLYzSEFIFpXlcdBPoLmMdfrQ2jh215PdrC0RsOHszq8rMj9vqMIu4pGSYUP9Xf8WYi/WDt1cFZQe/sn29lqk1s6YnGSR1MybOgBSF3I4lC/LAeM5F+j0ZYuBiZikRozfE74/gqlkGOAqqKu1F1EAXe3V6z4vwEW8dVadwNr29D13fbKTsgYem9aGoncPekHCau6d2XycfYxhBcaxgtZPL/I8Mf9bU7vjt8UiwzmrCwNFQ++dIch28wgeL1wUt9CdjnRbR+MZ9ZyyLfuSR5ldZDbKMtDtkbW0IwgyncsM+m3jE9Iddt7DWANRtMciUjPb9AGbxV68jvh3QQTsIat4y5evJStzRgJPXMQMX1uNThOsufAKLuR3EmxOBhzmrJNnB4SzsG1aX2qxST91k/tJX71i/7eqR7n/f9wjRwNfRg/kk6X4cjIZTook3vOPG+vXpWtPC0b46SUoHsv8MAfX7RxiiA2n1e92tE6xy4BkXmoV47n0dPYxgZZpGkbtDUl9jIdYZVodjkLQOaP6I7R7laGtjXGZ6yF6vpWvBG7Vz2DiZk473Tn7FTDA9XRJ9jxyz7ztUBqeNmGA5rkNcP2JDVM3qbKtGZ9OpF526oe+GpO2LRUz+KB00msA0GHeY8Fctam/Gpd8187Ygsx/10uOaBYa1n+v7+ISYKh42qiw66vWY3IfckzGn8/Pth3O4y+Ll4VOMU1wNNIWZwyCJYlqLu4qVORchPv8Ar8ets9zBxMLCAjoTGsN2LpmcGY6My9gNiUqiaifBfkEJ4LVqW7+fPH5nnfYoehidksQOLEXnIgmPoCGEH5/oyL5l5HbMJTxUrsdIdJQW+gGoBT1/XeMrGxN2EHrV/xyE/JUYt47ZjrxPhDjKaoztT1VsHN48KZeMJ1TI6FDyxvpYSSxgDjtXiWUq1ZH2BpqXyK+KmYGJ1Km0UgbTItWuiANRzkPx5AwTbrkdmgA9De3RjJDXUoK1x3Sp8TtnyU0CnpKPGE+mEIq6HGdpVXTvzzM4XQoljce302VLhm7+zpDMSfmCZEWmQxE02Nmv5OGnPe4aY1/mupEL/kUHC/MfdplsieE+VX0wTnfsNRhBbJKDLeyEi54ewQ8qXmyFMtGT4ETp4QhrCQZ7L2bi8oQ7IlOV0lg6PDX2NlZImIKkKy+GPpptnU/flhYQsdFnaCUv5hlHtTSDzs86evbhaqf4rABG5HjRDpFTzp+QkqrXzUNPZkOyYSewyZdx18wg2OuuHemE5pd8z81sbJWmrRPbyCM98gaCorxcJQbXbQy7iRZEpASOqmXLc5GUjX5vkMu+nBc/6Bisk9lZ4S9BnI710JKaGdRU8iqaSPsf6Gd4R0+cw916e24/ZK+hT+KPHnP4X4/0DbNeg3iF6vnMdGq8dc87hsLmMz9/opas0x1sWQkZExzH6GNpgJ9SPR6PmAXTsEZ65lYtTvng1NgwFd6LcbdBMbIEcRffeHA3gLI+vscgRx3sfqn4AubqQ3r/7Hvx/ajeBXtdnz7zhjOGfXcL4XbCL9sZSyzUN2ohHS06lzGwWfzYFxPbJHHZO3kvB7CZmDGP6FQR19dMbUxRQzVDzvHYezOPyxPZXML/+4dtdF8f8ROifzHvo70YWDUbF8RFKE9A+rr5OcCfa/ijvJZmZgvbE5onScAnJbinJShRC8cuEtWK5pULBAgsc4Ks2yklWbwIYP00GQ4w4+tqQE6aF9EfTumo7FeneB2+N5hsrrUnyISLajqa0s9q7j+VspxIL+eqHwo60cluo+4/WhXsM6G8X/ebrMfmMq5CwXnQrnzfzj3UhSqoP5wocuC92qn3dXSETKvMhaqAmUCMXl+ogTa/Q6OZIbxOT2YX+Eab8gMcOGTvVO3FicL+aZu9pcf4jvdWOxo5QajrTvS88PjAd8wp3Fs7uW7K85f7Rpp/P/WMomxX8VI5UfvGlxVh/PnTSK8XgMByS3ErOMw6zfpZW3rPBzPm277xM9L0iL6ODl9/7kMbLI6BPn60+s2xLmaNaBR/bYbnXs5mHO9ti5f2ySbHpdAa9X0bG8Vs0Ys4uD2eumSrLidfIRe7yTaKR6Hy7iWwS3Bhz9Z/f+DbBq9qUn/1p+rQTAD2zuSPwDw/b5DEfh5DHyjz6mluJf8UAlyKzX/krR9IMtpbtqpb2YdtetSbg32mqjFqbdlkGCC9ocOnMj87EuaT20nGevjaORIgkGmY0bkLn31ywUUbN3OWPlfyq45nZmpZTAgeiDM7wlKhYJEwihTcg9JHvb6Z6YjND6ZIskZDVhOsB0Lwy+qJfXiGaK7us8QiI+kP419+S9dw3UIQDOr8XtiY/oBKfP9/hcyxsZmPuwU5kCWkAcZBpeQDTvrSNfS0dVf1Y+GX2sZJcOpAbv48sasZFn465LiShEQ+AWRHZNv5VRT9B1u6Lfgee+x+uQzrPKK+KqKwL31sp7gSB6P0ME7/c1cQ4KrUqttU+Ixh9kUfks/y/ALNPtij6I/PFR9R0s5pke0mc+qEpAnZ2WBe73OxNrKR5FIkhru4fto2vSgzrOS0K1VfKJq0OaP4li+6pi6cdIgmk8hdIPPFlsR5ZzRxfhfEvjIcrfhdbj9e656lUL8x2nNye6YS90kEhzAt6SABFJzQAoJ5isHc3tMalxk6fh7iJf8oa37B7xyjzByzc51mv+KWXspJ6Q4R55sWja/DGyA6dQK6hKv6mIAhlUvdyqd8/6crFQzCAjsXHjR/K/ScgWUosW9ROut612MmZIw7TZ0RxiOuFUePehtMpGKbpWph2J6Z//NkX6/+vzoWFGCk1s5qX26eQmkPKwmVHpsKLWzLp8Qc3AWRnpFpHXK39vS30cB8rMzOgFoMD9RKBhAhdgw4MqtjkoChchMut21PpuqNu9bHIGq287T2RT4TsXDWXbfqCL9I4S2cnTPFPPQwjoKidXi0Tqeu33Iz8XZxNHQDxzz/3tcp3GTRhTFxFka7BzbxR9B/+QnmrWmHYd7jyNuHH5wPEMXR8Xze8pPP/avNNUjpkVVdZOXuy36/pt5YZsz7c9rSrAEJ2svI32iXGpL8scT3hllm8dZJi7SCjaMRVxauJz6EjRqfU0n622HgY3I2Zd0y1T5a2GwxOmg9bosDVonH8ThQdctj1Kccvh9IZwmgWU5APB/UveyB7dweIiid3WOHLz9uBI7M6OFom7luPEzs0WdNkNlVArVL7REJ3yCb9bqlK7miH86HbDSneSW1iza8r40LLPZvSl6gcvo0BdmvtHcbCQ94EmBPm8nbvfWxwk9mN8SuPsS+XeqIpl8qDu7RqQtdUIfA8CTwRs9nrrs9Jx87AfRyxE/bNwiGN8A/cAdxepMfyApPYre5ypsr5sxw1jigHQLgSYCEl30W5NnM1YPgl/YbsqY+xCE8xvG9obhXhNDJi53Mh/CjL+HJBVtPDje6w4o/+sOgNXoUODm44En4VKjUST4I498t+XHwGQHZPOC/dk99v0UiCQZ73rSDrP0kmx3mL5ry2D2/4UVU36zIyFIZmzM78zgtSEMJTVxFkvsymrAw8Fis3KM9RxmzZJ9zCfLczPN3ywjBDf1XVD/ygL5wcBl7Y/V8XzTxfwg0KWGDtk2/+Gxd45VBYhI/aFdW5fOUWGUran9l2Y6Xfiyx5JoNx8kqg2cDOCRmtVf38Biv1+/ML4Eg7vOSPmeLX5Epc4YL3+p0CJMM+8ZnTlzEltjpYU9oQlwRRjsbmVYtU64Zyhakh9AcHrUiAu2Cu9W1uqMYk5yUpG1OvXLKt1WEXdD4K6d0ByjKSApzkLNUYxh0hGPhh6XCmKyFfI8eV+EN2XpdSn9OYc3Dl0MRYY68TbOyjI89sAmNIAvb+sZbeIaZEUNLVa9C/ZIO/WxCXFI5ihd/hkYG564p2KFz1r8yjX/2zHyrANq8Kwq1KikhkzTWV2xoWZDyVKpt2qZtsE1b+KgRd/KcGo8AU81j2/ZvH+rfyXg7T8JoOINvzMraz+gXnAcbZFrVVd9EMpe/szpybrAkYqdO4ldOCQfLmxfmMZ06qFE+TnKNAtJYW33f2vUoj5R+74orZ03eGGftV096XjlrEE00iHiU+mxuEbipq4CsDoRuLpweoTDhZTnENgnbgtoH3vUNxBPc4B5UrMdDywPGoyXoHUujuZ09SJdH8eX9XxaG8EH6nyuw8TNZpuL2EWceEAwx/DB2L0eRNWphy+wyjJd75/xeOp2MB1WcRl/B8gZF3edc/6AGPpnkZzr1K6j5/XumIt+aQ5Icw+qKcKPvdgySIkLsuZjNEavpw7Mb0dV8owT7UodFxs+JlB0QWXhLgxEaiUTVVE04wrXMvg9RnUZbE2H1w5u4s7AEb4LEIYRQidYcyPkcqht3IQtHaXxq0Il/j02CZGvPH6CCxbzsJTxjHlhsVvyA9ks/9LkUfiyriDrBu58QkHpDYiGFyeY4hSCxhJeKMq0zLFs8uWlaDqOaHCs/JPvdYxQ9gAVqQekfB3m/Lv0DikXTrY3QpQWVh6s2l9sVC7eHEqHtMhLY7f8Xke3+0Lk57ca/AGCAoSMQLBd8hmSblf72pk0Bi6kaLVZZ5+gFkKFAbZ3fAKDtVR18h2Wcqo8HbvT3CmjfFlkzjh64S/DM6sHukhWodXcWhgiktOx8V8k+N019GdJ7a6idvbFN0eMikT9k8CEmk9fVZb2/h/I1gUhoSIpz7i+QrPfbNK5oCcxyD2CuSiC0Prw01GHDm3L76bvhFq1gc0TGQcguiKfmSiCYVTv/fOGFsHFDspDxtVa0K5u2QUq9pqoFNYwvSL1Zbw6mjAAubgf/Je1gd23YIWahHbTT7eiBv1RjqLHyOvJ3a8Yl1kIFoiww63us3gBsfTQZXy9gJSrUhm4kMlRCQnjPkHIakaKji1TCUy/861O/4Liyg4GPUPubHPu/pQb7dDoEPhXonTPvpg3vDGN45dEH9BkVL8uj90raJkLSOnttNI8Ozmv4XN226CQxGNvIVfah+fcrmcUJQUvGEljOYwqYKraArBVjxK4o8ufn4N+m2646HHWdW20DkdYJXCTQEQghV6hQ0CfUblVW1wtvXik2740+1/e/6WWejw0gf9nETxU0lr/VPxcnnAnPVXV6AFZvkYvzrwTvpSEn+M+FZio3bHNM/FrNFN4yBMRYsKEClQd/SFl80Kj0w1T1s9tF2Ncc5cUwlk0XCX8T6nOZEjQ2h9fjgOnDtah81cQu0Ahd6s2vhlmwQGW5oE3jS5wrihe3eE0c7umuCaqRAEEpiEEaZCrCZqkgan0gmTwhlXG6XK/bRpWH8QWKuFlxw20Lu0wLSath+XZcJr0b4X6BLGD0qYSlfu8GKXOR3im0qXEoYCiXzXZ5xl8gK8WFNjdIEk0Qv+206/W1YmzURXJf8fDeeLmRQ+zYZHIWAFDzg+keG6/0GpHeOyEuEvWbMCfoIhQU4oMdgAjITDZ4j8gHnn2xCmiCPl2bW0Pmy8lFn63zHRjC/Hs6jMoAn8VyPD5j/cI1wFrAcrLm509k5tw7k9+TZ5+LHRXuBjrtZO4r+pFnG4dpTl11Pti7zg9usoF/MwA34izz+TlPH8Z94HBnXFBYE4vzm8RbSx8p61hGz35qzmVjsnl6YYnN6L7b0jlXcX7MpGZgFXEgMlN/nN6TTR78BK4Awlk16EkPGLeClRVhskIiY4OSGj//pHdATlyyiUJgVOHkvXjtORGkaC6L+gEikGhpUH+mgg7LiCRcriukHh+4sP5gDQSgDIDsskBzn3r1n2MBUhVASyRo0KCGWVFhB7i5Aye0HGBQAMe/F6H3ZsLwpzTn0lxGZyPE95xEyc0zfvYBsWKvApad5KPMHXJnDUgADwAFigYiaI5jLeyK9+xnB7w7d+Oi53tUCAj9znh/dC1M+1b9r+OM2bNufU8M56uL0FUJunyE4v1itQXEOiCDnu67Guek1ir7rLJAoqFcoJncr5Q5qkBV9ydloUxjKnh0upxhdQ7JfT0hAUDcWd+3U4s2ZUhKgIcSkXs21va7ZOUAcp31/SwZEeQ69gc29dU0mX64C2FcCVCKO4s66OkybUkUgFyqnUil23XfLs0ZXkOVH7PHABwClPW7YoHMRLgmTGXfqFzBKnTVXUeYNYjju/JuzwBwaJDfrYMBiOMB+VkaMpwCVHZWYL7ONAGywVIJmSBJCdDIdOZ3HMClNX9QWuY5W3jY4+mwfBgP6SboqaTgzeRiYaB0nBINcc+2dRN898oqRJe3DPTdoBm3g1OsJyznNxjE++DR+BA4gge/ToJjckTVRzKKKBMdJQ413qHQTdeJiNPOmq4m2xij/zS5U7PwG+yX9pL+8BftiLR92e7eEWce9uKBH3WCxDZh78cgRhfUV8OHe54BFuqB7VW8vosDE9vyuPEsmRi/bGe72jg5ZFtxsIK5seFmyLVg2bnlRqMJ+D3dWc8jsYeOFiGtMmK+UxA44gj3w6hqTwXNODCf2QCUNMjv+EDCZiSEy0gGOyf4uanAJHZKABsARb2+MwLzBtD86zshAABIZN75gFPw/KQS+u/ZXy0zkeNcyhccLMvwXNSrYCwdCN+Ce1O1Bc+W7i34Jto0HobrNpHgwsOt4yvtgp9UlaGQbbzf6mYMRMOKlbGD99rMYbIb3stIkb3ixkKV7Be6XrFB0XBhwxUQ/M0Xe+awONnfc7YZxvszazEwAeve/0/6WuLfirGpvAU1p/jUdrEOmkJc/o3gPQZ83kvRa8q2m2yxftli17HYfUGinLz4Ro8MRi8BO2nk1+LNboh+0Hq8oO+pJLpBZH03gHgyjreBjq3/m7buCAMJ0UdCvK3nS3fSyR6dBT9OEZJ6xyiawni6y0nVFl8GAJPC9MNW7hFhdT8jZ35KbF/gRyYTZW+P85tp585x8UjdufSrQ/XZBEye9PKpoEl2syL9x4LNMvMLn1a5qibQKiGyL+IEpuDbatx3G8QtvBEFjZfFC2rSZrexSZNRy1yiC6BrE+XYZvbH5OU7fvuCiRFG6JeJiGla3aEORuiuW/Zkt/o8oVIdSldHBKRQu4keMi9HA8PbowHvzHPcF/huMccZFz4mq+LwFpFFxl9bKmhRFe78tJ4HmSRxrx7gHSJHcydv9oxiqQsVqQB3FwddjAQ8ihAPT1JeaZqzDk7mSm8ntMqMDzkp3EI2gNf9bYRN1wu1qhLIyWS9F+Y6SUUdas+xHPiRjXOta9hIB15bbI+7HXcMWOEUjFrkp8S12EhwPvZzoEYfapav+MACM9liu5wnVjFvpcUuEFESQBslOTXodnJpYlFPWmsAFZlJQazIHX4PuuF93Pp6tNUn/Q8z2dWNFImwyKDfIBuTtXlefQ16Yi/bfTFp7yTGvJ4iDOyFcfhRNrCzxvzDb6CQC63GgIQKAXLrMPHuYa1fKu7AjBiztaFP+M0E91Gp+5LGi+5/ecaJ0x2cfytUnu2mQwAWJFe9b9dUwqB2HkoSoapZiR/4+BV4Vuf8ESyA1/0YFkbqB5zZfB/d3UaboPU6QGYejl/7dbGVrPUCrAk4778Unv+DPdQifD+Sx/ltPVpd92wsJiZ3mcTtRdqb1/idmMIk9J4CmPr47luI5ZicBMh6L/5F2XPN+uxx3KiEtTa9/dz8SAchd/BUGp4R53d9qRuntvb6f/IkuvXfxWdn1e501W4tzoomQqW3CP4cayxCvCCXjBaB/qeJmwCTZVEDE3cqFsG+RvoWxCYmwHC+iDRZOo6WzJRgT/3iBqT1kJx5OCjrbJg8CCLCrr3VX3S71adbTHAItOnpdSGCfFJo2d6DhRp9pJ2So64lySBySJPdKtEtlEEORnY4/uz3XypLCFUcEfYQv2JcxbhPRKaYF6huQTSf+yLGRRHOr4oslcVJxYabOrXhOfYb7e7RV/MCu+ezYqLrIaOHu5cDP6wGDKDZ9/cmzxNW2uDEfju768MP7BuI7fkpJg0eBU+zPvt8MdXEDD33TzvuusdCs6uQXKsZXmJiad662gx43QBeDuNhZSTMNIzEMol1vqIzWegwj8JTxzyxPffErBHp0gNd4UTK4SCL20yFW0vxdXFzRMxjW6Ei2lTV13c1IiG/aiKDieP98cBaP9w6HtEGTnsSGzLEuxUeJFSaXefEExHcAH964UFIHPJzPuzxRDgAHObzq33ftGuTf+GQ6KCDGHjo1gg/rFp2v2lHmrO+VPDU6SlrXVqjSszi7/PRKewC+7GvraYC/V7OYw/SPdjBYTAVhHTnsNO/7knYCxd8+Pf940cKykoh76AeBqzDzV7zl+PQs9whilRnw5v3on2e3NWd8ZkRDBITPEaLycxZw8yktYuZtQbXnq61jpm4W5Fr/3rtXz+ur7WX939BkkrJAqXCpDkSDnnMag6RaIncHlPlYIFDJo+LgscUzNMiIGJnedEd59DhyxXzpi8yhw5fROZV6xyKd3PG49WhwIIUoSLMWoTU5jNK+prxCgcWDAC4K1gqXXtCrfHPI5+e2SJ5toHgy77qW7IiYBywY0iCKbhueUzCYgFfIpfNmp/kigoHpZQNxPYTGbNngiO6Ha4MfyA18OCDviWTSJ3GNwQDXjZ9p8UQZfRVH32vL92n3Y8uG0arIcs1lGP/GTgDEQdSd/isdvCofp+Uo/JW4h+YAMChAiHPqqTtb/vTZdhqT3VWAFuAPvgUiFjwEyknPg4q4kifemZriSrS5AvzgjhAN/6emOn1mwdT/zFstlp3mJY2rDn1Jup0MqpyvTKJ3h+mdfghISBS6ligFcpXOdalL+v7kn5zf7IePB2daH3c6anrj7uONbYCs6bJdEXfadbaI2U0XR5q2VcLk9dn5Ejb32y9eQWVzPRMuUiCGH1kWPnGmm3u8oxamNmxscu+XIt2/FosKXPCo2zq8vST22ABXeAnd3ACukBWYwSJFKuLXFWJJEliDiTLmiXpBTd9pFBeJANs7Sf+aREZoBOwBkiEKJ1ILBOSVMTro4eaImjIlj6iqF/XnlDPAIJtXciCmuFxFfLZpfvb+t5cr77nTvI96OsA7PYn9fqa7OxrIQnK3JrSJ/FV9h/P/ir1x1GzOCEN4hR0DntC1/EkIHuJTo7atSXfxOJcgBOD+Bs6JE3OyUM7KY4WqcDeKmCh3cAjOE2mbQsry83L3oltVDfJozmBoZzCsDV7FicogKdKSGC4AYxtePIn/02+Eb09l7Eh2BgRWxiBTFJY4IIXhbGFcPp1kCQRBbSTb7R2sqAwzWlaxZHdHJM1XnmPmUBsnxOYXPi6/e71p1vOBxzHkLYhsddd9pT7NFt7Dml0GCuPGj/x+FM0CsdaItVsWXshpHenUAYzI7ctJELd2OsGY0FEBO2w5nrPfSkBO1PhlcjTOTUr6kILt24rq7OmvXDmNd6Istw3nQPMQjs7jM8SCVbON7EQPAiuLDyuggk6BGCgRtIoGnTTtmbK0IrM7N1nWcr73Q9RTBvA93+BxWhZdmrr0B3B/pQ7GT8oYZc++6yZiI09RuxQnPYcKk0TrXLR12IiLPR0x0IzX0j+rx4rQl9RpJ/5lcDlVGis7A1UIuHkt3M4+Y/06Mg6ap/GWZgs9yVvJ2Bo6u8EC3GiVWRGfJbY68wgUBOVJ69jfLgd8yc97X1P27EWtRWb40RYy0ROBAb7gnAqH/1U4tkKjOV+/lEfiqu3VIIVZIaWatSa+CFwSbKbIVlPvCFaPVfl0ST9ff4xuU+hws+bdhI4o//rvrLk3c/BUvhyzzGWYNoLAEA+JOaBHQuyKYZJYkECVMI30Y3ycW2Y5ManxaU0+WqE7+PZiYFGOnn5E6Zdg5maMjHmM9Ei7MxEB65uNQoB2wmPiaAKvz6rcPkyqXCMBf0+BmxH+ckyYt/jyNKMszGlj7CiqmAM1oX2LmH1nCZxZXYJ/I3piUjC98Vt/Dh6yeCip61ZkMYiegrThBP4UXidjE1SuM0QMSl2WsApZracT5UGIZrMuyNOF2KVyJ9ALrQ9T3gcL9WHvmBFx03MbNkO+0OJ8nRWyLMjWoCYknqjyq5AlTorDKZIJ6pC/BC30zl5Qg/IVkiwkcvuOm0OwATuTrx6zeYi2uE9jVwxk809bkGSdb3+ZazcB7QKgbFJl5Y1wyCj/gmdWKQpOwRU77NMT5fHOaSZABuLGyDHjZKNsUgU2uSYlPPSdZ3QPBgpglfh4BtLdEqmanaFqDvzooqudvmbmaGMroZAdgNv6pBQ0+Jj26K5EsGtymSZNGRoprrJjv274M0A+saYhiqoLWTH8IpzRrH57S5erPyI1oqrtAu2MzvlNWugL8brEVT0KvRC9KvRsYP9dRRGt0lDnq8oNKfnklELCtBkn0xHrdcrMrCF+9QOpacOxvR/LjOUAN53dTEqEtCBOL3HOfCP23DO+WqNKCfE+NATutPekP2+DHdbQkwNJIBdMijHpeZZRF6i5eb5NRgWy30DFtVnikV80u2IDvHMSwmQaokhyqnmvfI4vHhZY3olr5RUX1xRPrKUR2foX8uai/lKAsDdAT+h8SvcXBzhPAGXxq818CvdktQTSwoESrFN5HHjfPtw7FkpUmZNUZZWVgbQc5l753mC6octOjc+UhDpkNgXOIRgckoWMLJlogSrYm3KPa0IudP6nPHBRWQM5gmJeLhHD5OXyGJn8H5/ehsqlcWaWwvTlQeeqE/BcukMRJldmiJahAfrPHCxuOF6U1VufX0Um9+mpnhfeXF8Xo3uyAFWkfuomZN2nn82d/CXkzEF+Edp62gvjv7GkKiue4ClycnpKlssrrS/UBQPc7y5QChBS+ZB2nk8f8l3IV7rIO5YeFVdDDR4OVUbnm7COlsLBZSCEvbvsuSidTzlE7R7CAfgwAKctAGYVGJ7/Ql11h4rpDMlD1XD+a0LnGrXrVF9ltmHOIT1GRLtzqpzVYEftapVkp2SS1EZt9PH7+9a4l+3mNp+5ObV0Qs3AyTF3UWXyeDiVnovhjk/gciKxYaW1e578ZqbKsrLTSqhdFW0o+9Grpm5XVnffE5SEqedFlfbbCNe7SPCIp6FvJkCwdMv5lW9Qa0OJR8wHm/LZmg0nHZlTsyyyOkflB5j4M0G4CT7NQG0pMu5ZzVJY+y6tnLa4l2fOzGfGHRhAW/VzSQK1YYubnYX2l0ciNOkqeoFpwMhcPq0YBJaC9awKhPHrGM1WA3PCgvOopbQvchUs/rWUQh3K81GG/XnExGQIrzbNboI867BvnBK59Ai6XMf4FXEf9EYCFJaVZT+xmUUZjN9Q4dQcXoKm8yJcLH6uLK0HhIdZhzWcjBQwSu7q+AWVtwltAq/qj3poa8cowY3HBNeRU7BhTu2JM2H3ak6YIvydp7qrp8cy/m2Fx/tIyf3hzTgcvP3fIP/znWs3NTigGetzflE/kyMgg/1IcPh04J9ihgtXRLj/JiW0BEHBky6hbaDBZw+CN7UNUsV3ZMZnF1xW9lWQZwOQbeLFkXUGugCOXpicBsKXXhXqS+vh4fKiA4c8baiKXxNq4dxPhzdks7N14zESLHSyVHcGCutS3lkDvoEG1uUL09kr5sxhWed0RBPBBPQT0ZgKQ9I3hDQaSx19rwuGtmG9HcO1oOE9CqAyQs/uPfOOSCcyNqnNS9sG9f/pcMUnQm49GDW0/EfRcKfL+Eyf56Il/BS78GL86rrhy0aLb1fiZFN+t+cj+dbF/COg0Z6zUPpcseiIIclaYRkSBtZ/YBncyIWhm+azAdekmDI2iUk7HQ2OPeBvSExkfZX4C3Txt5SqRnz3uHWSsvsryV03D0AHTqKVEzxtf9oyxwdMoK4mozSi18OU1C1u0lugt6cDqcbgfILWe1l7MyLqQ7mHaViZ1zvaQqdMUoWtiVbdoRvaj/4HQItBHq3w0VVuG+XFZyFGU0ryAVbN0BHSHN2fYHhjY081qqqs0ZPlbY64Iz6rFXEW4y/37DNNKGH0SL1qMImmjUeSBci2XvwyGxOEjYB9ocgI5f1NFlQbMzGhkRvZOigTaGSRF0tC+RPeEzLG2X4MvlqrFtqTVJZgx1XBQVMmjh7c8du87f/LRNN1Sd7Ua+dtZ8TTVY8JTJsChoezyvH9g9LhVI0Or3yVjxgv9qBoW85xfbiYe+MqwBICOIpTVuWeSWRhUvuJacOzBBf3jTxCAuNYdClmGPowt7EPA5yj8QVGJQ8XGunJUteVcrnqQiGEWhrFWlAfaxZ/kNWMNtoY0RSdZWCXIvb0YMUglOArfi4ZO6w40oMbXi/MOylkcVOQcQaMzry19ILY55oEjTixKgCtnbcr9oRag0YQy5/Leawa3vPF/TL7Mr1/y1IM3OFHSlu2sCaXDNxsb7DFRI5pyW5KL7BvotKerQQvHBXz2w/QFEWCYwkJ7tKpVgIExAYPi6xWW+PQjiK9PBlCzPZSJQsdB5j8mHJYonMzeQY0YXyfz7dRDd99DMkeL0UFSHc0bUj0q+ooFxTo9KwBaYz2oCAGX1sm075ndcZUZpnrijJU5c2AwlNFPcyhRLWzu0RiCRmTBwjZ/ejZmm4u/STLTmS7C5mzIRkKuPVesrpCE7NW/1L85q8YUqcvhb0hgbOduucAIYj9ZViXRktJfWNnoBIbXxd29+uN8mcU6jTfSpiFQt+UGnm0nVZC8diiUgSosnrDe3c1YZXIoXVY23IgBV99JGTTL4HqJW1cU1yuSFh5P7OapXt/s18doWRgMU4ZgN3AmnRPRsWO8NWlc9sZOeyvUG7TvYL6hixzskAEuO9Qy/UVOVrhv8QDn3r6Q1JJ4NZP/7WEdvUB88ZnqcNrjVgkXq19cO5Su4vm/gihsnRwxTnc58B3R7JHkhATdEZ5+f1SmircirJFe8s+ffdFuYAzz5NEbaOa68tGO9rIz/bzmaWI8LNfYJ1BVhNf94/Mzq79dRDl8b1M3JXLKYMt/Hp07yVMTmTDzxx0gxso04ovUv1WJS0Nui5xfjZuaq1xKpfrLUHjFNQxAJN3vtV4VNcPFcRQT57Zb8W/S7xOxgbP/7RuI0DGEfcS0c3jKwzJi0CzR621DpvtjmAzNzOLt7E9XF8ycOeqL4WALnYIN5KIORijbeMcNhc2qJJsOmtWVgyFu2XuNC5LQs6a7g4M4gdspr43nS5pgHAojbYZqLiGxSDMz1LAWncI4h6aRiA30IrfsiXzzfzoYiUd4tPHpBokCvlsHWj4Wu/NPO5eIJoZrPgbXSVoh8TLPohfA+QBwFzGz1hPizi3EwA3upsBqwffvRq7PbHbo4ZSuMXwDXbP2ta36kwY7TTC3EfYGhiDi3uXYswsosGUVL6U6HjkPpAjj2GFSt3CA3r/bxaF8f/LiG2gPybSbKexZDg37bisCGBvyZqj2N1o5YRL2xxSjh69OG0uT52d8xlnvQSOmGJo+Fx/8RhTwvqNbkN1PcdD46z4I9ER3yBUIaM3QBOGS9obb+GdjsBAD+zTq4XNcPTsrHdgP3kzdXNTf1GgBHu/UtB0hTTNJd7X605ZIhHFP1Ebje2yAYryNHPyvBFr0osGOpu7/0f9BmHx4IzDnxacHUduaJNgfQ6a0a52jigvkZwMaHgHIfuk3whm2LgXDgA56IKLhi3XMgJCb+WYhE3vJfH4pzTEZGGsb+sh+BarrcSCsJLJ0HXiD3bVcqucUCHklzxASgVtFlS0WXjMIvsDQ0zdIRPZkdDzf2i55xJfXLt/C6sfslIJxQCkGReNszIlESkKb/Mdg9y7wR/mwiUAWr3SCn7mbpWn6Hi03XBJauPypiJ+tRokNFynQ3KGnFTlruyRtAPIXCIWxiRxwn7c7XfdYHP6tvKa9HNkK2tmprtq6BvQrqjf1jFW/84RW5CIDTvzmePhDny8PNAkuoBhxDDQT7LWT35z/DxJj5SZmsdV7kJlaJn53By5npYUMgGip9jE6Fz1cdKmM9FyXGDiuatvOifrlnQuWCrqOLJ5YIxagutlYUVbLbFgh53q68VV3OtcL5PxzVBQETrFTUZRTQlCa0XKTqb4O0J3ucV0hnONygcPYjIXQ15oVdlR+dMwWRz685OGltNv0kl1xkYqLTWLOLhotVeRiwxIYFvOF4TEgNXHS+3ZaeimjBr+njuNNvw9AiLUxjwO0ihVg5dnx/nPQYkc5qb0OA4wmajVy9BNe1rKkwAXyGzItHOUR07jdxGe5ZPUGAYHIPMjkapLje+sj07ujZ2VfPUe9sz8yI5+DJhTzEdiDVBSAczVeaOALiFaUfVc3tEjGwcBbSZ4EmiU9nk+0rAH5+6t3pCo+h8D81y5HgvWqOJFVBekohXZAt1JrnvsdQMvz8utfx4HiirLhnieFhJG4jkaykMt9PvkbD+RAmTT6TQaycjuZurRCvqX41JC5BUx6ug5ur1KRiHs0rdqSOOy8SBGye96fy9kRxGneR+MMOQ33Lz2q/hiJT4U1EGdyb7FyvBnHts2JNUResHJFrDDd+Z1uBTmsdvosfEooxlLm9lrPDfJ2G4P1Y8c1QRgSQtU/4ypAa6dZ1RxgJmXYDTruhaxLLSBnckkbsiHSypWiT//uw7hIv6TN3eNT9D+QLl+3j+qhPfe1nRna9G+UW+eHZfeCOegHqXTPVFfZ236Ui4fgRHf/A0Dk8Fg3Aifax3Ydvxf3pn3j0sLFb6uHPHoPA0bGqJvv0eesLGEGTNjXJ04oz39ATair0QTR7NkQv7RXYXCLF+wXEnjEhgpHJJJBgKGS14gmyHZ9/5u4j3ZrgAeoH7jdJ3C5JwAJzb2vtY9AfDXRQmXi00VnOwRhPEtCZKtDd9KF6WFLl9P+ZWVCd2cymfYnPlaqwNgldIeRVsnfeHU+v+mWfFcRkrLCuYluAKQh7bsTXgpzEzXRHiWtr6cONcOi4r7QklGAuHt/BLETWFou78n+nEZRQyNpzrMxriQUCtJOjYuJS8OA+wVmaU/pUIgnfUdDlRzEGXbxmyr56Kr2O/vhclAgbRimcJPByGYWs8nPzbu0/Ttb4AEN0jJkieTm5HC+A3Bi0njKDK1uH1IQiL8aboyUBH1HjTtkSA+f3q8gKzPDP9Qkew12ecME4BgVEDFkqTJGFllZuwSwUmq6RM9XZGG0Pt1Nhi90icxPKSuVnrV9WocuDFQFqEqRiziRh4/XEhfiNWPADvETsAtsQujEfZm4TfaRdiju1CC0k9z1BRhIf+by+8v7GdveiSPQ+IcW/nvgjYnaRDBXXjamD3PzPt2ywD0iF2BSRXLSek7zXPHRn1x2bSOyaX0tFcthe7cF29IMe+cXbR5Sq1IHy5q9nBdatf9aEDelRqFrw6uGs9DEzw3rkOfULj/fgStwa/h7nqdtl1/7wTLjnKgJLwxAEPj9KhC44LKSlAW7zSPVgK4MxlMJYqfMHi/LrwifcrcQHJx5W9Z3MmK1/aPNQc42B6L48J7cPD6IpxT1citkuh+PjqmuOfznxj90BNtX+pWuWw/yOLj2kVy/0lGzc2vmiIweq8DOK6+gl/OU71gFrETJHmXqB+ftDGsfpsxNB0vssXlsYkAQZheHK8Q5rXOzcL0eCtk3lyDAUFeewsNZxVoWABGIaOwlBjk5/fjxx6kXQbu569VqthKi3ur/a6ZP6kbqd30W013MH6ExL+JCTA+x7CakOaHiVLPtL2LGuHP0d1hNJNt7MtWHxQr+DCyHVhzOT+tniiHRrK3P/bhc5XWRoq1/yNJDF2ubqm9JLn9d5ZkCtgwNOAoviuSURzWuuWBxPXYXf3CXnM2kvYXuDugD+ZEHpaiA2hqEyaQnPxVDLXa6BzWlBkng8SsWyt83inh550ouMDw9nvRbUd+2N+oGaCr+LDjTjT4qbxGZy+ydku8srsF4POPi4zlSGyRKuG6plDnBw3UjZqNqLJxzaHvyEx7aq2+RofzoRfJtJjmjABBeNy8dmb7g7/RP2JKNVt7iCfH+aFWbzme8W48ZUX2I0W0Kh/7+c9b/bgQuMK/y3lV8L2+7vJxFZ1q0s4wjQFZnTlZ+V/UjjCXdINmUYTwQYe8ibzJAhFqdpbRCIYRF07t1YzD5tgRkoZhsd64TSFomf6obBkbYDT3X25dOB8Ot7jrQPaqcaGwr3SUY50cjzGuMZ/MCxGCWw/OcaO41UZW1LQlHmAQjWByGrRCtsJWbhGC9ZldqT2j+34YDEzuOlbtqapS39V/N1h84EPmvj/tovmNcvWzcc8vPTYtmjy469BHfDfLODazuzFtrnB5bJOBz8M0x1HvUXfbVyZfpog3f6oH8sXwFvw0h3ntDvc3byMpW4tBHeMT+64LfO539alcZaXG6UnpKWdQTr9cvybm9PzcjoMEmQoeTDRpXbooyyfHcCGwHuW7c9Whe2sOjptVrHD7o+4UUAHtLbfAsIMSupxkKcINpBg8jx+wK8Td4t41zXoEVFq4CaesbaE/c51c42L33hg/HRrt2LSbeKeQKa6mvm3/s5qrcUqyHY7EfTx7eIwz/SHriSYHt0gkqls29zNl35rJBM5dl6VkJFfdmfrZkCl7wxPZ/Hb1io4KXHRoQKByXUZJvHwW2we/LSkAmMiA85lhKJ/abzvTbYFsKHYS+StHdbnZ8Qeu5uQJEOG6E7ImBrz5M3OclmXLxz4gdfGf0eYJv5aZ/4oxcXW5rh/F0Ax8o/reiPHdtQOd4NeJEeKVhxjRvb+ryKznJvaAXKnC3GP/lZ/A+AzRG91/ZtpWjIO+hOatFMVtGeCPMkU2MibdklN2gLQ8+Wg4wT6rg5cyeEdTAmX/igocVga1+hCgiRmGg85ikrHP7Ch7pvUZEacYlbz8G+sKR1VbhFx+fbu2x77EFxs25BgsJNLlAXlhFzy+dm4S0KvbpTEvF+E4biD9jswnF0EPDVfeaaz+HdhKvJNinsA2xJf8HTg2sYzAk/bF6kXbHBj85OuoHhzC2SzqrqQ/3K5dZStasxDtcX6jRGGkksu9OSO2ur4Ge/jbVvvQWCp4zECi51Puv4NdXAbbx5rHhkxc+LsuYEn1AAkTa4dxxZVyoaC3MCty3FzZ04f4wkLIHFSY2fJy7+g5Vz41ngR93sGI/8KwCqv3GjFfUY/hEaePjUOZin1V4BsNJjWroGDlrGRv9SNuCcbyBIZgLGMXDOGahigw4uJjRPr0lHxkKW4NdcKNITkUk3qI4eFw1Zs8JCRnf7A35vp9OCeim6K6nCGfu7LEemdGX4eYsM3yMaP+fTcRrtnvGvXduSvDUWs8kQvAYW/JDZ7PnfWtHOFmiUjvR+MepvggBB7KHg3td7TO38jQjx0dWvzLwFLZidVA6xNysM0xtFQEs9D5i+8pZvSwcQgQhb0F3EP+0mWORaQaBcVPUElz9t/smVef4D/OSEgnwICSyIAif2VwdWBFFRgA/eFesHWGbjNu909kT4Ih7bNjjYb31k3ffJdoz2eflkZeEh9zkIcgrRpKVx5jmu1OEkLyvm4N8N/M/Hdt5Ydo7aoLTdsXVw4b4bpmOXt+7y5iWE0nP73f3HyUD5C4vquvKD53fFxLEHQ7i2kUdq7xnrxLSS2ye4ZNm36zTHnl+EcPENogbKL+Cp2JDX1UmgiC6VJif8GsIbYBeySm2K5gJc+AIWQhDJFmenlEeLyXFljYLPCXW1bF4Mblgk2SF9m214mo/PLap2DRdN9Wz1CyRJwfpMNpuXbB2IVyc326IfjWmNm2QrgT6pIJP+SotoFv3y/PFbnk6PnKzwq/eihdPlQzs3JMqHWhKlyxhcxGv1LFb7uqawJXE07hp/Tn6C0xDO//HL1Kaa4OaUddeS2SB9IgDys02I+CfoLrlmue9vSAvfbARInOdxdNv1Hyf+NCypdPL/1Ez7W0oL/yRih/6IPFGNyspPz0ym46eFUD4Dh1TM0s8K5Up+Mp68P0yUrob5opOZ//5OeKA0WH5IMtsiXwdrS9T2fr0OFP3TQvrW2eKILzWO8HKf2fvUYhC2TJaHioZzPTRlfRJKOYqhPvH8BYZoJ0PqSZFiJp8I0iINeeVIVxj6bajQE7MyItzniMMZSBgYyPcmQ/2cOkWGgqkJQ59DSD3i5Hpoq7gAEZ1PFF0uFFqdV+Z31K5MIjfS23LnNuEHAM3kfFt+xMzgkUpMTAojpzNgVNgKjVp51s/A5n6ct5ib+Vm3Q71+XlxDwraG5uHjTSmhD84HJJWiLmw8bfmy0iZfJiGs3oYRSKKV1kIMXNydyU+1itR3wM6ljwTtbpNPFzb7MEmhDc4IQS5CA+4FI+5iBz1JfpmTbwKV+tgnRFS+wyrK66YZwDqvE5LjRtZfV44Qf+uq4Pithc8xCnV06sDoGO2jX7S94xQD+9YA/4ushMe5Epv6/lwv4nlwmQjTNhSP/ronmwXV1cs/tVDSJvlIHH5BEe+DZm5OD2L1LTiXR9/y3O2d/QRyyQiJi1hDCBxpRlkNgh9Haug1Yq6MtGTAPZP/OGcUL3+cc9ZKzNfEUX203mjAB5LO2LOOTprREkzwjnB5oC00mU+g/gRJVK7xlb0HcQ0CuDv7twCzjuGlBc+9V2Mud2Ai0tmIxaZQ8I5rBFzGYQyTs3KnHh1JL0mEIrqhUGzOAF9F3LsDt945QDwOG7Q7IqzTx2yH4Ny6TaiwMjZP3aPSQCP+11i81NpHKbUG24w4cGlsnc998M+fN1jJHGJ7mJpgZvB6lxMeU62WDVuw1XeyI9lytaUp4YfDaHGuLv9oTrTEDDJ9uzOZzs/HuqMftb94ftcwD4jqwWGBuX1yzt16BjWt8U016lXBNVqs2OvsrAPwK3tsPiavnoG3Z0zG85SqOa0myPhaQ4SYmEQ7JTRm0nYns/SsgzTLN0/pW96rlAg9RbcRxcU8fWZCOORODLZkAt7zGLDiEX72hiikSLdEwgwRueY15wIhq0uXZVZwY3LVZq8Mm1yGJoYAhS6t3hu2l4o1hFSD7bmhgheIUo9gnNfPcI0SpNYOOd9eiMF7rqwJdwo1zCeUxsk6zms+Obs48SM48JDRAkYWhld85GJaI42eQvjPwDf+TD07nikiAal8vI2XKA2PMZRZCUDz2KEHsD/mmny+LepVhoURQng9sMwk0z5ImUYf2R7fMU74ptuGcA80yGIwT6uDckEpEyUew96pD3HK4uGsOHk6cbnvQ2v57cbDkiGbAdbyy7R6Gvsp8WJsRHijp7WgTAx5/PMTV7WYcCDWMa/pMSaMR4bqeIF0FxBE6xHnkWJVRNPJaJgFDCCtxw2YD4Fg31L3LIjdqcYOboVDPLAJJFaN004Sgihb1/G2gX/eDhCLBw47NrrJBC7oEHUlqvaAKMHPEybZNfo+l1fyi0n+y4wxGGWcf9V6g96LhwElvqCWTvxvZ2c2MHtLGOkjqZ+6rXPXeO7ByOSXnnhZljI5rxnXR3kY0DjO6mGX+zX1Ihl3Pg8j6/rJs5yNYGVReK0EQqK4aDOFvzOL0wOeHWL+RFPkZ+AzwstkGCchFCMBCSl36DbtB5RGOJT3rBbyVKQaky1CNCLYLiuHNwdCCuegfPogP0Xlvjai+8C2vdRFc72ZGIeEAs14VNq9ehWu/ys8Fx6IPq8LqyL3qqLPp9goRB3wvnRgBeRJQzd/jgr0lkkcyAdTHK5kwGiUD2wagZ3jfwc6UFu9T84knyMXsz2CdJfX5e1EhOVcOg/RXjB59y3/FaWnCA4Z03ScjX7CvU9OB3sBPyqnvN2X13GjGepk2Mghie+CtBtZnEGJRuDdh8iJA4XtAWTMuNf9ltAmODCA09vYO6zUr+FTGMfPQISx5OYb18azYr+JgYaGyUSNcqzEabOqdxEI74/eckn6YpUkvW+fqIpQ0XLL0RuybREtxJIHq+s6yBl2QBKwnnnI4ecKtjtBVRej2CbpdEbq6COlbQiwax5L7MgAsGTBf760s6i2CSykAB58f47cuWDSeXRKsFNdgCyB4R267UB/nmlNtvIOL37/x4SDicQ8GyhVn1DhL4DccVxAMYF3wsNLP+YqO7735JwrS8R7Llvfjz8ut95vifcD+YBXl9EG/zbwE7tz81Qs4/PXZb4rj9Na9N9M15D18SigKfP9MKb97xkqUiBgBeztXA/w9+0Udq5XxCaV0UnTWWzDe3P7ZnBxyas+qbWZEAgWj6kZfNQ4TWXCbc3S4ZJiHHx1rwmKcdAcd8W5goY4jG1LD9Ov8XffBLJP4EpO3OHDy7nAAsaF0yOwh9dOs+H1Lym32FT57D6Ur+Cj5JuTia+WBK8MzgjxWzHv8oxKU3ec93Mv54x8eitqdaK+TLz5UDHOE6lV5Y8pdk3maZscbrFLBL8qGZogg4+9Nith361RyQDkQ6PjIqEBvhcf1loB40PPRNTJc9ASx0m+ATbIqHkO48kA/7MkdJtpmiGmeFThyAjMshRWhfOgPM/+efE0iw2EDNeBxaqT/oPM6BEZ691b590wSMRf0T80Znp0zFxABARjMnY7VTMrGqddNPdOaC6mJ1Opalot0Cq68rq85dYI9w9ec/BFl4k9WsDSuCkZqiiNrU5vqTCYnhammXE1Wsn46slb2YVCZQeoyjfgkdEvXzQRxWaT0V1s/oHnQyJkfrr5EOIKwuJ6ekUUoobtWHCDqZANZFreDe7YdpBa1g+eCdvCL2/3D8yyqHzPWi5gCBMX6VxnRKgAsagHIu0F8mJ5F49QvxzLaBWcGDuHh2wzVa97Jr1gXwCsecv9dWxY1Bsl9FT0Ay3hvjO5zLUBcqgFziIP/MEuOY3BfEvwsae4+1wLMpR78bGiO34ij7PiwX9NeJRZJcKfQwbBoCkv1EbtoEnAJKzUDsPIGuvoVmdZn84AS6xiD5g2Q9/JM67O/V1ihTmhBGuS/htO8pMBv+GtcjvRgnXRN1Glwgdgr/7o3srnNOfRECIBwndNaHtQEU51NlPBBbiZF/DWlRrPJjcRc/FM4FjSSfMrQj8L8g1nGjIFzkIOpEkL4qgjzrL8ojvFYrPJIQuoRCFjugkCLN+QAXhEBtyhiHtdBwKMeAX2NxK/Jv2isOoQvE7fgOQPM2n+Z+3oNKyGlMc0CIsHki8jX+xEcfMN2meA6f0Po8JzC3f962erDA1xSZBRAX0zdpAYVr6Xeb4JLQH74BgIqkvbERSUWorZROSfy3yefdFTIcooPQFbNlbacjaoT4wIz92Ei8sdsKqanyDjf1aFBT6wdB3fvAfNXiIAXZ3Uyw30Y0WDm5J1ibva0COwUDrcbMnXGyUWe+yuE5s2c0Lce3oMwJvEMYPCQFk2bq5yPhsB1wb3y/euOh+99tdsFL5Owra/pUcN8qLkynaeV42NzuiL8Hrt3dlbYD+rORRlvRsTIdphpoKC7r/h2Ll21rg238CKBcICgAJ6q2FmIzj9Dw0fUqwbVdrZYAs5ZwFwFRwn8ruf4yr63U/3j7XILPn3rroGN5q8UTrwfpMs9VCILM5cMWcBzpGKAXfj0EufleBlN+ykJcPQoNya93KyKINC7WJ8IaK/w41zgirig3v6lER3jrBcqAecfko3AvU1+sZLN8f0G7uqVDg3+h0FIBclGPPoHL6kCuj5h0XeKNkWVd1bDmHSGy5kwy0Z7S6YFeFHsNV3Xg3bng08lifYR40er4nQfJoaTXxg5YHCpHGOfKoyk1lYWvCYTg03IyQpzG2JC+VHlE0zWM544zxu5ZwmKTc3e4AaVOzYYbJwpx1LDMvX2NuZly3UJmqJmzHhA6t82oum2vlADuy9B+0k1s/JALIMXSbAdzOwQ1q4mENBhfX/LJ28vHDv8vD6Ps0F1T4nhlvJOx1NNT2CcNEFAvJMXmqioze/fVZPhs3Z0G80Opv6q9J5RlSpntNUR9SCQSQFzFgqAsc236eMi7GNZwEwokLRbaI5vE8/mmDCtuG0yTs1xdDp3B0Hqf94OBg3TMtk7eB4zEuzI7JxO/sqlFQGBwsGHFNrBIPCYXyXdzPaRnDPBayK36m9r8RvQsqU7C1PbhI/oXirRme83OnDKC7YM/T8Y1pW8CGHL943Sishs/5MFIMx5kaRbWUOPGi0BwH6ViIfR0fgc/Wbk81lc7pcDFhN0QQ2pfSnUpH71BZASrbYFTpOF9GvlNrG0TXl5dTVExIIsxXg1ST+2J0/rv40Xv2/ZKH3X7RHZ3ERi9e1FrMafZRgvJrrhJ7pVmMP1AARfoH6vY11RN6bnSYpdwgHxOS9/9yFViU+eAaYyQf8ab2sMnqio6lymqj1gJcEMWYfFq5JrvC7wZ9Z6SpHdfWIGwjz30IpafW2oAy1gde7it83j/z3McLENtht7cYLs5c0bElN3aqauT9HJU29pO2RFwtLGxv+ylGx7hXHPB/hr9dMmf7Aj2SRmI6sTNr7smRj4lL3mIbgBwLZp8adTeGT3EyerX3+VBLyb45mE/jMU2ydJJlck4PbSG8e/+zB1XiHd9Tnxdvlgv6LE67TLA2ir/cNGrH6xN4FsH3Zaeh1yX+QAV4J4vaHcDLRdTqL1OtaOGglQ+EoF3F56enN1pXVlEK+TDv4T7gI9gPFE1E5K+u9QAo4rYni9jvtqzN8uM2J2q2xfpVmYfIjXZ+dKvClMrhhRayQ+9z7gyx4xu+EdH2N/ATMaU4bdrakt799Mr4jVC3QwI6jQoOiu35jWLmBCc6K7XtD+a+ci61cYcPup3US3tF0RovY68J+zwr/4Cgl6Af5/+jIhiEkrYPbG0QOGEc8foRF7EMDLhQC9K07Ufo3Jf5QHpo+gXI6I2w3r/wEIAknqWYbdXwREdVwuuh3m0H9CZ7BT7+iuFzzDE7VdUeL1UfH32Y1//c3qpwAvS60AMxulYCHAb+laSIgR/TZNE+SWereacJ/vbae77qs6In46YQ+ehbkOQm8VbHDaOBCRrVNOOVn5t81K33ft9tpH+IuPvYSLSwg+1cesUVLHbUz3SC7j94/iiivyUTZ6kmKeynsRiKe1NwPNLcqFQoAYedDdvnB+LlTBh8s8QXud19LJCIz/rwM1J9HbYMOD/dg5hSp5/m+Zv4u0ORhygGgSYZFPcB8QQMN4j3i4rEn0nnx247+7ocP+eldVZWfJHORqF3J//zZJ5Acgl07g53k2SQbvzXvC8K+TVIBT2sQhNqFAaNW1POgBubp/nWS77Z486KTH89HDdkiiaNAZSNDB6JPsgnUnEPAnuQSNL9tkVCsw0v/mJJZZ+AlInJz8a4LEpAzgjYIzD7FRHaBbj43gQLhN7Am/898LWe+NZk665C9GYohfjHLIvpgws5Dwc3oi394GV2nhcCy/yvc2dH5KbGLaNhanWBxSqDNeCyj+luNAUpbQB3H8ZbxCNZnZjReKgCO2F8oEJn7zCCw3X6vVxErwADVK4+XZkHpcLS/dDNQ2CCV5ik3N4sZlLDKGC9qbByW9wLKj1sJTpDFVS21BFYGvhGN5B1J1kxgGazlF8nuT5foedGsYf4DWCCvfxKXmOydF19XO8wulnqOLDRlFg9cGgAa5p0D0oQuXbruLTfJmcyQ+D3fZtRBbROhpAaOLFRETMtm+qqbxfuJEELQLcJrv1JxeHsjivv7pMO4LpY5/HcCkO2mtz6sbsbvd/l/Wp0Q/Skd7BRU4QG2eNInSXK9Llxo09h/d7uZ0eZ5DBEpyha3I7wzPXKud0cygqBO98WcmkZ02S0xViBPBUED+TOPfYrjtxB5TRiDgLQ4T9M5C3Z6kwJmc5I9CQ6/8l4rwE9rIgO/SNB4FdNFFA8ImCn8e7yD39lYO0ixOoEtJAFl1ZJJcjdNwbE9jf+/PvZaGL+xRNb+9k2PTLAFRxa6ZQd7eGU6RLRmWO6dwDsxUQ4hOhTYqDwO+qp95UmVAU9SYXCKHLpZDXL7WLncNG6RRu3TD/kom4PGUrZG1hsTsfU8WJN/tYQ78UCth5O7eaxBhU9MsAGIiv0ellvQJpaYbzz5wSDtTukwOeeQ7Tpr6lwhIrK8el7GwlpmySxFbRas+GJ3+OEsX4LNfav0sxHy5YojO+4qcphLnXcoNWfIJoYpaFvcGpZ3giLUAwiQ7NwhzDBs0/yb/GGusZXZm4lxnP7ks+5p+BmDyTGnfQqJ75WooOkfnaZelB+ZrlwHztOeK01SDxvG7Apop3vP06MJ61FSomGbX45d/dc0QjLCXRVufs/kUKPPmPaei+m9qU8TWMFGqCouqXjjrrn2P/2vXBMYXsmX1sYgRwyC51HWtehXG1aE4tmMgI6j4HqvNsYH5Kjv76Mi4IjWwJwC+Gu6nmqkVHg/66LS5WsDlq6GJwjY2kWd9NIJe9TA9z0Vw+MJSwxSSPuncfjt71HHegutnfCFSiqkkrl+/5LAhubrdzVjt89UN2VsXF5NSufRriGEwLhEBcED5kAb9BLuKMzorH4nfCuz56IvUB5/dklsq1MgsyLw+IjDSYaCJ8HbHBvNOStj409x44G277bklgjDZ1+Q22as2+Nu0HMszELsSFNakoh/sHldqucES2PuLCnA7aRXEvLUqgcQ37YuZVvCLHUo3wPNfzXVqA2x/pqLaYxSoo22gj3i9QqLoxvXV38uRO3FXL2yPmLgMjQnO7eYyQBcBXXSZi1st1gN+3E4zIGIursGV2YMHatm7sjsph+QxiMkSh4Z6QdhcHsTQ0TgI6CJDujychgv1IFApXXJdbvwf+aZbHw439qmuXhUzampV9Pu9164u+j0pcWfh4Vj8/ybzcHLc1JahsrpGeBqhTpTMaXVAbI9VjPVHzVkPEZs4e011ceP2ADhmpaqKWwSzhZjr7r+zH2W6AghuyK2wzdfSmRJ+yaltF8Y7vB+eQcIpcoiYqkTb74e/DqHH6jYqMbPzbNMPm2y1H+DDRKAR+lv5y6G2Vam3UUzvGDExljTieBonezDWXOF86cnRC5tWAVN11w5a/tTsbHruDH27usG5TTgB9kolEW2ezpcrdOMXUPDGJEPIIWmJ0lHxn0WfHTlArWxs0YQYYYylylgHOwv0xm7Z20AUvTISVtwlqbsD5121043lmYGkBMA6mJl0S9bU9+HHizn8yro9Kv5/bf4IY+w7si8f71fAB6KlPnFJODMbfefII6WyBjheJmQNhPOsv9Cv68K3x4r3S9m88//7b/HR++Kq5FIl6Tyv+VnRLubfpzWHE/r56qEsnxtg5/ery/WWNFEl66ru6t9eUvcDryj4WAmyysFQOD3o4fEcPw/FN7Wp6Qne5PiWaD3tgeZYFiauP7TSkmzUZjO0nmEOMV94p9l6XKeo7EsMzBXAFKDcEycyW7enTlTNHxjd/awAe8SmZeJ6Tq/UbcnAVDnPmZMCmyM2mlJpN6IgtENr+aFA+L3DFx2qaLhoHavAivPiFNJ5r4cJs4UflaiYeFvp34YviEeHA6WdFGEiXdwst6nksSSokANBAK/HdxRk+ukqHEFSsooPBx9ZRmQpWEX9MAPsoBg4weE82eR+Hzz/o8eXVx3qSqgqNv6IJVMHORq5MpXDibKD47Hgrf98482ZvS0lx59tFZyBiEhB7xA2nXxOmVsh3FrdlWSHUp3tjhewjNcdR9HPYF+3MDtictvZjI1Hd0gcgsxuqe3h1esIUBaCJDi3KJHKfYhEcgA0SbOuI6zPe4WSYAM0Utn/vT7cUt3R9kuHHXGpU+mVbZoPXq/mBEn/CKXzjT8PT9Svw/l52eGiuYs4ZVm2QMAnHOypgTfr+1POY4SXsxwaRtutaLITZoeD6zh7vrdtqoejrqBXMQpyTgpLKkIbmvd8Qh2KtqAg2NGTyBwEF5P1iDR6yPhmBxFO/Kl2iUU2yKG7x4vrjOrLQVOMW02NdsI7Wkyn1R0w8apJqoQpILNuXnt0pEvqo+hAzFmxycM6ydhLbo7my5eNbYJ4FtDOH/eSlmZDP6K+0jCNkRvP2qrjmaiocH27ZoXSxSMtslj6Y8F20A6rj21g7reB97VqwVQzt8+hx3BkBSZ+W3nr4JrtvzVmuh+X68t1nnRzd7ny7WFvODwK6sb1teynpytcbof/66OJj+eSANIfNAuDw78Z73pSVvDt7nSxM/N97I9P5mHs4RjKeqjvH3hLQ9B2yuRxYrGCzSdk8NhXziUmS+40ZxeZGx2efTBe4uU5XKcfbfJIcbF34LYFTvpx4GXNGuVT89iK2DBUjJil2bROk0rX2g4gAOW+vNFwh5zivwjZs3y65c1OxyaElPd1uV/HQvNB0FseOPz5Yw29W0cTw062TL+guzI319PP7GEtjeSU0nDK399wA6wzZXN0EfrDC1ZYmfKJEZtiG8psYTOBEZPNc/cA2AAlKQxjx3s+sVk+js19Nrzvr5LVBeoZPpNDtUp8DfF5XaAHucOMtqFNqcdSUf9ZfNiTv6ZftxvjQH1Wk35qqQU0sgo9BoZiUE+P8nHOX+1cQssXP8OUSLxAs7dImVgwIbjBV+B+jeARJLoIAdr+kr/1xrdiCH3V230h1vTecWw0Qu4i2G4HIcejk7KYOccC7jKWMVFnt1G4vIXKtyOKo0IynU95wSA3EZTWl3P3qt4w49DlFuYJpzFfA+jA9QAEM5Td1L2JMb4hgIxhwIsG5eY0Pqk939q323C4no9Yc2MmAA7UxOyzQzZv3TFMWSifSbJs7aDwnKUxul5SMWUuG1xYj00q6UMD/a4ZBbCyWzkzyJ6tEDD5JOtUnU2a1Mu6y+MoI25gJY4pwsVWnVt8mB3nminEJ0R9fekUcwdsl+UL6FVFYYXSQa8DAUFuPFfzH/ZVFblEZpjt8PEfBocArDoIZ/qWTyHeaMhafok1oYXnWO93vmkMJd/m9ACcRsAWN3MlvDujUpE43/sGHXcW7dQR7o32gwZ8qm8uPxC4xVkds3huA7w4BGpI3Snmv7X392uDNRobqxn6ZRL/RmcHS/PDdCB0M7Tv1Lcv1ALdDwSiGioaLi+RxOgHU/Rz+dzI0cb4n6R3u1+42txSApp89rOsXyd+Ecjq5117y8LiFyxszav6TdQFKwoAYglhcxlbzpGxO2523XPSqu1a9ADbI0SuNkbNEbffwjYbGrHhri8fESfYaJBiIL4k5BuKf3P4meSmn+JyG6ebbW1uzzcPT+pc87PtMlyMKtwTK+4EsJSvY0nXUe7V4ebiPUkORppbNt/z7JeIXkpR6Jzy1Ehbm7ss++XbNmCUmOMwNQDY7kvg4gHgeHamSTJxdLEenPBllLe6OIIvqPOiSSCMH/05TlO52wsvHMWItFBCwCv88mREWqv0G5+OdDJMNOrChcQE+b+3rGW7P0rGz64FweMbfzV+c2mNV6M+cIVp4s+uDAW1JYdPJvQk9rPxh1NtQuLyKS8k7LampyT0l8z+gh622DMAG4LRzJ/sxt2XqL1edRGGytU47lbrPOzIQ5SDz0V827Dd5qDbkYTj7Q9+5h2fp5sb/+9M0+gTJKwoVbpSVfO2feBvNwPZth27Xvff8dKpyoWC7dpxrB5vhgs+M2Hd/vDYuuCd+ibU17PfrMTpPqUQFjpU+pj8at9+6IXec4tW7U4fh5EKOQj39XZo61zg2ghEg6XdmNK7Wg1+4PO1OgsoIojQY/YIJz4CvimNLmA3cPCWTquiqXQVFMkhVx1FDtEDKEH7REeBwIzzQhqm2aBR+mp38LRqbrqlbDKLPaqxQWAXdPm+dJbfKst+PkRbjJ3+EIsyZxAiv6h8ldy8TusUEtRxTij1bZoVFP2L541fA2cbYPGMy5g/z0SaEgPoXmzO8RE483Pi5QbphhbbJRZnddgmM6AMwQHLHQ+MeefxtlVWzUNM3LGDBgdv1vkBvt5mgjib1x7r173VeiA67bNwbk8ZI711/z4T/c5DrDP208QROYQtKhAWMjqoNqoAjCKgm9aBMdi2xJxB6K6y73mICf9pCZ+S0RBoYSdjx3M5HL/H1CZa0ZE2dnc82yej/0VZWxyKx3aFZgU3+fRA10wNTHgT+9zkd9bBgQpR/lil/l5b25HYDfMKmiEpwaZbf6+Z3Lk9QPAlZfL+gQD7gQyDSQxRD0isVsUdG3+oooZds3ZTtCB05YN1qpRRzdefM4Q6qa/0VNqZMKkNeEszL7L2wfh0ZvQMC4wd+phBZDNlxrAvhEaNEw9IDHQXChXY//5WxSZurV9rKeWdTde7TC4jaS8H03uWLeioLTAdb4VNzHom1gRTBS/CwFyJQQ5veSUpZVLO6Hj6liMwjrzB9nzzz7Y4L30e470/lLYRZu1P1i0ZxvJkO7i2rQbISw6cMYAL4aC3FvU0aYmm75G15A+7fpBhaSiPCxSmN78yVnnDm189H8cdD34NVNOWS2m727eFlkBuydXP+yo9oNuYzcK+fsSd4lotQqqUKADZS/G9YS2+tK2sIJ9QfG9twEBZvIg/DrdXuPEgIepncJuvDZdt1gOotJjvYuNiN4u64HYDfbag5RQaCmqVyNkBEPkG7nNiYRbItaXaR8ZAMivdmVhBXR1Tv4K4Iqgs2l+X2UgTd2sZ5sMkD9cZWBT4ovi55/xecpojzLAcCuR8G5OSI5fG9tXtH/UKsyGXLMyyN5g70bXFFXIdFjP+fJF03E3Dty/e7O0rNOBZIF+HzAj9JVdLL+Q6wy+BnkFQIywjXl+gbyBiyJ8HyWh6Wi3IWroVMFtD79aWl1sSSPyTevD2kWCHPHm7cwwUNqEc9RkVmNkIz9YWbH065pmHvRfboJsXbmt3nEjcXh3vDp7+mXarm5GgwDGkAM5dehM2E+31OscWfkOTnZODJND0v58H8nZ46wMJTXOttE6fifzd1UzSrNzWfznxbyghQw3Ern0wGi1c0R2ogCUbGdH32kLYUBBLs4t3K+oi+YzVLsN06MyBW3lqq+STkLjrzLer0Rpgxqv+XpUPIZdkzCE7XWcaCSGCovWG7Hs6v032SGfKy32gEcoSXlzRYrta0hrod3TN6X7vL2ajTu6PFgTz7iZmz4K4oomus73pY/9xW0gO/jr4aYor01bQHwSEcER9uw5lDIEKdIjULjh+nSxdahd8JqBV9+gTsucWWkUQNwgT/rYQC0dLkkr88vJmDMFwmpylG9qe9Gm3v6kdYOMIh5QPtFCH768g1LYkNQxrCSlnIYurLA93cayyiemnt8NdHrvhuHHNDXv3vydcJhaFvp3YeN04wGGFrmndi1Zhytyl1cB9pYPYE5frBST+JHtevh546+K6j2pNcJ2PuP3kdyNAjRDyJrWhxJPm1VYbCgguuUhjQBz2BHXdvbu/j3pequKYjEjyvSpsHRRhNE9qOSxhf0CfqEUAVQJj/MxqY3s2mCi9ZBOlgmtzTvIvvfSDzl5MYppNX1bvXB/XgKpXlizDJ/isYlr7BsOEQTykjo7hwln250ahZ2O4yRGCwPwshHLxryhDV2TgDd1C/zCTzZQSBDgNj9kY/24zSO4DQ7skCMJFPd6X8hGRWz679wa8NsAOjN/2lm7n7y3qyqt/i8owA6cpLvCr322C58lE2zA2PEBch/eQmGkYbl0KTNSJdmIjVLTqH6zlvjlprgm5gs8LIndqq3SzlN7nVqlmdIh0wL2aUrn3mwQfPBpuvTpTFbkd1wnxevW8VXkOLEmXopyJT5Lv+9aveeqKSgUeR1B+ia3lWIFKf6Qatz+0Al+WphfecQO2ytqPe/Rs1UwDwNzzVe6Gl/PAu/qVRGZn2wb3ViXTgRAeNUhgVokDDasrtu4OTXfy/Y/zMc2AxDakaCwyyGTzyMRybDfVaIdZgYFmnpi0t1pcWE1CPs7pQJJ8SqtMZIsqNq+bRICGoNtsE6vqthh2iVPrLK7ustoYnMKCgcnJ8DJ/NliLvsrNRG2YoaHWJKpdqO+5b9wz2o0py7QgELNe6VH8kMgR9y1EKAtvW9TtMz0A8ZrC8XdnwNyKR0MwR41TEjceDnMxdQeWf86D0m2We2KJA5Hq9jT+U14LpFvikirwARos9deS7/AwcTQ8+bLdYrYOyb7jvjKcfZnN9xgNOZz4/8sz2xqD5242+3hCZ+PnT59AejUKJ9H412ahzqJbcXFNOq9bV+bbDZY/OAdPy67YEfSwrDIzaxNzx7Lsv9oiDiGfjLoIQaRJEe9svwnrFvE1h7bRh5R252yCUz49qBDsvbi0hdMdcljIKdhHdxxAyoHu7ec633aj/lCfQ26u0OKt7tLhXxKKB+v/nbQ9NslVIevKGLZ35+8yd5oXa3aJIU5TbbpMkZKMFfcwsj0vrE3nxjz0HNGQr8NN/haWoZ52yXU6wqn02MqwcR28Fta0r446T49FQnaQ6guU56vQsPOY+bHvMU8md7mp24S0B2dKlfv8ZSYgmhNVcG3kjTlwPn51Ad3+iqorQir13f4Wg1LsqmocCKfJ7XK9jX/5ZPGkE8f7eGdRdq/ZAs4kN+u9ruwQf3dT/hxQtjXL8wAnrI6YOh98gZOv+J4GHIjPjicT5VHZWyNMipiF53n+qT2PMRfruKm1qBfWKx4O4aZJNa1o/bOJ5lJ+7iMZzdKIuVzLkQ8otgMK3q0g71XtFHIzxtCAB4pW1joLWXJJJZJMLsML4hccbXZSpImLlGJhwat6YjmFoxN5PYzL4HMIxHqCuKF5njlmNI14B762hCVcPv8mOlB2lSiNGZn0slBQ3SrWFCpyH8keOGyp75qgoMeQ3ch2ZlKhzgP4Rtex81VfSSU6aAOAO1h3yuYOH9/etSqiVNoaUeg486ifALBdUZSLhDRcooPrHDgpB6c3i1t/byhJs5IOe/iC57Sdzp01MfCsN7aDe/xf6+7wkwkQK76vvP6JpaUmGtREiHeRJ4GfuY6OeocGEAIjZ/TSrplepqIymqorkHTVOAHAjk0T4Qz1gMSqcx1F9DW2qUW1KKurEjSFEav+hOTbpYmYJyt+ZNv0FrBBQfh7T9e/wEMHFpG+iF2bV87JGAS17MGbbORJkGmf2nPV4GuXRddslXEucZ00FthlGTrZJfPnUjdAVBuoqL5tQ7ZfqGgxuDwWl3But2k03jC/Wmvzh59rsH67Hjhsl8x3ucRJd3rFWZQTP8mMqO0Sn2Mz/61v0EYzMVuxnj0tEVZLkwBQXZFW/+JE+fTDNcPrLEuMcfQzFBFBmZqI6ajeWnsEW0SUfdHE7djITuoMwWLLiK1GcDgOGh940twilbnGFPONIjLH1cqT8UAHn1Rhz/0pZnjvZXnECaW4/NPjnn94aYWa78xiq5sOE+xZ/1A1/lMb0HgnnZHMoJg2a8sAroUW0hWA7VYHeP3pM++wh9NzfctR52vZq4cwVp3vM1IeThmWoppyfU9zf8JMAyxeBFvwCakC/gtvXNPjqWMvXtuYba9kespryrOHjEJphnmwlJmohQTcg7JCLu+pWXKtZBDqFRcdDbtEmVQyHqsshBT1WYw+xIx9frl8hs1lOQzrRw4GsLrRW8wXXlzrUZlyqnakrGsVFCxQjRAGvUEN+pTUZKitIijoJ1JUKLG+XaTf6klddNQdwMd53OhSYNGwSK5ofvUGbI4krJaLstBEJ73WHajk2HRhTU//4Cf0IZPYKHuF3yR8NdWJBkrMIruBD8ryEScTUYRkxNa2D/Hb3A5Hcc9ObMiciIkim+MYQr67racxY/WiG/5xO/z8w+Pc5sqN6UZY7+UZBpl0OdPy0m1RSgRFJPtZN/y7KDl7o00fFwFQ3QCoUI/7ezth+k88e4o0FpU2kUeD121q5iuFhpR+R2jqqpQnBVhfgLL+uHmkba97cj2kLlelbhycleR84YO0ZPlbhxmsLgAMKnJjQNLxbPnZX0KrOqef73iby774SZnX+/5mZD1m9bVjjP2rQIdvwU1QKs2TsmlL4cGwolpan9vHcDB6TJRgoDTrNYYiCumOXnWfHkt6Bj4R5FUpopBPlNv7isFpEbyzgkzlxLokigPKxaX9csnlmHlFNMyAuS31EjHFWXBMLC/2U4dBShFMFJctrJ7MpTTYKW2tgnAmJYxbawdV+fjvrz7lEyKGhSoe7l6WoDQ5VKG4OlckPlHuGJqkErUKPwph8FwNb78n07Nisu0796BVGJAYxwXz3Kz7lQLJDuYX1AwbvFrhXlYu96yjd2y55JU0H9xD9ToCoARJNHBHgbZijFgbPiuWAH8QqOMNYTy+bE/RCA/lhU/2+8F76wrU1IREovETktomDYF1+5uMsYEgPJuN+l+XU1daQ10y45JzlkmPOyFNIpl2vbQixKb0CwiSsuH2/7v7NNXN0WyPl7CQOKjl9Z7R4962ndK3RVC9WpdPa36BM2U6FXyF8meX+OkLevcJskoqoVjR6N4VwrAFTKfqNZU6JMt5qAvNBOkahCurMits8KMDEb7WV4UntA5IiGlInHbGcJQdEoFyNQbRqUOYcjYJZVKZTx05eUGk9zHHh7t9fDnTjIeBpMd+rJte3LLCH5qHncecHqur3hXgfGLCwm4s/6oEQMNHPLkjddN0Y/aE4pjUWr717wow8z8syn6lrqR2ePTOmV5W9OTU76jxR889IATosVSy0vvL/rE/BSiTAEX2mPO/JbHOw6TfUBS7Gfb/vBjCsZf9tTYfKPTH1mFyrNBMJW3Hm2Lg/s40AIwm44yfZjpkHpth9Elv2lpiImKwC6y/AE+ACpUZuaChTfPoQkPUhhCai3mtmcwmYb3jKbkoKex2rmIquUh+6CnaZYGYP0qiGSEnAQJkeG9MaB4sYo8/YARdKG7FM/fxqtbFddhVjMGiQjWL9Ebhhu/JWXu98gzsV/abe8fXSezlgYOxPR11tcFWBtYJYbOGz7bhnbA890KAAAvvOn1TaNN+euKVqFHohOs3JJa2EQnFw5mal7kRTuQMuLwsQZLUKcTaRtAXcVs8O3biSQbYZ4RflZ+SWOVL5TcwLJUksTSFOmRQciWBbALfcobSJMZaOMlwAuw9t8BXmEoJc6o5+5Qg3rYVrjs1pj9niCJjX1QKbE/q7JRubBAWL3esilb1YI8srNjedYKX1LBkJbCJIl2nQdjmDVeaweGP+stay5GnQR6Um7GnCR/GAy15L/XOlSpH9a9J4DjNkaU7a2EolIhjujxblyrqPLaJ/6hwBgfoFBpUOlKqsFSHD1Ck2ptNOkE/nQL1RW4bTqFaG66eAoIFHcA2nmqv/2CC6m/st1clJ6RrPKaEYnYgAvtNBRKvynfgLMGzxkVSSA/mmWGmChUtKlhLFIImfwMA0l8GDejR/zo9MdNvyrvNWmOIVc/iYOhQyi0K038hsS0gvTYTosQWL0HBcqY1xUOUDcOBsHotS5DDrNZOoYsVgUQM1RpG/HmsB7xA002QMHrFURWx48nj0QBiPmqlopBewO9Y9g67pvR4J0YWYYr+NUauKaIb6bb0Ig/SoxzEDkL9z+YBLLAPfydRrT4JQZnAKPQRrTTUtoSm8zQzCNeA0cvvirzLhAdV6jXDmMRhirDDsd7GFF3NJ4YB+rc9RjV1HILnVJbFDNgd73FUxQY3GZgVFW4leWozICcuIh6a2QmRYw9qn9xS9z+ETPKmvOjliE8MmjY4wambJS8GbubmIJuVsNwJkuDwtFhzvnYh0812rMeqP0RrE61MDiZ3yA6xB76GH3T68r+Wjq4AxMP2njBFLA0AlaPmJrU8m3qwAHOqFU5VnCl02OACTewEw6Kg//Q+eFNIp03DAQVXKqvSQ7jeY1XTCJ4QIUM2PeE35L+GnhnmhJRfJycXLJzeIMyrXEhKZqVyV0E5yiSepP2ZH0qEimdjik7LpK2W3Tdk7Plcedm9i2YrPtT6lw04UapXYVsIDnSMPWMYNRSbB1OxrIZCdWwz7D7cdYJW3iAFz/rneLzppfcZJVJi0X/eS21UBN1Nlf5I5wdOFPdnlv77T8RYxuXmRBpKYHGGJvTiECHWeOKKP4cNCqE4YfKfX9UUg2WJxU6R/9vFH1JvX4E9qQk63lix/p4kHPehjeeqoeyGQzLFLRuB+BeQU0eIw32T0G/P8DxMJWa/1udR3elC/q0Lt6xXu2LPWKAw+Tv3OwxFciVxVQM3nDG1b+uWyq3F0Y2Y0XHs2IA342nMZQvlVuWbD8SiKpyTmESowBX03tt+8n+zgvrcccvSWI6ynAarB/mahhWmrh8PMI/ZP/+lq6lR+MZ9in+SjtznR13CP2dQgNhm7owqBCkkGxgCzWMVWZ58OD7FGs1nZWaabV/CaEl8qRqx0ZAM5eBrLs0nQnFF1jXMLvr8U2PbBXAA/4MQ80WPCORJV8GH3BuA7Xf9NU3vbVETPn823dqG0ElwGXDQFPSsGYrczCj3n6PFIPBZB7r7ag/ci9rZC0hMnWZQKtl0afWYQRq0m3Y/sSFtQ+vmnOyYOzvYOxi+ATdzmKljt3P6f85buX/vOUKCqdGe8IcQ/0TtOfzT6gnv4I4kEQWFxt9YRmoUt3zhBbuM0CrJ2jJBPYAIyRujzRW3WO2S4kE5cFdGGqY8FxwCefke0TfozQjgA22Y45D02h+7bb8ZZwL+EsS4bYt14LvlG4VRkNU6VH7T4Au+V0uXdYhL0LQnNuPO/GdV9SCKQs0GEQR/l+Wxa3n16nb5bwJIwku0SabWIChPn0IO1SGI9CEZ/sdw4oezrRE9iFOx89urnjFBT9ASlViYvCqXQW10T5ln9zZcy5oPRVgNknr2xTKs15nBxKdoWAQuo0F3+/+3kTIxbBATzayN8IUJqiex4Gp8E7O9C3h/q9eEMUfwTiu6/aVZDS08hTY26Ogu0aHrGnSXR75kTjTQNQWftQPaW/sWgR0aeGGm9YGY6NrYrRvlXR4yWqQwTN7Aev8zLbErbl7YXVrRXPAD6Zq6B70wvqVIsckg6wo2kFkojm/Eohc2KH/qv2unJ6on6iea5Xb6BnFI/6voUhVe/m/4p9jxg8TaTeWgtKurcOa8XMBZpZ+rVZeqgOUf3e1ddbb846hHNdS/xsOoax2RP2CzOYZsxUPXPvx+/L+udScJD+D3FSjYBolK2MgjzrSp7bD6kPzfrKif864scl+B/6+uTlQ1wNQSr6me1XUd/IbheKV/+SevhNtrLvZqpZ0P69u5TxPv6WwGacdiIQ8qU7lq63atQn441VIILzPcXp2WLud3/TDjv/y4fMOeyZjts/uvUbO6IXgx99n8gnEbAXF6f3RxqTOjZv+cOtKTJhign099u5yezkSMaKxMVIsosiC9Wk+Ae6Js/zt7o6bGJbutTKn/1MLiLP+EGH+6+pO7TC7wmpq2Jp9XSl94tfaJdqmkF9a5ogFrNxZFxmgUKFCC6rSv71mLLzS7rwhogoEgvsbEJGabfnKbNsA+u1k3/6AWtCqHoxBIAPDjUzHdlUui5gpLskFvO7EPR9PfDfS6Q8vQFDRimXsDoh3TZk3fi0gJ2JyudkdatXxZN2bIE1UEzhCUgWc/LbApUVeD1pXWSWoCVmb78dFQK5qbmcz9KgVVBllgbVrzfGFhpT8JrjlJMbJtqJxRJzAuNuRVoqDmenUsUpVAzRhYAi5xj62CwLcPzJTkiy0k5dW8hFd++rtkL5iqqhh2D4DKqare+x5xdtLgzqmJgsZ4s3FGrI1NetBw+YbFpgpETd3zxoAyHyv28DR6hezZLIJdAopwAGyuINpyYV6dtk56pBGjVrv10WygL7/Xhd4hWHSBl9iHVsvQ31bb68dzpDuF89kmxGCFI6D9JRJPKdRwj23DJAmYujac4h1vWIsLNj3hUYh1uFQ4SsRZqcBbuhIKxZeGqpexKrbWYHV7yGwtxCL6D/OlCh32sIEvBrDiXAh5apCx/3rJhvYd6G7JaAGg1Cc8SUpofewzk22+ZKwB455CXTtbeNEsJMsFS2qwvLtTEJAz05W0nSEN1sxsXOr3QByRLcv1pxbMrctEk7DHVfaumq8lAWuFmHTnRqoDopX5kjeM+alIHpq2csGVr4miQ8o3fCO69BqHFaDJVTQ1bBJIP3E8eKmGlRl263S0ayxN71gzBhXWwV8V8M09fIu0HdKa1lzQzM4YxXQXHkrjOqgtlrk+v4+BzQ00COExOB56K+HZhVKzutMZ3+3U5FOLQ74NmgCD3c6Es6zrGTaL4V7ofLJFYws9ZrYanBaBHrogQ0pfb7ybQ4buXN0LbSYtWcFje/BF1Hvz+q1MHLjf73qa0/6GkME1VpzObe4cKbTUSGSrc5vAkDkx8Jw2wqkqJZK8sehWJeN/RL4kDveEfhUx1Dez0KmtbaC19dRJMrQKwiZwGFqYZFXZYhCUkkzITbCakEq/T4vQ2o90lYTOMbpqWedgcjDYTD75G4UWn3QIm/LeM8dFKjS3QE2/aj+ALZlIFS1fuPClcesmMqAIg4gvINS3LFhWBv+s0sAUYrCEeZaXKN4Kzck0nymvqZGs6T/3D9+gfoq9EXV29Fijn2GZz13d1mffySUt73UOTFb6dIPxViy3sjoQGxeGqI4iPQXz+B0/5hh+9yYSyjgmC+JrWzUsOSqQFb9qEvp1YriLFdhvY/VAdAqlfpA3xz+oGOwR5m9pNM/tHoDM5+zzSxFTlkBFw/tPW4+Yo3RviApbMVAmjU1OZKjnZLtiEw/9Hr7CpPb0Z4PPPwnps+HkffpFFMUmB8l/UZxI9h87yZlO4fdE9BrUVRnwzQ8GY2TdSa3iJ9ZEhS2XuH77p4LF0+rsHyDPEZx43D07TYRIrEXGRdAYIedUBcsEWAKiKgyKco65sm4LFsuOwmYU17xcgQM45xB2AGVcxocNPW/qZ8l0jkHS4dtPLaKPR1I5lEBiSLppCNBks4rIlHt5mXiL0yk7rursDrft+YsGiIb7LGWlVIxNotDCRYsU/2B1UN1uIoWCUuLsr9/O2CgPtw4d4Es9f5oiLi2lspuViyr/S3Ky6RkuBGHIL6aaMVxB1Rk8ThY6ndhiZ+gkBIXPjWweFAPgiUd0n4UprLMxKayDGRx6RXwxLQso11aWc0Z5WdlJBvsLwuPzBD76Bn0jtHPsJZaWHkWtJmzqPCQCWgO/ZSycxAsTwnz1AYC4QgKot7Mjv2k9FR9XFK1N20FQJpgDxWoCGULpGnGdo5RHUIFsPF/kcJQ9Z/LWeT8NPfjUbRrPLZR1yMnO6HY93fLcUIh2+5OW+Cor1rJ90P1yUSibXAJRUcy1g4TsKQmasnjzbWdJrkmrRqkOezvZK6RdGAUfZzPP9wJEQOv0Z+ufW2lszROJCDC0dZwbtFqYf9MjIu7siFddz5LLxnygugpACnZ8I5yeiMInIA/sfWjjz4hAYymFC/1yI9U1RIXBl1RANRcy3l09C2Dl1hXpnfqUmxOYagYDmVhyzV7nYxyMDrcja1g0svyxvFeUsTZIngPMrNK4Ginr7JFY+NvuU74kk45IqVqP2h3atAIIQArre6cd1R/Rwtw2+GceEUldnYLxvkDBfKAVHpiiG88muEhYzSACFYBeVatmKk3UqwCx8KlSn4dn650+QEcgTgYTQSHcT8o9yVjqEzJ3p4Us4yIpjKGjAPJ39JAbxE6iBc/CfShTpHBgPfI5FCFa2p43Hf8k1pMajVbVGBsJJXok1pGtX1AmPOGA2GifXM2bHK0fKj4a/54gxJSqFbKjEm/TPbXEm9Q27uMtqka1doc9a0QwNX8nKVaxgh5sogBtqQsbcdSa75wrdOY8+3uVVvtV6AdOUeedfWk9z5lwEJFnBWA5rcQ9rWx8JlDrOOLyzrd2Xy7gucAQ43YUiJRFWOJHu4sdieGgE0saswpWrHV3W7772IgeO6s6hruONbg8u7i/uLMHqKJAvQzAIvkyzyJEoY/4KFBsyK+Q+3RwJYoPOLAXHf/SVjC7+TWWoYKX7NXMZ1NyrXE+D+oMXcHqFrvKns1XGP3N32xss9eyPanDpCDuYm1697YPQ1Ul4h6lZlCy80hxZsqEu43PTLDe0JTJ0VBc1Mo5v2TBO7r1Dkze7TPkrH8XstmR0oU8coNv3GlSHSVCZdRX9cWvRqefThkFFapEi6IMRq01OyqaNvFgKgxKekeZdyVqJYK4TnOTXpbpUHNBcD1lhxg8SvAjdLvNjLtshGXJtRXVmBEGIbCScZqhTxwSpYcHPipM8lv8mqDE4zOPQARtTSM2uN9BL/HnwgFfxsanvPx3ra8BCzg/DmleK7hn73Bn8pXJtxAoewoTUA1Sc1qITWTdYRqnJhHrz8SpehxpFtmLyxxtsIrBbOV8ecS5CqxgwQgpvNrvJkrwAw0Wqp4/g+lM8S9RsmmnVVBbh9sZunWFRbIeE06DZheV5iFK775rTQBpAVkJOpJfU3NzziQrLKNdRpi9jRZ2ZLf0LrkdcFcITQk6sdHsbiGB5j2PSxFc3RZycMGNRo2pQB2Cg5YmjeotN7sirCrzWCt91MiDMYYuH5o5RxHp1OqorI+1rlrd11KrFGItnnvMYpjPpEYqElGsUuRB1qF2SJ2X1UJSgrVN37Y5LQywjjKGGUuHZLuRuqsDvXJQDYF6ZE40E2YasVPQv9jEsdCBmmN+RZPvHSP+ZGPPnIZdE9tV4EDEPr2eAjci7uTh17NJaLRaDamsez1N9bIsulqd6nj6VjeCg3uZK1nSFEZzowOnv0hqrPc243msgZMIQWKl7/Sbbx7jbJwkhwHLiFkWCkhRw5gEhH4OxSDJ8Ym0RCGPA39JNW0r8Pl2XUrR1pX0DQ96kFz5noD1IVs4ATYPrTF3HUfFlYY+ofrru4Q7RwwSXP4U75wZI0LjlS5GGwocaSR7DuU5nS7gRBn0R5a2Fn6DDmh4bkalPfVQ1Gq3NRbJLIPGqkrwnQOLLGzDumv82cr3/DlwMGIKTkPlSa8XsTLDjg35Jzc7RU7Gb+mOo0HZpuLWVqa5SovXFkd7YO5Ye9rJwkN3aInJithmtCkBFEKdWE0tY51mLOM+Zmii2Rsc/vvowDSS4mYv0k6wsRETZO9TtP4qsojHFV7+4foZdcCHJkNbESsUa5bjAaRFxlWltaJX9OhA3zzI90zW9EcRx/BAWaN/IBnnPyUVSk5Qlf3RDwM+dHXLI1GR0e56bTPYlsOZyNtbHKn2EuoBRXBajMi5BuyPzOLABvjkFQ4gLVu5LBtDPMF+aXQ8GnDeWwdTPZ7vE0zdz9h34dAdE3vygMpBkglDiZ8Om2R4hzF1k/Io5oVClie14XZc0kPd3qletGIqa7GL2klNSSKG7lZG69w2k+P6ZHYXoJ9mVDWAgp3FE/Y3rVIRMtvgH5DrbQPn4aaiPGttK7UhP9oqG57l1QwRt4AVihpzvvGibwJTOTLuGKVRTWhAyXY5xAfB4fN2LW36bw7STfAy38kNaRnksu8uIZ4xv6MciANe57lbra6ZjTYxiK0YoBXvuuceQVaVot3u+eFtOKuPCbtm7bGPCuzIRi0VoVd7rvSRmRrBQIhQWZnMoUM6IIQpD8uFPQQxzhcDuCB3gKZDkLQ/X+666lUtRi26Z358KxqgimZhGMD6rProXcJgX/w6jDylN+61aZ2h+bVYqCwfxEKK8LcjkSOJ8uAAmaNctH9ESjhlgp7Sc4LifPMyDi9nTm+OG7CiFd7h1ZaHDwrRqsUbHaCU6JT8OMRuEutc4dMO7p1A4SqEf8U6uiBu2B0ZWkoMDxY+qI97hybqsq8Ry7wM+oCttZ9v0KtvAa2ho5swOw/6tk9HuYAoS8abhnGyUSDTKSAigvxbQrsAkM9MIejr5JG/dccoYcjTVauQaW0m1lhM4xhG57tOuzVh5UWkpdpg/sKjc0PttCBaClXbSuXuaps1NjyrVEoK6Ps8X9wgyj3EnMSfYOp2E4id+bf5+ycO/tN8TpnM8TV0rDkFyyQE8lF09CdmTpy0zengvKS/fO8Pp3p4pPt5fJyFi2x6t4EkgWXhmXsz/PRSWXc9aFU4r+5bh7ImyVyzbworOMXhopSeP1FzLfHW+ZHz1zBZpqUMhWOQsG/ks0x0bWMz/KO/Dco0qVOtib4wrITO+DTrsdg+IrwQxYHbe4zdVNhi4+Ok0B8qYuGH6Kxsb05LFyT9eQmZ4/Keq6NnXv7xezz8ePhx3bNku8O5SgbxnPuLh67IA/+yPeBjv9wviAtCLXoDo8kvZkG4pCp7AkTXx6FIMSFxn1/b4f2Az5pBErxV/3PurU7ObDK4HR1jBFZ6063vcODZl2ga39Sn+yqHoaFEGIjYNHYVaSBwIqvUIHzcNy0/Kg85l2K36IR5kw7egcObNHnnECzEeJZXiQwmo/slr7NTEywQ+4EnSVAUpgKARNReLWR5hDVSSpoEp9gbODTJnqHCYE+LSI0ultz7G/WEN+4gNOLnB0mEYcFi8Ona38DxVO0bFASNSfM4ygYKTH5wB22QbteOua1Yf1dTnIO2CmtX1KrIx74l7fyJjY2hLCVH43tSGtlMbGoGeNeXRrtvB26r6MiunbTNiErTsmp+rE0QQsraOfD2uEqKRXoCdR0iUMm0HKXGg42Y4cgUSlCnvkYF7fqzLt62ZGLAmlxhTcs5Z02W4kqHvCnl4nDA/ym9bQ4LbDFGGxrFTqdli7bZ6hvvQGF8Ews1jb0ni2vV9EEHbgQQI55Z3ypQo8ISS+TqjoPUzxWXgv4u1q158VfjtybzKIAB8jO3UQpqMQR4sZg6u3uewQzOIDYSuhzPXwwgLcjTJ/pVi6c5Hk+p0lxC0FTjraKnIVHAooE9yocT8nWRdMxripUXl3Svj6ZwlGqBoprDrUPe0C1tHOx7PtRnE9vrD1bYNFdpvDQg6b9iQZuxHbEOewrCSnTMDJfb4VIM/ChJMwvvbwKzjBaZEUF4lDRH0qisJrlHrebzh2I2BrEa6LeiZm0isLHhKSE1oN9bPD0squgRluRyshRNtHxi0ZVQHjqc7TEzIxSeJadQHqfECo3P2DmX8sgHhK7Rt0WOhHHtZ+wanOfMKnQyQ5NQpGosW4VnqXpQbvo1RJ0HizkAN9fWIRXMiPqIJcZRTItyizKhPyESGMRHlGnpabaC4N9naepcUWK4+T01JVZxmo4ux1v2APFherMc3WMRuSWIGof1wEv/UDxw5pSzTE78QojaJQsx/xfhwaFbotZOPfteserKI5mPIO9WEYfO/bcBpXfbHnv0xPz/R+DdHu47mt7KD0kMzscPGpbe4l316h//z33cSJJjg6ykWZuCxlFcsKBCcKQK8ayQxTPxk21QN2tMLzov0XxFK/Asq9MPdSX1TlSt9uWp5Mxia8rQMSh4HHusG+w+rvjvfP7Hn6cR9Wz5ge6knR/YX1oCN0dCFgKbf/JwuKgckcChfmmsvQh8MfsgyPzmhK8mufEKzpOdyEiVuaZTZhJJWDvlURbEWdWtJ8vo4y1odSzpvrzaHXTjLbByI1ig5KpV5KyEx10YLSf8SC5DKHfh+yKWTHQ5v4js8J11/f2bLZddW8v/Fr6Zc7/4icCB0RN9zWM5yliRKcH+sPe/B83+1e9I/k8Duz869AzCNyUBHVPdh1G81plHzt555T0X40faN7wPYxxniwhYUpr2ZKw2QJ4rnj/kzg/qFhr2dALzoY6QTCkFDWzaq5GkmzzcR2oXamM416pC+c5tp+B+asnG41ZPEI0Tz8vtPZmxldCvwpBfDxZ2Tv7tN5VsaGCkTHKasyXy5i/NYlKCTleRJw5PoXSB52cUQ3upLoqDNKXf7rhwl1aTOcogCt5pLgjq/sN4uXO9P5kWlg0ZpoaRDslj3lXR6nH4nOQXelLekAPVzU7oXv3mhN0BuPsqwBfBwtGsa56TZUos3EkD5phijf8Adx5wUeGLi0+SYD6XGIP6GsrjMvaZfyW9WklqLXWsUzjOspYfVv/LeAxPjFn9iFUyPREJa3TtkJNt8NSbxugPPkMf1sAMFTjTQbe0ulaN7UZSQobGoQT1ecDuIKt53+F+MPpaq9oY/OXhV3I2JDSHtJbz/Cs291d4ZxXgwqxYgTOv/d4Lo1C1l9pJXiU5g161MJXe59nInjsiyENqp8KsmV1kwDkrvWNUsCF7fGM85825LS5Z/P8JghNedWSrzVWFxumN1n7a4C41XuwHWGouZiuH0IVHaGBRw+Jp/+XMwXST5qt1e0zfh13WnbZ7qleRpJN6q8Z7vFcEqeQKZyIL8gEsMHniPY/8nuPx9P8PHCIyq8TRPSTLiYEAQzZWHnAPazhO7SvSxK8GENtHstKBSLdqWN6scfFc4zM/frgU/aMob3WFqg12cZni3l4pZ9occI9qFRARcqyKZ5FOXUE9BxpjkPykqOXNP9ads4hokChXl1oa0tJKmuAMwth25/rrzVGmgl+Ksn9u3qBtju2GOamQAjg1RbFMShgHcCYcDxrZBBrxkghsMRtyIsA9Pq5P78wPtnTn+R5CU7eixkD0esPIB+q0BwdUjJFS+TSVBWOEAZiP5+0/g9yV5rhRc8ubtrzrF8SZDTBsTnZITMqQCjd7/LOYBhajyFNTZzMKL3WAbsiUsx/7Em5PCfqHj6tN86CCGxg9pN1tMDnhJHeEFOQSI1EBcwJSEhWiTu5jcxdbFQKmgcAx02BhWP9YP1hhvss/4qt0EnbvyYwK2h4JIMUcOFgST7tDM1IYKYyqIebYZ/jR6c43g2pUH+HvWmtk/6t3hLV9OPmrsgohPJ7/1eA4jQeTXrGI3/x0Evv/eZMmN4wSylyobSzLNE37o0uH9iRY8luN+dH8yEVMitQNmvV3ezSkMBLdQN8jQ9EyD4yVwKwB4dy/py3B79sDiLQcL7PBqEl9xIyx29xsm6gK741BhGl1EqZWH1YpM296HF2+eafxgdRp9Pw6oXtEQZHMx/hZZNQlOLnerG/0d4ekQhGGKZm+hIqGU1UdRB8i6DoFibJMm2v2i1jcaJ5NhH1dL8GjvhagLvmjSkjX67/HuabVT6uYO4rPB187KAY7I+d5SDl4Dosyy83qpQBzKetsrX6yL4lFMJLOTnoGYp9R9CZmd+e0kG+9VADKDu6613GZU6djGwjAN1Cec5FLPMqlVTEAONIvh8W2ZsFJp5z5f9ZOckuCPWht22VzMXS0oLBq+ycnhRs0Ym59KoryWEiftz89UPOBmvV10UyrKkr17+7T2cTTZiQHdWjr/tRDVTTiOVTBrOXTQI86E/m+apVUp/vIXkIFDtliyzUuIXY2HxqXNOGqXe8pavOPzWAGEUWEmlhOfd06S+VX5G7XUn2dThuYSOEWAOoYqRxIhy/87WiPQ9XIS14iZHuYe/wBE4wPU4DQ9FLEWTEStUywtMBLVDkM95DaNJlldkTnxGaXBLdOVC2k3fYfybLPrSTprjYgImo16w0rqWZUcX+NO1MAxSX1QX9XsrDWgJFQRJNGOdoR5wAX1j8WXQ+2XYFlCQccx+M8+RUFw9EjnH5zS5FOSVjqiRmBXD+U+JhxOcT18edomJrILZwS1yCGEnkzERnoASHF7cffMLB+AxqgvrtGlZVxrPfsEeT8Bm5l/PDvz8UrJeaP+deszJqnZr+taydn4I4uQp52+2Qdl6kwRdRWrlHd1WyNQaLNAOffLon9YtesXTc9f6IsQfA6gqNdGjIimjPyHpfJTG+h6TVLjQaZX0+ysHDTsW3HzZT9NTn4qMeIaXG5hLdGYj/A9v3SztLjYeWQdji6AKnu+9Z8xxnk0LBL26dJfNQdQqGgc/w48WiymGU9QO+pFZdYkq4Rqnzx+prvbZLXK3ArlY1hq5xHav+98mdAIbYB1uuy4xVKuuhs62lsoUHupTVDdxA5bbP+5b4Vi9FZkP/8UFv2HRz9DA9Go7h6a+Vg9pnlxt21dvnyqBLDXFsQZPppG58rl0w1jw0/0JVh7em5eXNCq0C755Q8UcMQYMhJgkLa0Tih1NME0OQbKiFKGO6cu2c/Lmr7ktUg2SWXC9v4xKFiGNZt6e1iBm79bpkAhgZ5MUemnthi1q8IPwh4G/clg/Qs5HyF2CxRsv8Cpnsu/5H1sjeAngI/JPjY20568yjYp8CwiuPjjBiKaopH3lS9Kk3+ymjkhtWrLMrS5TxvGsVm5lRhM9/wN1ZDjXjWFuNlNA2KgLYe/ZGcBA/0krYFPv0EFli1C7WknSgz5t4l99zmv2lgfJMR3fgM2U3VrGukk7+wHf6ECWo6QFIFldby7oQ4FxgJ/EISzxvDbdiTS+QcMXN8e1tMq406l2v3uvW04YPiZh9QxJF3dWx338FjZ8HnnG7bf0dHsDpzE8c6XcuXQ2zOh2GdjhnpJZ8qK6LGhPZA4GpTEd/eGqCZXMPHCnXs1yxxPg+8ONigbq3xogrHaNGHL4oi+63MV0z7MhFRTKK7DstsVpH4mEKpTRirqDKy07ktGnhPwCV7LkmOtBT23uA2gTKz31j62lYaescTJSZdPfWTLN0K47TLPM+jyRl4KxWSOTdgjH1vmfpfT5Kb9+05wl8SXdkE2BCR75FgHPEeDmpsgX5QaF3spS+0MU5Lq6OFaqlzR6+dztbQFGuZwQoh78WIAuMSet8FiBAvt0mQaBfHJ75KJ9ebEEDUCnApgdLujXdtScVOAGHfGPBe+BBcb+vwQQO9a1anoqIiTnvmnPQXoBnpQCMXzx5+2FvtMwb3bWOk7uBapwtK/ZHHS8qGDQL2Nyx8y5BwgG2TQ08tHC+kE2sQW1sAd2psA7f/6YhIhtkDlR7mlSjAHlZ6LZ/qTSbfhmPXbsHz5F3nGEdjchgn6aBEs8Ke/HaoGunPcXFtlI69qLegrISVJVVT8L1ZaKXu+mK+AhPi3YduyMnoLH6sbQffE4NChr+tnXMhn38DkcJKbUKQYcMX4cvun9TjMfHAjazDRH6aRyrYr8+d3vNJaNsSjTGqaxPmpXtkowebRwctehKbeT3TTC+k1iWZzNHDQVPpYUtU5XNd1VvbOJ5VRdFFvwBRIcKgxuXzLEQG47k4rXeceiZE4V/lobPhJSgziDNSYlDCpCZeIfAw4BunxuAcMKuJT6TQVs0rqehonJv7bsE7BxbALffIhmZm3vzn8Hez40C8UqPZ4XM2NhULSFTJlozyzdm4Rm3QhawoUjAaNmHdMzYVlaM6MVuNiE+NNCkQXsQmYbpWTASWXrByaM9UNHpC7aJnLVuaugTMRyg7QOQxPt/FYmsD09+c1kF+mk3zOl/v3NoUS4YnMGYSKTJ3siiXLK2VfmczIFW8mLSvIDXDU0ljX3auWyFsW8QP4xUdPk0U81g1kJml9G4NRAZ7c1zbhrR8M0oUUIeSdXPwy86BzyQexMbYm9SaaQPIrfwg8u0R3a9KURHrTyuBHSv1iO8cLOXoxTPG8qX14NNzSi5aMCo8SIvBeiccuPO21lqamCpamXskFFtGHEWDHF8fQi5r68RtZ7VhZnh0th8d280pMWIFxG2wzJNLrtvi1/gxiTZrvRsgLET3BAihnCPJiwv+yzKZLCi11AW1mm/Sp4Fh7XoO7qGECbBjnN0cWYYba2PZF47NqzYyRcmrNB+HMXAQsenDZtJJqWWtnxncUC33pD1nk7ITtwN0+4xHx9rt3KDHujatbQO2Y/AzJvqd5u56qvzPqTQdVplzJ8rhcMmV4eUKk3oXWSe30Z+mFkUrj65mhkdvFhQaP9qMIp2oFdWalk5gL4+m91OP1Kb2yg8kdmqj59aWw8Ecg+rGnS4Jm6SyswobqNOwiI8l3JiwHeUldFRrJJmeeIsj1bOp60lbwGFo+G7mcxq4uxrMuTNIE4D9wxL+XqS1PjqwUH0Sl53JwLb53lflHwWW+UifWrwfAEWJk/TdOnxk3oO3S2uxHIFovxx5nNGnBqITh3xcuEvLz+9FJbwlRKwz2kasmk/Q1bOYL7yOheR14xB4Hrj/o24KyTaT2oTB/zvNN+kBS0c0az5+Dwc3QqW8kb/v/g494aJXZU+ikv4Bt/efbwreM5DURtjLGLuPh8Mr8Y/pukoIvINsj+o6xGobt3MCJ1CMpFYvaQfEUCkAHHdKG2naXUQ91xouSsiGQmrb9bxYFfwcQ6iCxx+IwM7dlGHgZnhxtXr4z3Lga/x7zBJquMwXS4wdx4HswKGpHqPPvG0RYhMrOUfs6U/riWRF8MO21wqvGKSO1Xkk08HfxaQb9B69clyEorTUG1uyyVBfsRqmltf4CCwx/TYvXe/zB3P9aIr6dyzXufkNPl4Uc/XdUDjrCywVM9Nn0Zn9VNZu+89x71cA+cgC1yXlCZremcn+D9wJZz+4v3j3/9KEqul87dklTfICvP4J/tkKSYAkp6S2/qidd8o1EXNSraYXIZ+UN9HAMg9ezqYizSLSrkVKC4HZ+JfExqOVGA7xLxxd97aN4YoNmCpcmk2o3CPoNTbJl6HSQHJaIVhyMGBVSGTANcrmCfvo754uZcA+lavfki67M584Fn1L5bcwncusGNdCe2OqVzreua1K0pRsJ3z8W5aOrhR7Ra+7qEXhdAw=","base64")).toString()),VL)});var $le=E(XL=>{function pf(t,e){if(typeof t=="string")return t;if(t){let r,i;if(Array.isArray(t)){for(r=0;r0)return(f=pf(n[g],u))?f.replace("*",c.substring(g.length-1)):Gc(i,c,1)}return Gc(i,c)}}function l6e(t,e={}){let r=0,i,n=e.browser,s=e.fields||["module","main"];for(n&&!s.includes("browser")&&s.unshift("browser");r{var eT;nce.exports=()=>(typeof eT=="undefined"&&(eT=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),eT)});var gce=E((aT,AT)=>{(function(t){aT&&typeof aT=="object"&&typeof AT!="undefined"?AT.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window!="undefined"?window.isWindows=t():typeof global!="undefined"?global.isWindows=t():typeof self!="undefined"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var dce=E((Dxt,fce)=>{"use strict";lT.ifExists=E6e;var mf=require("util"),Es=require("path"),hce=gce(),I6e=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,y6e={createPwshFile:!0,createCmdFile:hce(),fs:require("fs")},w6e=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function pce(t){let e=P(P({},y6e),t),r=e.fs;return e.fs_={chmod:r.chmod?mf.promisify(r.chmod):async()=>{},mkdir:mf.promisify(r.mkdir),readFile:mf.promisify(r.readFile),stat:mf.promisify(r.stat),unlink:mf.promisify(r.unlink),writeFile:mf.promisify(r.writeFile)},e}async function lT(t,e,r){let i=pce(r);await i.fs_.stat(t),await B6e(t,e,i)}function E6e(t,e,r){return lT(t,e,r).catch(()=>{})}function Q6e(t,e){return e.fs_.unlink(t).catch(()=>{})}async function B6e(t,e,r){let i=await S6e(t,r);return await b6e(e,r),v6e(t,e,i,r)}function b6e(t,e){return e.fs_.mkdir(Es.dirname(t),{recursive:!0})}function v6e(t,e,r,i){let n=pce(i),s=[{generator:P6e,extension:""}];return n.createCmdFile&&s.push({generator:k6e,extension:".cmd"}),n.createPwshFile&&s.push({generator:D6e,extension:".ps1"}),Promise.all(s.map(o=>x6e(t,e+o.extension,r,o.generator,n)))}function R6e(t,e){return Q6e(t,e)}function N6e(t,e){return F6e(t,e)}async function S6e(t,e){let n=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(I6e);if(!n){let s=Es.extname(t).toLowerCase();return{program:w6e.get(s)||null,additionalArgs:""}}return{program:n[1],additionalArgs:n[2]}}async function x6e(t,e,r,i,n){let s=n.preserveSymlinks?"--preserve-symlinks":"",o=[r.additionalArgs,s].filter(a=>a).join(" ");return n=Object.assign({},n,{prog:r.program,args:o}),await R6e(e,n),await n.fs_.writeFile(e,i(t,e,n),"utf8"),N6e(e,n)}function k6e(t,e,r){let n=Es.relative(Es.dirname(e),t).split("/").join("\\"),s=Es.isAbsolute(n)?`"${n}"`:`"%~dp0\\${n}"`,o,a=r.prog,l=r.args||"",c=cT(r.nodePath).win32;a?(o=`"%~dp0\\${a}.exe"`,n=s):(a=s,l="",n="");let u=r.progArgs?`${r.progArgs.join(" ")} `:"",g=c?`@SET NODE_PATH=${c}\r -`:"";return o?g+=`@IF EXIST ${o} (\r - ${o} ${l} ${n} ${u}%*\r -) ELSE (\r - @SETLOCAL\r - @SET PATHEXT=%PATHEXT:;.JS;=;%\r - ${a} ${l} ${n} ${u}%*\r -)\r -`:g+=`@${a} ${l} ${n} ${u}%*\r -`,g}function P6e(t,e,r){let i=Es.relative(Es.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s;i=i.split("\\").join("/");let o=Es.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,a=r.args||"",l=cT(r.nodePath).posix;n?(s=`"$basedir/${r.prog}"`,i=o):(n=o,a="",i="");let c=r.progArgs?`${r.progArgs.join(" ")} `:"",u=`#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") - -case \`uname\` in - *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; -esac - -`,g=r.nodePath?`export NODE_PATH="${l}" -`:"";return s?u+=`${g}if [ -x ${s} ]; then - exec ${s} ${a} ${i} ${c}"$@" -else - exec ${n} ${a} ${i} ${c}"$@" -fi -`:u+=`${g}${n} ${a} ${i} ${c}"$@" -exit $? -`,u}function D6e(t,e,r){let i=Es.relative(Es.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s=n&&`"${n}$exe"`,o;i=i.split("\\").join("/");let a=Es.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,l=r.args||"",c=cT(r.nodePath),u=c.win32,g=c.posix;s?(o=`"$basedir/${r.prog}$exe"`,i=a):(s=a,l="",i="");let f=r.progArgs?`${r.progArgs.join(" ")} `:"",h=`#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -${r.nodePath?`$env_node_path=$env:NODE_PATH -$env:NODE_PATH="${u}" -`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -}`;return r.nodePath&&(h+=` else { - $env:NODE_PATH="${g}" -}`),o?h+=` -$ret=0 -if (Test-Path ${o}) { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${o} ${l} ${i} ${f}$args - } else { - & ${o} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args - } else { - & ${s} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $ret -`:h+=` -# Support pipeline input -if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args -} else { - & ${s} ${l} ${i} ${f}$args -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $LASTEXITCODE -`,h}function F6e(t,e){return e.fs_.chmod(t,493)}function cT(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Es.delimiter):Array.from(t),r={};for(let i=0;i`/mnt/${a.toLowerCase()}`):e[i];r.win32=r.win32?`${r.win32};${n}`:n,r.posix=r.posix?`${r.posix}:${s}`:s,r[i]={win32:n,posix:s}}return r}fce.exports=lT});var PT=E((fPt,Nce)=>{Nce.exports=require("stream")});var Oce=E((hPt,Lce)=>{"use strict";function Tce(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function e9e(t){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(r){var i={data:r,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=r+i.data;return n}},{key:"concat",value:function(r){if(this.length===0)return iQ.alloc(0);for(var i=iQ.allocUnsafe(r>>>0),n=this.head,s=0;n;)o9e(n.data,i,s),s+=n.data.length,n=n.next;return i}},{key:"consume",value:function(r,i){var n;return ro.length?o.length:r;if(a===o.length?s+=o:s+=o.slice(0,r),r-=a,r===0){a===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(a));break}++n}return this.length-=n,s}},{key:"_getBuffer",value:function(r){var i=iQ.allocUnsafe(r),n=this.head,s=1;for(n.data.copy(i),r-=n.data.length;n=n.next;){var o=n.data,a=r>o.length?o.length:r;if(o.copy(i,i.length-r,0,a),r-=a,r===0){a===o.length?(++s,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(a));break}++s}return this.length-=s,i}},{key:s9e,value:function(r,i){return DT(this,e9e({},i,{depth:0,customInspect:!1}))}}]),t}()});var FT=E((pPt,Kce)=>{"use strict";function a9e(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(RT,this,t)):process.nextTick(RT,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(s){!e&&s?r._writableState?r._writableState.errorEmitted?process.nextTick(nQ,r):(r._writableState.errorEmitted=!0,process.nextTick(Uce,r,s)):process.nextTick(Uce,r,s):e?(process.nextTick(nQ,r),e(s)):process.nextTick(nQ,r)}),this)}function Uce(t,e){RT(t,e),nQ(t)}function nQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function A9e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function RT(t,e){t.emit("error",e)}function l9e(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}Kce.exports={destroy:a9e,undestroy:A9e,errorOrDestroy:l9e}});var VA=E((dPt,Hce)=>{"use strict";var Gce={};function Is(t,e,r){r||(r=Error);function i(s,o,a){return typeof e=="string"?e:e(s,o,a)}class n extends r{constructor(o,a,l){super(i(o,a,l))}}n.prototype.name=r.name,n.prototype.code=t,Gce[t]=n}function jce(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(i=>String(i)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function c9e(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function u9e(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function g9e(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Is("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Is("ERR_INVALID_ARG_TYPE",function(t,e,r){let i;typeof e=="string"&&c9e(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";let n;if(u9e(t," argument"))n=`The ${t} ${i} ${jce(e,"type")}`;else{let s=g9e(t,".")?"property":"argument";n=`The "${t}" ${s} ${i} ${jce(e,"type")}`}return n+=`. Received type ${typeof r}`,n},TypeError);Is("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Is("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Is("ERR_STREAM_PREMATURE_CLOSE","Premature close");Is("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Is("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Is("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Is("ERR_STREAM_WRITE_AFTER_END","write after end");Is("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Is("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Is("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Hce.exports.codes=Gce});var NT=E((CPt,Yce)=>{"use strict";var f9e=VA().codes.ERR_INVALID_OPT_VALUE;function h9e(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function p9e(t,e,r,i){var n=h9e(e,i,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var s=i?r:"highWaterMark";throw new f9e(s,n)}return Math.floor(n)}return t.objectMode?16:16*1024}Yce.exports={getHighWaterMark:p9e}});var qce=E((mPt,LT)=>{typeof Object.create=="function"?LT.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:LT.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var _A=E((EPt,TT)=>{try{if(MT=require("util"),typeof MT.inherits!="function")throw"";TT.exports=MT.inherits}catch(t){TT.exports=qce()}var MT});var Wce=E((IPt,Jce)=>{Jce.exports=require("util").deprecate});var UT=E((yPt,zce)=>{"use strict";zce.exports=Sr;function Vce(t){var e=this;this.next=null,this.entry=null,this.finish=function(){d9e(e,t)}}var If;Sr.WritableState=em;var C9e={deprecate:Wce()},_ce=PT(),sQ=require("buffer").Buffer,m9e=global.Uint8Array||function(){};function E9e(t){return sQ.from(t)}function I9e(t){return sQ.isBuffer(t)||t instanceof m9e}var OT=FT(),y9e=NT(),w9e=y9e.getHighWaterMark,XA=VA().codes,B9e=XA.ERR_INVALID_ARG_TYPE,Q9e=XA.ERR_METHOD_NOT_IMPLEMENTED,b9e=XA.ERR_MULTIPLE_CALLBACK,v9e=XA.ERR_STREAM_CANNOT_PIPE,S9e=XA.ERR_STREAM_DESTROYED,x9e=XA.ERR_STREAM_NULL_VALUES,k9e=XA.ERR_STREAM_WRITE_AFTER_END,P9e=XA.ERR_UNKNOWN_ENCODING,yf=OT.errorOrDestroy;_A()(Sr,_ce);function D9e(){}function em(t,e,r){If=If||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof If),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=w9e(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=t.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){R9e(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new Vce(this)}em.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(em.prototype,"buffer",{get:C9e.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}})();var oQ;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(oQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Sr,Symbol.hasInstance,{value:function(e){return oQ.call(this,e)?!0:this!==Sr?!1:e&&e._writableState instanceof em}})):oQ=function(e){return e instanceof this};function Sr(t){If=If||Yc();var e=this instanceof If;if(!e&&!oQ.call(Sr,this))return new Sr(t);this._writableState=new em(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),_ce.call(this)}Sr.prototype.pipe=function(){yf(this,new v9e)};function F9e(t,e){var r=new k9e;yf(t,r),process.nextTick(e,r)}function N9e(t,e,r,i){var n;return r===null?n=new x9e:typeof r!="string"&&!e.objectMode&&(n=new B9e("chunk",["string","Buffer"],r)),n?(yf(t,n),process.nextTick(i,n),!1):!0}Sr.prototype.write=function(t,e,r){var i=this._writableState,n=!1,s=!i.objectMode&&I9e(t);return s&&!sQ.isBuffer(t)&&(t=E9e(t)),typeof e=="function"&&(r=e,e=null),s?e="buffer":e||(e=i.defaultEncoding),typeof r!="function"&&(r=D9e),i.ending?F9e(this,r):(s||N9e(this,i,t,r))&&(i.pendingcb++,n=L9e(this,i,s,t,e,r)),n};Sr.prototype.cork=function(){this._writableState.corked++};Sr.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Xce(this,t))};Sr.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new P9e(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Sr.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function T9e(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=sQ.from(e,r)),e}Object.defineProperty(Sr.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function L9e(t,e,r,i,n,s){if(!r){var o=T9e(e,i,n);i!==o&&(r=!0,n="buffer",i=o)}var a=e.objectMode?1:i.length;e.length+=a;var l=e.length{"use strict";var j9e=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};eue.exports=Mo;var tue=HT(),GT=UT();_A()(Mo,tue);for(jT=j9e(GT.prototype),aQ=0;aQ{var lQ=require("buffer"),qa=lQ.Buffer;function iue(t,e){for(var r in t)e[r]=t[r]}qa.from&&qa.alloc&&qa.allocUnsafe&&qa.allocUnsafeSlow?rue.exports=lQ:(iue(lQ,YT),YT.Buffer=wf);function wf(t,e,r){return qa(t,e,r)}iue(qa,wf);wf.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return qa(t,e,r)};wf.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=qa(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};wf.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return qa(t)};wf.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return lQ.SlowBuffer(t)}});var WT=E(sue=>{"use strict";var qT=nue().Buffer,oue=qT.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function J9e(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function W9e(t){var e=J9e(t);if(typeof e!="string"&&(qT.isEncoding===oue||!oue(t)))throw new Error("Unknown encoding: "+t);return e||t}sue.StringDecoder=rm;function rm(t){this.encoding=W9e(t);var e;switch(this.encoding){case"utf16le":this.text=V9e,this.end=_9e,e=4;break;case"utf8":this.fillLast=z9e,e=4;break;case"base64":this.text=X9e,this.end=Z9e,e=3;break;default:this.write=$9e,this.end=eVe;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=qT.allocUnsafe(e)}rm.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function iVe(t,e,r){var i=e.length-1;if(i=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:t.lastNeed=n-3),n):0))}function nVe(t,e,r){if((e[0]&192)!=128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!=128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!=128)return t.lastNeed=2,"\uFFFD"}}function z9e(t){var e=this.lastTotal-this.lastNeed,r=nVe(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function rVe(t,e){var r=iVe(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function tVe(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function V9e(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function _9e(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function X9e(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function Z9e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function $9e(t){return t.toString(this.encoding)}function eVe(t){return t&&t.length?this.write(t):""}});var cQ=E((QPt,aue)=>{"use strict";var Aue=VA().codes.ERR_STREAM_PREMATURE_CLOSE;function sVe(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{"use strict";var uQ;function ZA(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var AVe=cQ(),$A=Symbol("lastResolve"),qc=Symbol("lastReject"),im=Symbol("error"),gQ=Symbol("ended"),Jc=Symbol("lastPromise"),zT=Symbol("handlePromise"),Wc=Symbol("stream");function el(t,e){return{value:t,done:e}}function lVe(t){var e=t[$A];if(e!==null){var r=t[Wc].read();r!==null&&(t[Jc]=null,t[$A]=null,t[qc]=null,e(el(r,!1)))}}function cVe(t){process.nextTick(lVe,t)}function uVe(t,e){return function(r,i){t.then(function(){if(e[gQ]){r(el(void 0,!0));return}e[zT](r,i)},i)}}var gVe=Object.getPrototypeOf(function(){}),fVe=Object.setPrototypeOf((uQ={get stream(){return this[Wc]},next:function(){var e=this,r=this[im];if(r!==null)return Promise.reject(r);if(this[gQ])return Promise.resolve(el(void 0,!0));if(this[Wc].destroyed)return new Promise(function(o,a){process.nextTick(function(){e[im]?a(e[im]):o(el(void 0,!0))})});var i=this[Jc],n;if(i)n=new Promise(uVe(i,this));else{var s=this[Wc].read();if(s!==null)return Promise.resolve(el(s,!1));n=new Promise(this[zT])}return this[Jc]=n,n}},ZA(uQ,Symbol.asyncIterator,function(){return this}),ZA(uQ,"return",function(){var e=this;return new Promise(function(r,i){e[Wc].destroy(null,function(n){if(n){i(n);return}r(el(void 0,!0))})})}),uQ),gVe),hVe=function(e){var r,i=Object.create(fVe,(r={},ZA(r,Wc,{value:e,writable:!0}),ZA(r,$A,{value:null,writable:!0}),ZA(r,qc,{value:null,writable:!0}),ZA(r,im,{value:null,writable:!0}),ZA(r,gQ,{value:e._readableState.endEmitted,writable:!0}),ZA(r,zT,{value:function(s,o){var a=i[Wc].read();a?(i[Jc]=null,i[$A]=null,i[qc]=null,s(el(a,!1))):(i[$A]=s,i[qc]=o)},writable:!0}),r));return i[Jc]=null,AVe(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var s=i[qc];s!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,s(n)),i[im]=n;return}var o=i[$A];o!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,o(el(void 0,!0))),i[gQ]=!0}),e.on("readable",cVe.bind(null,i)),i};cue.exports=hVe});var pue=E((vPt,gue)=>{"use strict";function fue(t,e,r,i,n,s,o){try{var a=t[s](o),l=a.value}catch(c){r(c);return}a.done?e(l):Promise.resolve(l).then(i,n)}function pVe(t){return function(){var e=this,r=arguments;return new Promise(function(i,n){var s=t.apply(e,r);function o(l){fue(s,i,n,o,a,"next",l)}function a(l){fue(s,i,n,o,a,"throw",l)}o(void 0)})}}function hue(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function CVe(t){for(var e=1;e{"use strict";due.exports=kt;var Bf;kt.ReadableState=Cue;var SPt=require("events").EventEmitter,mue=function(e,r){return e.listeners(r).length},nm=PT(),fQ=require("buffer").Buffer,IVe=global.Uint8Array||function(){};function yVe(t){return fQ.from(t)}function wVe(t){return fQ.isBuffer(t)||t instanceof IVe}var VT=require("util"),Et;VT&&VT.debuglog?Et=VT.debuglog("stream"):Et=function(){};var BVe=Oce(),_T=FT(),QVe=NT(),bVe=QVe.getHighWaterMark,hQ=VA().codes,vVe=hQ.ERR_INVALID_ARG_TYPE,SVe=hQ.ERR_STREAM_PUSH_AFTER_EOF,xVe=hQ.ERR_METHOD_NOT_IMPLEMENTED,kVe=hQ.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Qf,XT,ZT;_A()(kt,nm);var sm=_T.errorOrDestroy,$T=["error","close","destroy","pause","resume"];function PVe(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function Cue(t,e,r){Bf=Bf||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof Bf),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=bVe(this,t,"readableHighWaterMark",r),this.buffer=new BVe,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Qf||(Qf=WT().StringDecoder),this.decoder=new Qf(t.encoding),this.encoding=t.encoding)}function kt(t){if(Bf=Bf||Yc(),!(this instanceof kt))return new kt(t);var e=this instanceof Bf;this._readableState=new Cue(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),nm.call(this)}Object.defineProperty(kt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});kt.prototype.destroy=_T.destroy;kt.prototype._undestroy=_T.undestroy;kt.prototype._destroy=function(t,e){e(t)};kt.prototype.push=function(t,e){var r=this._readableState,i;return r.objectMode?i=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=fQ.from(t,e),e=""),i=!0),Eue(this,t,e,!1,i)};kt.prototype.unshift=function(t){return Eue(this,t,null,!0,!1)};function Eue(t,e,r,i,n){Et("readableAddChunk",e);var s=t._readableState;if(e===null)s.reading=!1,RVe(t,s);else{var o;if(n||(o=DVe(s,e)),o)sm(t,o);else if(s.objectMode||e&&e.length>0)if(typeof e!="string"&&!s.objectMode&&Object.getPrototypeOf(e)!==fQ.prototype&&(e=yVe(e)),i)s.endEmitted?sm(t,new kVe):eM(t,s,e,!0);else if(s.ended)sm(t,new SVe);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||e.length!==0?eM(t,s,e,!1):tM(t,s)):eM(t,s,e,!1)}else i||(s.reading=!1,tM(t,s))}return!s.ended&&(s.length=Iue?t=Iue:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function yue(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=FVe(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}kt.prototype.read=function(t){Et("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return Et("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?rM(this):pQ(this),null;if(t=yue(t,e),t===0&&e.ended)return e.length===0&&rM(this),null;var i=e.needReadable;Et("need readable",i),(e.length===0||e.length-t0?n=wue(t,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&rM(this)),n!==null&&this.emit("data",n),n};function RVe(t,e){if(Et("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?pQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,Bue(t)))}}function pQ(t){var e=t._readableState;Et("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(Et("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(Bue,t))}function Bue(t){var e=t._readableState;Et("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,iM(t)}function tM(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(NVe,t,e))}function NVe(t,e){for(;!e.reading&&!e.ended&&(e.length1&&Que(i.pipes,t)!==-1)&&!c&&(Et("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(m){Et("onerror",m),d(),t.removeListener("error",f),mue(t,"error")===0&&sm(t,m)}PVe(t,"error",f);function h(){t.removeListener("finish",p),d()}t.once("close",h);function p(){Et("onfinish"),t.removeListener("close",h),d()}t.once("finish",p);function d(){Et("unpipe"),r.unpipe(t)}return t.emit("pipe",r),i.flowing||(Et("pipe resume"),r.resume()),t};function LVe(t){return function(){var r=t._readableState;Et("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&mue(t,"data")&&(r.flowing=!0,iM(t))}}kt.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var s=0;s0,i.flowing!==!1&&this.resume()):t==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,Et("on readable",i.length,i.reading),i.length?pQ(this):i.reading||process.nextTick(TVe,this)),r};kt.prototype.addListener=kt.prototype.on;kt.prototype.removeListener=function(t,e){var r=nm.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(bue,this),r};kt.prototype.removeAllListeners=function(t){var e=nm.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(bue,this),e};function bue(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function TVe(t){Et("readable nexttick read 0"),t.read(0)}kt.prototype.resume=function(){var t=this._readableState;return t.flowing||(Et("resume"),t.flowing=!t.readableListening,MVe(this,t)),t.paused=!1,this};function MVe(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(OVe,t,e))}function OVe(t,e){Et("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),iM(t),e.flowing&&!e.reading&&t.read(0)}kt.prototype.pause=function(){return Et("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Et("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function iM(t){var e=t._readableState;for(Et("flow",e.flowing);e.flowing&&t.read()!==null;);}kt.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;t.on("end",function(){if(Et("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),t.on("data",function(o){if(Et("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var a=e.push(o);a||(i=!0,t.pause())}});for(var n in t)this[n]===void 0&&typeof t[n]=="function"&&(this[n]=function(a){return function(){return t[a].apply(t,arguments)}}(n));for(var s=0;s<$T.length;s++)t.on($T[s],this.emit.bind(this,$T[s]));return this._read=function(o){Et("wrapped _read",o),i&&(i=!1,t.resume())},this};typeof Symbol=="function"&&(kt.prototype[Symbol.asyncIterator]=function(){return XT===void 0&&(XT=uue()),XT(this)});Object.defineProperty(kt.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(kt.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(kt.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});kt._fromList=wue;Object.defineProperty(kt.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function wue(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function rM(t){var e=t._readableState;Et("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(KVe,e,t))}function KVe(t,e){if(Et("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(kt.from=function(t,e){return ZT===void 0&&(ZT=pue()),ZT(kt,t,e)});function Que(t,e){for(var r=0,i=t.length;r{"use strict";vue.exports=Ja;var dQ=VA().codes,UVe=dQ.ERR_METHOD_NOT_IMPLEMENTED,HVe=dQ.ERR_MULTIPLE_CALLBACK,GVe=dQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,jVe=dQ.ERR_TRANSFORM_WITH_LENGTH_0,CQ=Yc();_A()(Ja,CQ);function YVe(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new HVe);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";xue.exports=om;var kue=nM();_A()(om,kue);function om(t){if(!(this instanceof om))return new om(t);kue.call(this,t)}om.prototype._transform=function(t,e,r){r(null,t)}});var Lue=E((DPt,Due)=>{"use strict";var sM;function JVe(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var Rue=VA().codes,WVe=Rue.ERR_MISSING_ARGS,zVe=Rue.ERR_STREAM_DESTROYED;function Fue(t){if(t)throw t}function VVe(t){return t.setHeader&&typeof t.abort=="function"}function _Ve(t,e,r,i){i=JVe(i);var n=!1;t.on("close",function(){n=!0}),sM===void 0&&(sM=cQ()),sM(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,VVe(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();i(o||new zVe("pipe"))}}}function Nue(t){t()}function XVe(t,e){return t.pipe(e)}function ZVe(t){return!t.length||typeof t[t.length-1]!="function"?Fue:t.pop()}function $Ve(){for(var t=arguments.length,e=new Array(t),r=0;r0;return _Ve(o,l,c,function(u){n||(n=u),u&&s.forEach(Nue),!l&&(s.forEach(Nue),i(n))})});return e.reduce(XVe)}Due.exports=$Ve});var bf=E((ys,am)=>{var Am=require("stream");process.env.READABLE_STREAM==="disable"&&Am?(am.exports=Am.Readable,Object.assign(am.exports,Am),am.exports.Stream=Am):(ys=am.exports=HT(),ys.Stream=Am||ys,ys.Readable=ys,ys.Writable=UT(),ys.Duplex=Yc(),ys.Transform=nM(),ys.PassThrough=Pue(),ys.finished=cQ(),ys.pipeline=Lue())});var Oue=E((RPt,Tue)=>{"use strict";var{Buffer:_s}=require("buffer"),Mue=Symbol.for("BufferList");function nr(t){if(!(this instanceof nr))return new nr(t);nr._init.call(this,t)}nr._init=function(e){Object.defineProperty(this,Mue,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};nr.prototype._new=function(e){return new nr(e)};nr.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let i=0;ithis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};nr.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};nr.prototype.copy=function(e,r,i,n){if((typeof i!="number"||i<0)&&(i=0),(typeof n!="number"||n>this.length)&&(n=this.length),i>=this.length||n<=0)return e||_s.alloc(0);let s=!!e,o=this._offset(i),a=n-i,l=a,c=s&&r||0,u=o[1];if(i===0&&n===this.length){if(!s)return this._bufs.length===1?this._bufs[0]:_s.concat(this._bufs,this.length);for(let g=0;gf)this._bufs[g].copy(e,c,u),c+=f;else{this._bufs[g].copy(e,c,u,u+l),c+=f;break}l-=f,u&&(u=0)}return e.length>c?e.slice(0,c):e};nr.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let i=this._offset(e),n=this._offset(r),s=this._bufs.slice(i[0],n[0]+1);return n[1]===0?s.pop():s[s.length-1]=s[s.length-1].slice(0,n[1]),i[1]!==0&&(s[0]=s[0].slice(i[1])),this._new(s)};nr.prototype.toString=function(e,r,i){return this.slice(r,i).toString(e)};nr.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};nr.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let i=this._offset(e),n=i[0],s=i[1];for(;n=t.length){let l=o.indexOf(t,s);if(l!==-1)return this._reverseOffset([n,l]);s=o.length-t.length+1}else{let l=this._reverseOffset([n,s]);if(this._match(l,t))return l;s++}s=0}return-1};nr.prototype._match=function(t,e){if(this.length-t{"use strict";var oM=bf().Duplex,e7e=_A(),lm=Oue();function Oi(t){if(!(this instanceof Oi))return new Oi(t);if(typeof t=="function"){this._callback=t;let e=function(i){this._callback&&(this._callback(i),this._callback=null)}.bind(this);this.on("pipe",function(i){i.on("error",e)}),this.on("unpipe",function(i){i.removeListener("error",e)}),t=null}lm._init.call(this,t),oM.call(this)}e7e(Oi,oM);Object.assign(Oi.prototype,lm.prototype);Oi.prototype._new=function(e){return new Oi(e)};Oi.prototype._write=function(e,r,i){this._appendBuffer(e),typeof i=="function"&&i()};Oi.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Oi.prototype.end=function(e){oM.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Oi.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Oi.prototype._isBufferList=function(e){return e instanceof Oi||e instanceof lm||Oi.isBufferList(e)};Oi.isBufferList=lm.isBufferList;mQ.exports=Oi;mQ.exports.BufferListStream=Oi;mQ.exports.BufferList=lm});var lM=E(vf=>{var t7e=Buffer.alloc,r7e="0000000000000000000",i7e="7777777777777777777",Uue="0".charCodeAt(0),Hue=Buffer.from("ustar\0","binary"),n7e=Buffer.from("00","binary"),s7e=Buffer.from("ustar ","binary"),o7e=Buffer.from(" \0","binary"),a7e=parseInt("7777",8),cm=257,aM=263,A7e=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},l7e=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},c7e=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},Gue=function(t,e,r,i){for(;re?i7e.slice(0,e)+" ":r7e.slice(0,e-t.length)+t+" "};function u7e(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],i=t.length-1;i>0;i--){var n=t[i];e?r.push(n):r.push(255-n)}var s=0,o=r.length;for(i=0;i=Math.pow(10,r)&&r++,e+r+t};vf.decodeLongPath=function(t,e){return Sf(t,0,t.length,e)};vf.encodePax=function(t){var e="";t.name&&(e+=AM(" path="+t.name+` -`)),t.linkname&&(e+=AM(" linkpath="+t.linkname+` -`));var r=t.pax;if(r)for(var i in r)e+=AM(" "+i+"="+r[i]+` -`);return Buffer.from(e)};vf.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var n=r.indexOf("/");if(n===-1)return null;i+=i?"/"+r.slice(0,n):r.slice(0,n),r=r.slice(n+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(i)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(tl(t.mode&a7e,6),100),e.write(tl(t.uid,6),108),e.write(tl(t.gid,6),116),e.write(tl(t.size,11),124),e.write(tl(t.mtime.getTime()/1e3|0,11),136),e[156]=Uue+c7e(t.type),t.linkname&&e.write(t.linkname,157),Hue.copy(e,cm),n7e.copy(e,aM),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(tl(t.devmajor||0,6),329),e.write(tl(t.devminor||0,6),337),i&&e.write(i,345),e.write(tl(jue(e),6),148),e)};vf.decode=function(t,e,r){var i=t[156]===0?0:t[156]-Uue,n=Sf(t,0,100,e),s=rl(t,100,8),o=rl(t,108,8),a=rl(t,116,8),l=rl(t,124,12),c=rl(t,136,12),u=l7e(i),g=t[157]===0?null:Sf(t,157,100,e),f=Sf(t,265,32),h=Sf(t,297,32),p=rl(t,329,8),d=rl(t,337,8),m=jue(t);if(m===8*32)return null;if(m!==rl(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(Hue.compare(t,cm,cm+6)===0)t[345]&&(n=Sf(t,345,155,e)+"/"+n);else if(!(s7e.compare(t,cm,cm+6)===0&&o7e.compare(t,aM,aM+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return i===0&&n&&n[n.length-1]==="/"&&(i=5),{name:n,mode:s,uid:o,gid:a,size:l,mtime:new Date(1e3*c),type:u,linkname:g,uname:f,gname:h,devmajor:p,devminor:d}}});var _ue=E((LPt,Yue)=>{var que=require("util"),g7e=Kue(),um=lM(),Jue=bf().Writable,Wue=bf().PassThrough,zue=function(){},Vue=function(t){return t&=511,t&&512-t},f7e=function(t,e){var r=new EQ(t,e);return r.end(),r},h7e=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},EQ=function(t,e){this._parent=t,this.offset=e,Wue.call(this,{autoDestroy:!1})};que.inherits(EQ,Wue);EQ.prototype.destroy=function(t){this._parent.destroy(t)};var Wa=function(t){if(!(this instanceof Wa))return new Wa(t);Jue.call(this,t),t=t||{},this._offset=0,this._buffer=g7e(),this._missing=0,this._partial=!1,this._onparse=zue,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,i=function(){e._continue()},n=function(f){if(e._locked=!1,f)return e.destroy(f);e._stream||i()},s=function(){e._stream=null;var f=Vue(e._header.size);f?e._parse(f,o):e._parse(512,g),e._locked||i()},o=function(){e._buffer.consume(Vue(e._header.size)),e._parse(512,g),i()},a=function(){var f=e._header.size;e._paxGlobal=um.decodePax(r.slice(0,f)),r.consume(f),s()},l=function(){var f=e._header.size;e._pax=um.decodePax(r.slice(0,f)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(f),s()},c=function(){var f=e._header.size;this._gnuLongPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},u=function(){var f=e._header.size;this._gnuLongLinkPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},g=function(){var f=e._offset,h;try{h=e._header=um.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(p){e.emit("error",p)}if(r.consume(512),!h){e._parse(512,g),i();return}if(h.type==="gnu-long-path"){e._parse(h.size,c),i();return}if(h.type==="gnu-long-link-path"){e._parse(h.size,u),i();return}if(h.type==="pax-global-header"){e._parse(h.size,a),i();return}if(h.type==="pax-header"){e._parse(h.size,l),i();return}if(e._gnuLongPath&&(h.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(h.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=h=h7e(h,e._pax),e._pax=null),e._locked=!0,!h.size||h.type==="directory"){e._parse(512,g),e.emit("entry",h,f7e(e,f),n);return}e._stream=new EQ(e,f),e.emit("entry",h,e._stream,n),e._parse(h.size,s),i()};this._onheader=g,this._parse(512,g)};que.inherits(Wa,Jue);Wa.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};Wa.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};Wa.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=zue,this._overflow?this._write(this._overflow,void 0,t):t()}};Wa.prototype._write=function(t,e,r){if(!this._destroyed){var i=this._stream,n=this._buffer,s=this._missing;if(t.length&&(this._partial=!0),t.lengths&&(o=t.slice(s),t=t.slice(0,s)),i?i.end(t):n.append(t),this._overflow=o,this._onparse()}};Wa.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};Yue.exports=Wa});var Zue=E((TPt,Xue)=>{Xue.exports=require("fs").constants||require("constants")});var ige=E((MPt,$ue)=>{var xf=Zue(),ege=tk(),IQ=_A(),p7e=Buffer.alloc,tge=bf().Readable,kf=bf().Writable,d7e=require("string_decoder").StringDecoder,yQ=lM(),C7e=parseInt("755",8),m7e=parseInt("644",8),rge=p7e(1024),cM=function(){},uM=function(t,e){e&=511,e&&t.push(rge.slice(0,512-e))};function E7e(t){switch(t&xf.S_IFMT){case xf.S_IFBLK:return"block-device";case xf.S_IFCHR:return"character-device";case xf.S_IFDIR:return"directory";case xf.S_IFIFO:return"fifo";case xf.S_IFLNK:return"symlink"}return"file"}var wQ=function(t){kf.call(this),this.written=0,this._to=t,this._destroyed=!1};IQ(wQ,kf);wQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};wQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var BQ=function(){kf.call(this),this.linkname="",this._decoder=new d7e("utf-8"),this._destroyed=!1};IQ(BQ,kf);BQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};BQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var gm=function(){kf.call(this),this._destroyed=!1};IQ(gm,kf);gm.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};gm.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Oo=function(t){if(!(this instanceof Oo))return new Oo(t);tge.call(this,t),this._drain=cM,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};IQ(Oo,tge);Oo.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=cM);var i=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=E7e(t.mode)),t.mode||(t.mode=t.type==="directory"?C7e:m7e),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var n=this.push(e);return uM(i,t.size),n?process.nextTick(r):this._drain=r,new gm}if(t.type==="symlink"&&!t.linkname){var s=new BQ;return ege(s,function(a){if(a)return i.destroy(),r(a);t.linkname=s.linkname,i._encode(t),r()}),s}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new gm;var o=new wQ(this);return this._stream=o,ege(o,function(a){if(i._stream=null,a)return i.destroy(),r(a);if(o.written!==t.size)return i.destroy(),r(new Error("size mismatch"));uM(i,t.size),i._finalizing&&i.finalize(),r()}),o}};Oo.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(rge),this.push(null))};Oo.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};Oo.prototype._encode=function(t){if(!t.pax){var e=yQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};Oo.prototype._encodePax=function(t){var e=yQ.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(yQ.encode(r)),this.push(e),uM(this,e.length),r.size=t.size,r.type=t.type,this.push(yQ.encode(r))};Oo.prototype._read=function(t){var e=this._drain;this._drain=cM,e()};$ue.exports=Oo});var nge=E(gM=>{gM.extract=_ue();gM.pack=ige()});var Cge=E((oDt,fge)=>{"use strict";var Pf=class{constructor(e,r,i){this.__specs=e||{},Object.keys(this.__specs).forEach(n=>{if(typeof this.__specs[n]=="string"){let s=this.__specs[n],o=this.__specs[s];if(o){let a=o.aliases||[];a.push(n,s),o.aliases=[...new Set(a)],this.__specs[n]=o}else throw new Error(`Alias refers to invalid key: ${s} -> ${n}`)}}),this.__opts=r||{},this.__providers=pge(i.filter(n=>n!=null&&typeof n=="object")),this.__isFiggyPudding=!0}get(e){return mM(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[i,n]of this.entries())e.call(r,n,i,this)}toJSON(){let e={};return this.forEach((r,i)=>{e[i]=r}),e}*entries(e){for(let i of Object.keys(this.__specs))yield[i,this.get(i)];let r=e||this.__opts.other;if(r){let i=new Set;for(let n of this.__providers){let s=n.entries?n.entries(r):R7e(n);for(let[o,a]of s)r(o)&&!i.has(o)&&(i.add(o),yield[o,a])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Pf(this.__specs,this.__opts,pge(this.__providers).concat(e)),hge)}};try{let t=require("util");Pf.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch(t){}function F7e(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function mM(t,e,r){let i=t.__specs[e];if(r&&!i&&(!t.__opts.other||!t.__opts.other(e)))F7e(e);else{i||(i={});let n;for(let s of t.__providers){if(n=dge(e,s),n===void 0&&i.aliases&&i.aliases.length){for(let o of i.aliases)if(o!==e&&(n=dge(o,s),n!==void 0))break}if(n!==void 0)break}return n===void 0&&i.default!==void 0?typeof i.default=="function"?i.default(t):i.default:n}}function dge(t,e){let r;return e.__isFiggyPudding?r=mM(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var hge={has(t,e){return e in t.__specs&&mM(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Pf.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};fge.exports=N7e;function N7e(t,e){function r(...i){return new Proxy(new Pf(t,e,i),hge)}return r}function pge(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function R7e(t){return Object.keys(t).map(e=>[e,t[e]])}});var Ige=E((aDt,Ko)=>{"use strict";var hm=require("crypto"),L7e=Cge(),T7e=require("stream").Transform,mge=["sha256","sha384","sha512"],M7e=/^[a-z0-9+/]+(?:=?=?)$/i,O7e=/^([^-]+)-([^?]+)([?\S*]*)$/,K7e=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,U7e=/^[\x21-\x7E]+$/,on=L7e({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>H7e},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),zc=class{get isHash(){return!0}constructor(e,r){r=on(r);let i=!!r.strict;this.source=e.trim();let n=this.source.match(i?K7e:O7e);if(!n||i&&!mge.some(o=>o===n[1]))return;this.algorithm=n[1],this.digest=n[2];let s=n[3];this.options=s?s.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=on(e),e.strict&&!(mge.some(i=>i===this.algorithm)&&this.digest.match(M7e)&&(this.options||[]).every(i=>i.match(U7e))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},Df=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=on(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(i=>this[i].map(n=>zc.prototype.toString.call(n,e)).filter(n=>n.length).join(r)).filter(i=>i.length).join(r)}concat(e,r){r=on(r);let i=typeof e=="string"?e:pm(e,r);return Uo(`${this.toString(r)} ${i}`,r)}hexDigest(){return Uo(this,{single:!0}).hexDigest()}match(e,r){r=on(r);let i=Uo(e,r),n=i.pickAlgorithm(r);return this[n]&&i[n]&&this[n].find(s=>i[n].find(o=>s.digest===o.digest))||!1}pickAlgorithm(e){e=on(e);let r=e.pickAlgorithm,i=Object.keys(this);if(!i.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return i.reduce((n,s)=>r(n,s)||n)}};Ko.exports.parse=Uo;function Uo(t,e){if(e=on(e),typeof t=="string")return EM(t,e);if(t.algorithm&&t.digest){let r=new Df;return r[t.algorithm]=[t],EM(pm(r,e),e)}else return EM(pm(t,e),e)}function EM(t,e){return e.single?new zc(t,e):t.trim().split(/\s+/).reduce((r,i)=>{let n=new zc(i,e);if(n.algorithm&&n.digest){let s=n.algorithm;r[s]||(r[s]=[]),r[s].push(n)}return r},new Df)}Ko.exports.stringify=pm;function pm(t,e){return e=on(e),t.algorithm&&t.digest?zc.prototype.toString.call(t,e):typeof t=="string"?pm(Uo(t,e),e):Df.prototype.toString.call(t,e)}Ko.exports.fromHex=G7e;function G7e(t,e,r){r=on(r);let i=r.options&&r.options.length?`?${r.options.join("?")}`:"";return Uo(`${e}-${Buffer.from(t,"hex").toString("base64")}${i}`,r)}Ko.exports.fromData=j7e;function j7e(t,e){e=on(e);let r=e.algorithms,i=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((n,s)=>{let o=hm.createHash(s).update(t).digest("base64"),a=new zc(`${s}-${o}${i}`,e);if(a.algorithm&&a.digest){let l=a.algorithm;n[l]||(n[l]=[]),n[l].push(a)}return n},new Df)}Ko.exports.fromStream=Y7e;function Y7e(t,e){e=on(e);let r=e.Promise||Promise,i=IM(e);return new r((n,s)=>{t.pipe(i),t.on("error",s),i.on("error",s);let o;i.on("integrity",a=>{o=a}),i.on("end",()=>n(o)),i.on("data",()=>{})})}Ko.exports.checkData=q7e;function q7e(t,e,r){if(r=on(r),e=Uo(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let i=e.pickAlgorithm(r),n=hm.createHash(i).update(t).digest("base64"),s=Uo({algorithm:i,digest:n}),o=s.match(e,r);if(o||!r.error)return o;if(typeof r.size=="number"&&t.length!==r.size){let a=new Error(`data size mismatch when checking ${e}. - Wanted: ${r.size} - Found: ${t.length}`);throw a.code="EBADSIZE",a.found=t.length,a.expected=r.size,a.sri=e,a}else{let a=new Error(`Integrity checksum failed when using ${i}: Wanted ${e}, but got ${s}. (${t.length} bytes)`);throw a.code="EINTEGRITY",a.found=s,a.expected=e,a.algorithm=i,a.sri=e,a}}Ko.exports.checkStream=J7e;function J7e(t,e,r){r=on(r);let i=r.Promise||Promise,n=IM(r.concat({integrity:e}));return new i((s,o)=>{t.pipe(n),t.on("error",o),n.on("error",o);let a;n.on("verified",l=>{a=l}),n.on("end",()=>s(a)),n.on("data",()=>{})})}Ko.exports.integrityStream=IM;function IM(t){t=on(t);let e=t.integrity&&Uo(t.integrity,t),r=e&&Object.keys(e).length,i=r&&e.pickAlgorithm(t),n=r&&e[i],s=Array.from(new Set(t.algorithms.concat(i?[i]:[]))),o=s.map(hm.createHash),a=0,l=new T7e({transform(c,u,g){a+=c.length,o.forEach(f=>f.update(c,u)),g(null,c,u)}}).on("end",()=>{let c=t.options&&t.options.length?`?${t.options.join("?")}`:"",u=Uo(o.map((f,h)=>`${s[h]}-${f.digest("base64")}${c}`).join(" "),t),g=r&&u.match(e,t);if(typeof t.size=="number"&&a!==t.size){let f=new Error(`stream size mismatch when checking ${e}. - Wanted: ${t.size} - Found: ${a}`);f.code="EBADSIZE",f.found=a,f.expected=t.size,f.sri=e,l.emit("error",f)}else if(t.integrity&&!g){let f=new Error(`${e} integrity checksum failed when using ${i}: wanted ${n} but got ${u}. (${a} bytes)`);f.code="EINTEGRITY",f.found=u,f.expected=n,f.algorithm=i,f.sri=e,l.emit("error",f)}else l.emit("size",a),l.emit("integrity",u),g&&l.emit("verified",g)});return l}Ko.exports.create=W7e;function W7e(t){t=on(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",i=e.map(hm.createHash);return{update:function(n,s){return i.forEach(o=>o.update(n,s)),this},digest:function(n){return e.reduce((o,a)=>{let l=i.shift().digest("base64"),c=new zc(`${a}-${l}${r}`,t);if(c.algorithm&&c.digest){let u=c.algorithm;o[u]||(o[u]=[]),o[u].push(c)}return o},new Df)}}}var z7e=new Set(hm.getHashes()),Ege=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>z7e.has(t));function H7e(t,e){return Ege.indexOf(t.toLowerCase())>=Ege.indexOf(e.toLowerCase())?t:e}});var Fd={};it(Fd,{BuildType:()=>Gn,Cache:()=>Qt,Configuration:()=>fe,DEFAULT_LOCK_FILENAME:()=>DR,DEFAULT_RC_FILENAME:()=>PR,FormatType:()=>ps,InstallMode:()=>li,LightReport:()=>Fa,LinkType:()=>gt,Manifest:()=>Ze,MessageName:()=>z,PackageExtensionStatus:()=>ki,PackageExtensionType:()=>oi,Project:()=>Ke,ProjectLookup:()=>KA,Report:()=>Xi,ReportError:()=>nt,SettingsType:()=>ge,StreamReport:()=>Fe,TAG_REGEXP:()=>Rg,TelemetryManager:()=>Rd,ThrowReport:()=>ei,VirtualFetcher:()=>dd,Workspace:()=>Dd,WorkspaceResolver:()=>Yr,YarnVersion:()=>Zr,execUtils:()=>hr,folderUtils:()=>Pb,formatUtils:()=>ue,hashUtils:()=>mn,httpUtils:()=>Zt,miscUtils:()=>de,scriptUtils:()=>Kt,semverUtils:()=>qt,structUtils:()=>S,tgzUtils:()=>Ai,treeUtils:()=>Hs});var hr={};it(hr,{EndStrategy:()=>Pn,execvp:()=>Nhe,pipevp:()=>to});var ch={};it(ch,{AliasFS:()=>Xo,CwdFS:()=>Ft,DEFAULT_COMPRESSION_LEVEL:()=>pl,FakeFS:()=>eA,Filename:()=>wt,JailFS:()=>Zo,LazyFS:()=>oh,LinkStrategy:()=>eh,NoFS:()=>bE,NodeFS:()=>Wt,PortablePath:()=>Se,PosixFS:()=>ah,ProxiedFS:()=>fi,VirtualFS:()=>Pr,ZipFS:()=>Jr,ZipOpenFS:()=>Jn,constants:()=>mr,extendFs:()=>SE,normalizeLineEndings:()=>ul,npath:()=>M,opendir:()=>wE,patchFs:()=>pb,ppath:()=>v,statUtils:()=>rb,toFilename:()=>kr,xfs:()=>T});var mr={};it(mr,{SAFE_TIME:()=>tb,S_IFDIR:()=>zo,S_IFLNK:()=>_o,S_IFMT:()=>kn,S_IFREG:()=>Vo});var kn=61440,zo=16384,Vo=32768,_o=40960,tb=456789e3;var rb={};it(rb,{BigIntStatsEntry:()=>Xf,DEFAULT_MODE:()=>_f,DirEntry:()=>uO,StatEntry:()=>Za,areStatsEqual:()=>nb,clearStats:()=>pE,convertToBigIntStats:()=>dE,makeDefaultStats:()=>Zf,makeEmptyStats:()=>Jfe});var ib=ie(require("util"));var _f=Vo|420,uO=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Za=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=_f;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Xf=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(_f);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(kn))===BigInt(zo)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(kn))===BigInt(Vo)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(kn))===BigInt(_o)}};function Zf(){return new Za}function Jfe(){return pE(Zf())}function pE(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):ib.types.isDate(r)&&(t[e]=new Date(0))}return t}function dE(t){let e=new Xf;for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let i=t[r];typeof i=="number"?e[r]=BigInt(i):ib.types.isDate(i)&&(e[r]=new Date(i))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function nb(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,i=e;return!(r.atimeNs!==i.atimeNs||r.mtimeNs!==i.mtimeNs||r.ctimeNs!==i.ctimeNs||r.birthtimeNs!==i.birthtimeNs)}var mE=ie(require("fs"));var $f=ie(require("path")),gO;(function(i){i[i.File=0]="File",i[i.Portable=1]="Portable",i[i.Native=2]="Native"})(gO||(gO={}));var Se={root:"/",dot:"."},wt={nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",rc:".yarnrc.yml"},M=Object.create($f.default),v=Object.create($f.default.posix);M.cwd=()=>process.cwd();v.cwd=()=>sb(process.cwd());v.resolve=(...t)=>t.length>0&&v.isAbsolute(t[0])?$f.default.posix.resolve(...t):$f.default.posix.resolve(v.cwd(),...t);var fO=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};M.fromPortablePath=hO;M.toPortablePath=sb;M.contains=(t,e)=>fO(M,t,e);v.contains=(t,e)=>fO(v,t,e);var Wfe=/^([a-zA-Z]:.*)$/,zfe=/^\\\\(\.\\)?(.*)$/,Vfe=/^\/([a-zA-Z]:.*)$/,_fe=/^\/unc\/(\.dot\/)?(.*)$/;function hO(t){if(process.platform!=="win32")return t;let e,r;if(e=t.match(Vfe))t=e[1];else if(r=t.match(_fe))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function sb(t){if(process.platform!=="win32")return t;let e,r;return(e=t.match(Wfe))?t=`/${e[1]}`:(r=t.match(zfe))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t.replace(/\\/g,"/")}function CE(t,e){return t===M?hO(e):sb(e)}function kr(t){if(M.parse(t).dir!==""||v.parse(t).dir!=="")throw new Error(`Invalid filename: "${t}"`);return t}var EE=new Date(tb*1e3),eh;(function(r){r.Allow="allow",r.ReadOnly="readOnly"})(eh||(eh={}));async function pO(t,e,r,i,n){let s=t.pathUtils.normalize(e),o=r.pathUtils.normalize(i),a=[],l=[],c=n.stableTime?{mtime:EE,atime:EE}:await r.lstatPromise(o);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[c.atime,c.mtime]});let u=typeof t.lutimesPromise=="function"?t.lutimesPromise.bind(t):t.utimesPromise.bind(t);await ob(a,l,u,t,s,r,o,n);for(let g of a)await g();await Promise.all(l.map(g=>g()))}async function ob(t,e,r,i,n,s,o,a){var f,h;let l=await Xfe(i,n),c=await s.lstatPromise(o),u=a.stableTime?{mtime:EE,atime:EE}:c,g;switch(!0){case c.isDirectory():g=await Zfe(t,e,r,i,n,l,s,o,c,a);break;case c.isFile():g=await $fe(t,e,r,i,n,l,s,o,c,a);break;case c.isSymbolicLink():g=await ehe(t,e,r,i,n,l,s,o,c,a);break;default:throw new Error(`Unsupported file type (${c.mode})`)}return(g||((f=l==null?void 0:l.mtime)==null?void 0:f.getTime())!==u.mtime.getTime()||((h=l==null?void 0:l.atime)==null?void 0:h.getTime())!==u.atime.getTime())&&(e.push(()=>r(n,u.atime,u.mtime)),g=!0),(l===null||(l.mode&511)!=(c.mode&511))&&(e.push(()=>i.chmodPromise(n,c.mode&511)),g=!0),g}async function Xfe(t,e){try{return await t.lstatPromise(e)}catch(r){return null}}async function Zfe(t,e,r,i,n,s,o,a,l,c){if(s!==null&&!s.isDirectory())if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=!1;s===null&&(t.push(async()=>{try{await i.mkdirPromise(n,{mode:l.mode})}catch(f){if(f.code!=="EEXIST")throw f}}),u=!0);let g=await o.readdirPromise(a);if(c.stableSort)for(let f of g.sort())await ob(t,e,r,i,i.pathUtils.join(n,f),o,o.pathUtils.join(a,f),c)&&(u=!0);else(await Promise.all(g.map(async h=>{await ob(t,e,r,i,i.pathUtils.join(n,h),o,o.pathUtils.join(a,h),c)}))).some(h=>h)&&(u=!0);return u}var ab=new WeakMap;function Ab(t,e,r,i,n){return async()=>{await t.linkPromise(r,e),n===eh.ReadOnly&&(i.mode&=~146,await t.chmodPromise(e,i.mode))}}function the(t,e,r,i,n){let s=ab.get(t);return typeof s=="undefined"?async()=>{try{await t.copyFilePromise(r,e,mE.default.constants.COPYFILE_FICLONE_FORCE),ab.set(t,!0)}catch(o){if(o.code==="ENOSYS"||o.code==="ENOTSUP")ab.set(t,!1),await Ab(t,e,r,i,n)();else throw o}}:s?async()=>t.copyFilePromise(r,e,mE.default.constants.COPYFILE_FICLONE_FORCE):Ab(t,e,r,i,n)}async function $fe(t,e,r,i,n,s,o,a,l,c){var f;if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=(f=c.linkStrategy)!=null?f:null,g=i===o?u!==null?the(i,n,a,l,u):async()=>i.copyFilePromise(a,n,mE.default.constants.COPYFILE_FICLONE):u!==null?Ab(i,n,a,l,u):async()=>i.writeFilePromise(n,await o.readFilePromise(a));return t.push(async()=>g()),!0}async function ehe(t,e,r,i,n,s,o,a,l,c){if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;return t.push(async()=>{await i.symlinkPromise(CE(i.pathUtils,await o.readlinkPromise(a)),n)}),!0}function qn(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function IE(t){return qn("EBUSY",t)}function th(t,e){return qn("ENOSYS",`${t}, ${e}`)}function $a(t){return qn("EINVAL",`invalid argument, ${t}`)}function Hi(t){return qn("EBADF",`bad file descriptor, ${t}`)}function bs(t){return qn("ENOENT",`no such file or directory, ${t}`)}function eo(t){return qn("ENOTDIR",`not a directory, ${t}`)}function rh(t){return qn("EISDIR",`illegal operation on a directory, ${t}`)}function yE(t){return qn("EEXIST",`file already exists, ${t}`)}function ln(t){return qn("EROFS",`read-only filesystem, ${t}`)}function dO(t){return qn("ENOTEMPTY",`directory not empty, ${t}`)}function CO(t){return qn("EOPNOTSUPP",`operation not supported, ${t}`)}function mO(){return qn("ERR_DIR_CLOSED","Directory handle was closed")}var lb=class extends Error{constructor(e,r){super(e);this.name="Libzip Error",this.code=r}};var EO=class{constructor(e,r,i={}){this.path=e;this.nextDirent=r;this.opts=i;this.closed=!1}throwIfClosed(){if(this.closed)throw mO()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e!="undefined"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e!="undefined"?e(null):Promise.resolve()}closeSync(){var e,r;this.throwIfClosed(),(r=(e=this.opts).onClose)==null||r.call(e),this.closed=!0}};function wE(t,e,r,i){let n=()=>{let s=r.shift();return typeof s=="undefined"?null:Object.assign(t.statSync(t.pathUtils.join(e,s)),{name:s})};return new EO(e,n,i)}var IO=ie(require("os"));var eA=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let i=[e];for(;i.length>0;){let n=i.shift();if((await this.lstatPromise(n)).isDirectory()){let o=await this.readdirPromise(n);if(r)for(let a of o.sort())i.push(this.pathUtils.join(n,a));else throw new Error("Not supported")}else yield n}}async removePromise(e,{recursive:r=!0,maxRetries:i=5}={}){let n;try{n=await this.lstatPromise(e)}catch(s){if(s.code==="ENOENT")return;throw s}if(n.isDirectory()){if(r){let o=await this.readdirPromise(e);await Promise.all(o.map(a=>this.removePromise(this.pathUtils.resolve(e,a))))}let s=0;do try{await this.rmdirPromise(e);break}catch(o){if(o.code==="EBUSY"||o.code==="ENOTEMPTY"){if(i===0)break;await new Promise(a=>setTimeout(a,s*100));continue}else throw o}while(s++{let l;try{[l]=await this.readJsonPromise(i)}catch(c){return Date.now()-s<500}try{return process.kill(l,0),!0}catch(c){return!1}};for(;o===null;)try{o=await this.openPromise(i,"wx")}catch(l){if(l.code==="EEXIST"){if(!await a())try{await this.unlinkPromise(i);continue}catch(c){}if(Date.now()-s<60*1e3)await new Promise(c=>setTimeout(c,n));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${i})`)}else throw l}await this.writePromise(o,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(o),await this.unlinkPromise(i)}catch(l){}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}async writeJsonPromise(e,r){return await this.writeFilePromise(e,`${JSON.stringify(r,null,2)} -`)}writeJsonSync(e,r){return this.writeFileSync(e,`${JSON.stringify(r,null,2)} -`)}async preserveTimePromise(e,r){let i=await this.lstatPromise(e),n=await r();typeof n!="undefined"&&(e=n),this.lutimesPromise?await this.lutimesPromise(e,i.atime,i.mtime):i.isSymbolicLink()||await this.utimesPromise(e,i.atime,i.mtime)}async preserveTimeSync(e,r){let i=this.lstatSync(e),n=r();typeof n!="undefined"&&(e=n),this.lutimesSync?this.lutimesSync(e,i.atime,i.mtime):i.isSymbolicLink()||this.utimesSync(e,i.atime,i.mtime)}},gl=class extends eA{constructor(){super(v)}};function rhe(t){let e=t.match(/\r?\n/g);if(e===null)return IO.EOL;let r=e.filter(n=>n===`\r -`).length,i=e.length-r;return r>i?`\r -`:` -`}function ul(t,e){return e.replace(/\r?\n/g,rhe(t))}var $c=ie(require("fs")),cb=ie(require("stream")),QO=ie(require("util")),ub=ie(require("zlib"));var yO=ie(require("fs"));var Wt=class extends gl{constructor(e=yO.default){super();this.realFs=e,typeof this.realFs.lutimes!="undefined"&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return Se.root}resolve(e){return v.resolve(e)}async openPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.open(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}openSync(e,r,i){return this.realFs.openSync(M.fromPortablePath(e),r,i)}async opendirPromise(e,r){return await new Promise((i,n)=>{typeof r!="undefined"?this.realFs.opendir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.opendir(M.fromPortablePath(e),this.makeCallback(i,n))}).then(i=>Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0}))}opendirSync(e,r){let i=typeof r!="undefined"?this.realFs.opendirSync(M.fromPortablePath(e),r):this.realFs.opendirSync(M.fromPortablePath(e));return Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0})}async readPromise(e,r,i=0,n=0,s=-1){return await new Promise((o,a)=>{this.realFs.read(e,r,i,n,s,(l,c)=>{l?a(l):o(c)})})}readSync(e,r,i,n,s){return this.realFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return await new Promise((o,a)=>typeof r=="string"?this.realFs.write(e,r,i,this.makeCallback(o,a)):this.realFs.write(e,r,i,n,s,this.makeCallback(o,a)))}writeSync(e,r,i,n,s){return typeof r=="string"?this.realFs.writeSync(e,r,i):this.realFs.writeSync(e,r,i,n,s)}async closePromise(e){await new Promise((r,i)=>{this.realFs.close(e,this.makeCallback(r,i))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createReadStream(i,r)}createWriteStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createWriteStream(i,r)}async realpathPromise(e){return await new Promise((r,i)=>{this.realFs.realpath(M.fromPortablePath(e),{},this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}realpathSync(e){return M.toPortablePath(this.realFs.realpathSync(M.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(M.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(M.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((i,n)=>{this.realFs.access(M.fromPortablePath(e),r,this.makeCallback(i,n))})}existsSync(e){return this.realFs.existsSync(M.fromPortablePath(e))}async statPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.stat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.stat(M.fromPortablePath(e),this.makeCallback(i,n))})}statSync(e,r){return r?this.realFs.statSync(M.fromPortablePath(e),r):this.realFs.statSync(M.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.fstat(e,r,this.makeCallback(i,n)):this.realFs.fstat(e,this.makeCallback(i,n))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.lstat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.lstat(M.fromPortablePath(e),this.makeCallback(i,n))})}lstatSync(e,r){return r?this.realFs.lstatSync(M.fromPortablePath(e),r):this.realFs.lstatSync(M.fromPortablePath(e))}async chmodPromise(e,r){return await new Promise((i,n)=>{this.realFs.chmod(M.fromPortablePath(e),r,this.makeCallback(i,n))})}chmodSync(e,r){return this.realFs.chmodSync(M.fromPortablePath(e),r)}async chownPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.chown(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}chownSync(e,r,i){return this.realFs.chownSync(M.fromPortablePath(e),r,i)}async renamePromise(e,r){return await new Promise((i,n)=>{this.realFs.rename(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}renameSync(e,r){return this.realFs.renameSync(M.fromPortablePath(e),M.fromPortablePath(r))}async copyFilePromise(e,r,i=0){return await new Promise((n,s)=>{this.realFs.copyFile(M.fromPortablePath(e),M.fromPortablePath(r),i,this.makeCallback(n,s))})}copyFileSync(e,r,i=0){return this.realFs.copyFileSync(M.fromPortablePath(e),M.fromPortablePath(r),i)}async appendFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFile(o,r,i,this.makeCallback(n,s)):this.realFs.appendFile(o,r,this.makeCallback(n,s))})}appendFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFileSync(n,r,i):this.realFs.appendFileSync(n,r)}async writeFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFile(o,r,i,this.makeCallback(n,s)):this.realFs.writeFile(o,r,this.makeCallback(n,s))})}writeFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFileSync(n,r,i):this.realFs.writeFileSync(n,r)}async unlinkPromise(e){return await new Promise((r,i)=>{this.realFs.unlink(M.fromPortablePath(e),this.makeCallback(r,i))})}unlinkSync(e){return this.realFs.unlinkSync(M.fromPortablePath(e))}async utimesPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.utimes(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}utimesSync(e,r,i){this.realFs.utimesSync(M.fromPortablePath(e),r,i)}async lutimesPromiseImpl(e,r,i){let n=this.realFs.lutimes;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);return await new Promise((s,o)=>{n.call(this.realFs,M.fromPortablePath(e),r,i,this.makeCallback(s,o))})}lutimesSyncImpl(e,r,i){let n=this.realFs.lutimesSync;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);n.call(this.realFs,M.fromPortablePath(e),r,i)}async mkdirPromise(e,r){return await new Promise((i,n)=>{this.realFs.mkdir(M.fromPortablePath(e),r,this.makeCallback(i,n))})}mkdirSync(e,r){return this.realFs.mkdirSync(M.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.rmdir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.rmdir(M.fromPortablePath(e),this.makeCallback(i,n))})}rmdirSync(e,r){return this.realFs.rmdirSync(M.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((i,n)=>{this.realFs.link(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}linkSync(e,r){return this.realFs.linkSync(M.fromPortablePath(e),M.fromPortablePath(r))}async symlinkPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.symlink(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i,this.makeCallback(n,s))})}symlinkSync(e,r,i){return this.realFs.symlinkSync(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i)}async readFilePromise(e,r){return await new Promise((i,n)=>{let s=typeof e=="string"?M.fromPortablePath(e):e;this.realFs.readFile(s,r,this.makeCallback(i,n))})}readFileSync(e,r){let i=typeof e=="string"?M.fromPortablePath(e):e;return this.realFs.readFileSync(i,r)}async readdirPromise(e,r){return await new Promise((i,n)=>{(r==null?void 0:r.withFileTypes)?this.realFs.readdir(M.fromPortablePath(e),{withFileTypes:!0},this.makeCallback(i,n)):this.realFs.readdir(M.fromPortablePath(e),this.makeCallback(s=>i(s),n))})}readdirSync(e,r){return(r==null?void 0:r.withFileTypes)?this.realFs.readdirSync(M.fromPortablePath(e),{withFileTypes:!0}):this.realFs.readdirSync(M.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,i)=>{this.realFs.readlink(M.fromPortablePath(e),this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}readlinkSync(e){return M.toPortablePath(this.realFs.readlinkSync(M.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((i,n)=>{this.realFs.truncate(M.fromPortablePath(e),r,this.makeCallback(i,n))})}truncateSync(e,r){return this.realFs.truncateSync(M.fromPortablePath(e),r)}watch(e,r,i){return this.realFs.watch(M.fromPortablePath(e),r,i)}watchFile(e,r,i){return this.realFs.watchFile(M.fromPortablePath(e),r,i)}unwatchFile(e,r){return this.realFs.unwatchFile(M.fromPortablePath(e),r)}makeCallback(e,r){return(i,n)=>{i?r(i):e(n)}}};var wO=ie(require("events"));var fl;(function(r){r.Change="change",r.Stop="stop"})(fl||(fl={}));var hl;(function(i){i.Ready="ready",i.Running="running",i.Stopped="stopped"})(hl||(hl={}));function BO(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var ih=class extends wO.EventEmitter{constructor(e,r,{bigint:i=!1}={}){super();this.status=hl.Ready;this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=e,this.path=r,this.bigint=i,this.lastStats=this.stat()}static create(e,r,i){let n=new ih(e,r,i);return n.start(),n}start(){BO(this.status,hl.Ready),this.status=hl.Running,this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(fl.Change,this.lastStats,this.lastStats)},3)}stop(){BO(this.status,hl.Running),this.status=hl.Stopped,this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(fl.Stop)}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch(e){let r=this.bigint?new Xf:new Za;return pE(r)}}makeInterval(e){let r=setInterval(()=>{let i=this.stat(),n=this.lastStats;nb(i,n)||(this.lastStats=i,this.emit(fl.Change,i,n))},e.interval);return e.persistent?r:r.unref()}registerChangeListener(e,r){this.addListener(fl.Change,e),this.changeListeners.set(e,this.makeInterval(r))}unregisterChangeListener(e){this.removeListener(fl.Change,e);let r=this.changeListeners.get(e);typeof r!="undefined"&&clearInterval(r),this.changeListeners.delete(e)}unregisterAllChangeListeners(){for(let e of this.changeListeners.keys())this.unregisterChangeListener(e)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let e of this.changeListeners.values())e.ref();return this}unref(){for(let e of this.changeListeners.values())e.unref();return this}};var BE=new WeakMap;function QE(t,e,r,i){let n,s,o,a;switch(typeof r){case"function":n=!1,s=!0,o=5007,a=r;break;default:({bigint:n=!1,persistent:s=!0,interval:o=5007}=r),a=i;break}let l=BE.get(t);typeof l=="undefined"&&BE.set(t,l=new Map);let c=l.get(e);return typeof c=="undefined"&&(c=ih.create(t,e,{bigint:n}),l.set(e,c)),c.registerChangeListener(a,{persistent:s,interval:o}),c}function nh(t,e,r){let i=BE.get(t);if(typeof i=="undefined")return;let n=i.get(e);typeof n!="undefined"&&(typeof r=="undefined"?n.unregisterAllChangeListeners():n.unregisterChangeListener(r),n.hasChangeListeners()||(n.stop(),i.delete(e)))}function sh(t){let e=BE.get(t);if(typeof e!="undefined")for(let r of e.keys())nh(t,r)}var pl="mixed";function ihe(t){if(typeof t=="string"&&String(+t)===t)return+t;if(Number.isFinite(t))return t<0?Date.now()/1e3:t;if((0,QO.isDate)(t))return t.getTime()/1e3;throw new Error("Invalid time")}function bO(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Jr=class extends gl{constructor(e,r){super();this.lzSource=null;this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;this.libzip=r.libzip;let i=r;if(this.level=typeof i.level!="undefined"?i.level:pl,e!=null||(e=bO()),typeof e=="string"){let{baseFs:o=new Wt}=i;this.baseFs=o,this.path=e}else this.path=null,this.baseFs=null;if(r.stats)this.stats=r.stats;else if(typeof e=="string")try{this.stats=this.baseFs.statSync(e)}catch(o){if(o.code==="ENOENT"&&i.create)this.stats=Zf();else throw o}else this.stats=Zf();let n=this.libzip.malloc(4);try{let o=0;if(typeof e=="string"&&i.create&&(o|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),r.readOnly&&(o|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof e=="string")this.zip=this.libzip.open(M.fromPortablePath(e),o,n);else{let a=this.allocateUnattachedSource(e);try{this.zip=this.libzip.openFromSource(a,o,n),this.lzSource=a}catch(l){throw this.libzip.source.free(a),l}}if(this.zip===0){let a=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(a,this.libzip.getValue(n,"i32")),this.makeLibzipError(a)}}finally{this.libzip.free(n)}this.listings.set(Se.root,new Set);let s=this.libzip.getNumEntries(this.zip,0);for(let o=0;oe)throw new Error("Overread");let n=this.libzip.HEAPU8.subarray(r,r+e);return Buffer.from(n)}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw IE("archive closed, close");sh(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let e=this.baseFs.existsSync(this.path)||this.stats.mode===_f?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,bO(),{mode:e});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof e!="undefined"&&this.baseFs.chmodSync(this.path,e)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(e){return v.resolve(Se.root,e)}async openPromise(e,r,i){return this.openSync(e,r,i)}openSync(e,r,i){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:e}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(e,r){return this.opendirSync(e,r)}opendirSync(e,r={}){let i=this.resolveFilename(`opendir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`opendir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`opendir '${e}'`);let s=[...n],o=this.openSync(i,"r");return wE(this,i,s,{onClose:()=>{this.closeSync(o)}})}async readPromise(e,r,i,n,s){return this.readSync(e,r,i,n,s)}readSync(e,r,i=0,n=r.byteLength,s=-1){let o=this.fds.get(e);if(typeof o=="undefined")throw Hi("read");let a;s===-1||s===null?a=o.cursor:a=s;let l=this.readFileSync(o.p);l.copy(r,i,a,a+n);let c=Math.max(0,Math.min(l.length-a,n));return(s===-1||s===null)&&(o.cursor+=c),c}async writePromise(e,r,i,n,s){return typeof r=="string"?this.writeSync(e,r,s):this.writeSync(e,r,i,n,s)}writeSync(e,r,i,n,s){throw typeof this.fds.get(e)=="undefined"?Hi("read"):new Error("Unimplemented")}async closePromise(e){return this.closeSync(e)}closeSync(e){if(typeof this.fds.get(e)=="undefined")throw Hi("read");this.fds.delete(e)}createReadStream(e,{encoding:r}={}){if(e===null)throw new Error("Unimplemented");let i=this.openSync(e,"r"),n=Object.assign(new cb.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(o,a)=>{clearImmediate(s),this.closeSync(i),a(o)}}),{close(){n.destroy()},bytesRead:0,path:e}),s=setImmediate(async()=>{try{let o=await this.readFilePromise(e,r);n.bytesRead=o.length,n.end(o)}catch(o){n.destroy(o)}});return n}createWriteStream(e,{encoding:r}={}){if(this.readOnly)throw ln(`open '${e}'`);if(e===null)throw new Error("Unimplemented");let i=[],n=this.openSync(e,"w"),s=Object.assign(new cb.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(o,a)=>{try{o?a(o):(this.writeFileSync(e,Buffer.concat(i),r),a(null))}catch(l){a(l)}finally{this.closeSync(n)}}}),{bytesWritten:0,path:e,close(){s.destroy()}});return s.on("data",o=>{let a=Buffer.from(o);s.bytesWritten+=a.length,i.push(a)}),s}async realpathPromise(e){return this.realpathSync(e)}realpathSync(e){let r=this.resolveFilename(`lstat '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`lstat '${e}'`);return r}async existsPromise(e){return this.existsSync(e)}existsSync(e){if(!this.ready)throw IE(`archive closed, existsSync '${e}'`);if(this.symlinkCount===0){let i=v.resolve(Se.root,e);return this.entries.has(i)||this.listings.has(i)}let r;try{r=this.resolveFilename(`stat '${e}'`,e)}catch(i){return!1}return this.entries.has(r)||this.listings.has(r)}async accessPromise(e,r){return this.accessSync(e,r)}accessSync(e,r=$c.constants.F_OK){let i=this.resolveFilename(`access '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`access '${e}'`);if(this.readOnly&&r&$c.constants.W_OK)throw ln(`access '${e}'`)}async statPromise(e,r){return this.statSync(e,r)}statSync(e,r){let i=this.resolveFilename(`stat '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`stat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`stat '${e}'`);return this.statImpl(`stat '${e}'`,i,r)}async fstatPromise(e,r){return this.fstatSync(e,r)}fstatSync(e,r){let i=this.fds.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let{p:n}=i,s=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(s)&&!this.listings.has(s))throw bs(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(s))throw eo(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,s,r)}async lstatPromise(e,r){return this.lstatSync(e,r)}lstatSync(e,r){let i=this.resolveFilename(`lstat '${e}'`,e,!1);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`lstat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`lstat '${e}'`);return this.statImpl(`lstat '${e}'`,i,r)}statImpl(e,r,i={}){let n=this.entries.get(r);if(typeof n!="undefined"){let s=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.stats.uid,l=this.stats.gid,c=this.libzip.struct.statSize(s)>>>0,u=512,g=Math.ceil(c/u),f=(this.libzip.struct.statMtime(s)>>>0)*1e3,h=f,p=f,d=f,m=new Date(h),I=new Date(p),B=new Date(d),b=new Date(f),R=this.listings.has(r)?zo:this.isSymbolicLink(n)?_o:Vo,H=R===zo?493:420,L=R|this.getUnixMode(n,H)&511,K=this.libzip.struct.statCrc(s),J=Object.assign(new Za,{uid:a,gid:l,size:c,blksize:u,blocks:g,atime:m,birthtime:I,ctime:B,mtime:b,atimeMs:h,birthtimeMs:p,ctimeMs:d,mtimeMs:f,mode:L,crc:K});return i.bigint===!0?dE(J):J}if(this.listings.has(r)){let s=this.stats.uid,o=this.stats.gid,a=0,l=512,c=0,u=this.stats.mtimeMs,g=this.stats.mtimeMs,f=this.stats.mtimeMs,h=this.stats.mtimeMs,p=new Date(u),d=new Date(g),m=new Date(f),I=new Date(h),B=zo|493,b=0,R=Object.assign(new Za,{uid:s,gid:o,size:a,blksize:l,blocks:c,atime:p,birthtime:d,ctime:m,mtime:I,atimeMs:u,birthtimeMs:g,ctimeMs:f,mtimeMs:h,mode:B,crc:b});return i.bigint===!0?dE(R):R}throw new Error("Unreachable")}getUnixMode(e,r){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?r:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(e){let r=this.listings.get(e);if(r)return r;let i=this.registerListing(v.dirname(e));return r=new Set,i.add(v.basename(e)),this.listings.set(e,r),r}registerEntry(e,r){this.registerListing(v.dirname(e)).add(v.basename(e)),this.entries.set(e,r)}unregisterListing(e){this.listings.delete(e);let r=this.listings.get(v.dirname(e));r==null||r.delete(v.basename(e))}unregisterEntry(e){this.unregisterListing(e);let r=this.entries.get(e);this.entries.delete(e),typeof r!="undefined"&&(this.fileSources.delete(r),this.isSymbolicLink(r)&&this.symlinkCount--)}deleteEntry(e,r){if(this.unregisterEntry(e),this.libzip.delete(this.zip,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(e,r,i=!0){if(!this.ready)throw IE(`archive closed, ${e}`);let n=v.resolve(Se.root,r);if(n==="/")return Se.root;let s=this.entries.get(n);if(i&&s!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(s)){let o=this.getFileSource(s).toString();return this.resolveFilename(e,v.resolve(v.dirname(n),o),!0)}else return n;for(;;){let o=this.resolveFilename(e,v.dirname(n),!0),a=this.listings.has(o),l=this.entries.has(o);if(!a&&!l)throw bs(e);if(!a)throw eo(e);if(n=v.resolve(o,v.basename(n)),!i||this.symlinkCount===0)break;let c=this.libzip.name.locate(this.zip,n.slice(1));if(c===-1)break;if(this.isSymbolicLink(c)){let u=this.getFileSource(c).toString();n=v.resolve(v.dirname(n),u)}else break}return n}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:i,byteLength:n}=this.allocateBuffer(e),s=this.libzip.source.fromUnattachedBuffer(i,n,0,!0,r);if(s===0)throw this.libzip.free(r),this.makeLibzipError(r);return s}allocateSource(e){let{buffer:r,byteLength:i}=this.allocateBuffer(e),n=this.libzip.source.fromBuffer(this.zip,r,i,0,!0);if(n===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(e,r){let i=Buffer.isBuffer(r)?r:Buffer.from(r),n=v.relative(Se.root,e),s=this.allocateSource(r);try{let o=this.libzip.file.add(this.zip,n,s,this.libzip.ZIP_FL_OVERWRITE);if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let a;if(this.level===0?a=this.libzip.ZIP_CM_STORE:a=this.libzip.ZIP_CM_DEFLATE,this.libzip.file.setCompression(this.zip,o,0,a,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(o,i),o}catch(o){throw this.libzip.source.free(s),o}}isSymbolicLink(e){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&kn)===_o}getFileSource(e,r={asyncDecompress:!1}){let i=this.fileSources.get(e);if(typeof i!="undefined")return i;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let o=this.libzip.struct.statCompSize(n),a=this.libzip.struct.statCompMethod(n),l=this.libzip.malloc(o);try{let c=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(c===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let u=this.libzip.fread(c,l,o,0);if(u===-1)throw this.makeLibzipError(this.libzip.file.getError(c));if(uo)throw new Error("Overread");let g=this.libzip.HEAPU8.subarray(l,l+o),f=Buffer.from(g);if(a===0)return this.fileSources.set(e,f),f;if(r.asyncDecompress)return new Promise((h,p)=>{ub.default.inflateRaw(f,(d,m)=>{d?p(d):(this.fileSources.set(e,m),h(m))})});{let h=ub.default.inflateRawSync(f);return this.fileSources.set(e,h),h}}finally{this.libzip.fclose(c)}}finally{this.libzip.free(l)}}async chmodPromise(e,r){return this.chmodSync(e,r)}chmodSync(e,r){if(this.readOnly)throw ln(`chmod '${e}'`);r&=493;let i=this.resolveFilename(`chmod '${e}'`,e,!1),n=this.entries.get(i);if(typeof n=="undefined")throw new Error(`Assertion failed: The entry should have been registered (${i})`);let o=this.getUnixMode(n,Vo|0)&~511|r;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,o<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async chownPromise(e,r,i){return this.chownSync(e,r,i)}chownSync(e,r,i){throw new Error("Unimplemented")}async renamePromise(e,r){return this.renameSync(e,r)}renameSync(e,r){throw new Error("Unimplemented")}async copyFilePromise(e,r,i){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=await this.getFileSource(n,{asyncDecompress:!0}),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}copyFileSync(e,r,i=0){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=this.getFileSource(n),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}prepareCopyFile(e,r,i=0){if(this.readOnly)throw ln(`copyfile '${e} -> '${r}'`);if((i&$c.constants.COPYFILE_FICLONE_FORCE)!=0)throw th("unsupported clone operation",`copyfile '${e}' -> ${r}'`);let n=this.resolveFilename(`copyfile '${e} -> ${r}'`,e),s=this.entries.get(n);if(typeof s=="undefined")throw $a(`copyfile '${e}' -> '${r}'`);let o=this.resolveFilename(`copyfile '${e}' -> ${r}'`,r),a=this.entries.get(o);if((i&($c.constants.COPYFILE_EXCL|$c.constants.COPYFILE_FICLONE_FORCE))!=0&&typeof a!="undefined")throw yE(`copyfile '${e}' -> '${r}'`);return{indexSource:s,resolvedDestP:o,indexDest:a}}async appendFilePromise(e,r,i){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFilePromise(e,r,i)}appendFileSync(e,r,i={}){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFileSync(e,r,i)}fdToPath(e,r){var n;let i=(n=this.fds.get(e))==null?void 0:n.p;if(typeof i=="undefined")throw Hi(r);return i}async writeFilePromise(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([await this.getFileSource(o,{asyncDecompress:!0}),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&await this.chmodPromise(a,s)}writeFileSync(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([this.getFileSource(o),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&this.chmodSync(a,s)}prepareWriteFile(e,r){if(typeof e=="number"&&(e=this.fdToPath(e,"read")),this.readOnly)throw ln(`open '${e}'`);let i=this.resolveFilename(`open '${e}'`,e);if(this.listings.has(i))throw rh(`open '${e}'`);let n=null,s=null;typeof r=="string"?n=r:typeof r=="object"&&({encoding:n=null,mode:s=null}=r);let o=this.entries.get(i);return{encoding:n,mode:s,resolvedP:i,index:o}}async unlinkPromise(e){return this.unlinkSync(e)}unlinkSync(e){if(this.readOnly)throw ln(`unlink '${e}'`);let r=this.resolveFilename(`unlink '${e}'`,e);if(this.listings.has(r))throw rh(`unlink '${e}'`);let i=this.entries.get(r);if(typeof i=="undefined")throw $a(`unlink '${e}'`);this.deleteEntry(r,i)}async utimesPromise(e,r,i){return this.utimesSync(e,r,i)}utimesSync(e,r,i){if(this.readOnly)throw ln(`utimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e);this.utimesImpl(n,i)}async lutimesPromise(e,r,i){return this.lutimesSync(e,r,i)}lutimesSync(e,r,i){if(this.readOnly)throw ln(`lutimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e,!1);this.utimesImpl(n,i)}utimesImpl(e,r){this.listings.has(e)&&(this.entries.has(e)||this.hydrateDirectory(e));let i=this.entries.get(e);if(i===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,i,0,ihe(r),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(e,r){return this.mkdirSync(e,r)}mkdirSync(e,{mode:r=493,recursive:i=!1}={}){if(i){this.mkdirpSync(e,{chmod:r});return}if(this.readOnly)throw ln(`mkdir '${e}'`);let n=this.resolveFilename(`mkdir '${e}'`,e);if(this.entries.has(n)||this.listings.has(n))throw yE(`mkdir '${e}'`);this.hydrateDirectory(n),this.chmodSync(n,r)}async rmdirPromise(e,r){return this.rmdirSync(e,r)}rmdirSync(e,{recursive:r=!1}={}){if(this.readOnly)throw ln(`rmdir '${e}'`);if(r){this.removeSync(e);return}let i=this.resolveFilename(`rmdir '${e}'`,e),n=this.listings.get(i);if(!n)throw eo(`rmdir '${e}'`);if(n.size>0)throw dO(`rmdir '${e}'`);let s=this.entries.get(i);if(typeof s=="undefined")throw $a(`rmdir '${e}'`);this.deleteEntry(e,s)}hydrateDirectory(e){let r=this.libzip.dir.add(this.zip,v.relative(Se.root,e));if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(e),this.registerEntry(e,r),r}async linkPromise(e,r){return this.linkSync(e,r)}linkSync(e,r){throw CO(`link '${e}' -> '${r}'`)}async symlinkPromise(e,r){return this.symlinkSync(e,r)}symlinkSync(e,r){if(this.readOnly)throw ln(`symlink '${e}' -> '${r}'`);let i=this.resolveFilename(`symlink '${e}' -> '${r}'`,r);if(this.listings.has(i))throw rh(`symlink '${e}' -> '${r}'`);if(this.entries.has(i))throw yE(`symlink '${e}' -> '${r}'`);let n=this.setFileSource(i,e);if(this.registerEntry(i,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(_o|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=await this.readFileBuffer(e,{asyncDecompress:!0});return r?i.toString(r):i}readFileSync(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=this.readFileBuffer(e);return r?i.toString(r):i}readFileBuffer(e,r={asyncDecompress:!1}){typeof e=="number"&&(e=this.fdToPath(e,"read"));let i=this.resolveFilename(`open '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`open '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`open '${e}'`);if(this.listings.has(i))throw rh("read");let n=this.entries.get(i);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,r)}async readdirPromise(e,r){return this.readdirSync(e,r)}readdirSync(e,r){let i=this.resolveFilename(`scandir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`scandir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`scandir '${e}'`);let s=[...n];return(r==null?void 0:r.withFileTypes)?s.map(o=>Object.assign(this.statImpl("lstat",v.join(e,o)),{name:o})):s}async readlinkPromise(e){let r=this.prepareReadlink(e);return(await this.getFileSource(r,{asyncDecompress:!0})).toString()}readlinkSync(e){let r=this.prepareReadlink(e);return this.getFileSource(r).toString()}prepareReadlink(e){let r=this.resolveFilename(`readlink '${e}'`,e,!1);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`readlink '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(r))throw eo(`open '${e}'`);if(this.listings.has(r))throw $a(`readlink '${e}'`);let i=this.entries.get(r);if(i===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(i))throw $a(`readlink '${e}'`);return i}async truncatePromise(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=await this.getFileSource(n,{asyncDecompress:!0}),o=Buffer.alloc(r,0);return s.copy(o),await this.writeFilePromise(e,o)}truncateSync(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=this.getFileSource(n),o=Buffer.alloc(r,0);return s.copy(o),this.writeFileSync(e,o)}watch(e,r,i){let n;switch(typeof r){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=r);break}if(!n)return{on:()=>{},close:()=>{}};let s=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(s)}}}watchFile(e,r,i){let n=v.resolve(Se.root,e);return QE(this,n,r,i)}unwatchFile(e,r){let i=v.resolve(Se.root,e);return nh(this,i,r)}};var fi=class extends eA{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,i){return this.baseFs.openPromise(this.mapToBase(e),r,i)}openSync(e,r,i){return this.baseFs.openSync(this.mapToBase(e),r,i)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,i,n,s){return await this.baseFs.readPromise(e,r,i,n,s)}readSync(e,r,i,n,s){return this.baseFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s)}writeSync(e,r,i,n,s){return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}async lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async chownPromise(e,r,i){return this.baseFs.chownPromise(this.mapToBase(e),r,i)}chownSync(e,r,i){return this.baseFs.chownSync(this.mapToBase(e),r,i)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,i=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),i)}copyFileSync(e,r,i=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),i)}async appendFilePromise(e,r,i){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,i)}appendFileSync(e,r,i){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,i)}async writeFilePromise(e,r,i){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,i)}writeFileSync(e,r,i){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,i)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,i){return this.baseFs.utimesPromise(this.mapToBase(e),r,i)}utimesSync(e,r,i){return this.baseFs.utimesSync(this.mapToBase(e),r,i)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkPromise(o,n,i)}symlinkSync(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkSync(o,n,i)}async readFilePromise(e,r){return r==="utf8"?this.baseFs.readFilePromise(this.fsMapToBase(e),r):this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return r==="utf8"?this.baseFs.readFileSync(this.fsMapToBase(e),r):this.baseFs.readFileSync(this.fsMapToBase(e),r)}async readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}watch(e,r,i){return this.baseFs.watch(this.mapToBase(e),r,i)}watchFile(e,r,i){return this.baseFs.watchFile(this.mapToBase(e),r,i)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}};var Xo=class extends fi{constructor(e,{baseFs:r,pathUtils:i}){super(i);this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}};var Ft=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?v.normalize(e):this.baseFs.resolve(v.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}};var vO=Se.root,Zo=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.resolve(Se.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Se.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(vO,e));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(vO,this.pathUtils.relative(this.target,e))}};var oh=class extends fi{constructor(e,r){super(r);this.instance=null;this.factory=e}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(e){this.instance=e}mapFromBase(e){return e}mapToBase(e){return e}};var ze=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),gb=class extends eA{constructor(){super(v)}getExtractHint(){throw ze()}getRealPath(){throw ze()}resolve(){throw ze()}async openPromise(){throw ze()}openSync(){throw ze()}async opendirPromise(){throw ze()}opendirSync(){throw ze()}async readPromise(){throw ze()}readSync(){throw ze()}async writePromise(){throw ze()}writeSync(){throw ze()}async closePromise(){throw ze()}closeSync(){throw ze()}createWriteStream(){throw ze()}createReadStream(){throw ze()}async realpathPromise(){throw ze()}realpathSync(){throw ze()}async readdirPromise(){throw ze()}readdirSync(){throw ze()}async existsPromise(e){throw ze()}existsSync(e){throw ze()}async accessPromise(){throw ze()}accessSync(){throw ze()}async statPromise(){throw ze()}statSync(){throw ze()}async fstatPromise(e){throw ze()}fstatSync(e){throw ze()}async lstatPromise(e){throw ze()}lstatSync(e){throw ze()}async chmodPromise(){throw ze()}chmodSync(){throw ze()}async chownPromise(){throw ze()}chownSync(){throw ze()}async mkdirPromise(){throw ze()}mkdirSync(){throw ze()}async rmdirPromise(){throw ze()}rmdirSync(){throw ze()}async linkPromise(){throw ze()}linkSync(){throw ze()}async symlinkPromise(){throw ze()}symlinkSync(){throw ze()}async renamePromise(){throw ze()}renameSync(){throw ze()}async copyFilePromise(){throw ze()}copyFileSync(){throw ze()}async appendFilePromise(){throw ze()}appendFileSync(){throw ze()}async writeFilePromise(){throw ze()}writeFileSync(){throw ze()}async unlinkPromise(){throw ze()}unlinkSync(){throw ze()}async utimesPromise(){throw ze()}utimesSync(){throw ze()}async readFilePromise(){throw ze()}readFileSync(){throw ze()}async readlinkPromise(){throw ze()}readlinkSync(){throw ze()}async truncatePromise(){throw ze()}truncateSync(){throw ze()}watch(){throw ze()}watchFile(){throw ze()}unwatchFile(){throw ze()}},bE=gb;bE.instance=new gb;var ah=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return M.fromPortablePath(e)}mapToBase(e){return M.toPortablePath(e)}};var nhe=/^[0-9]+$/,fb=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,she=/^([^/]+-)?[a-f0-9]+$/,Pr=class extends fi{static makeVirtualPath(e,r,i){if(v.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!v.basename(r).match(she))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let s=v.relative(v.dirname(e),i).split("/"),o=0;for(;o{let r=t.indexOf(e);if(r<=0)return null;let i=r;for(;r>=0&&(i=r+e.length,t[i]!==v.sep);){if(t[r-1]===v.sep)return null;r=t.indexOf(e,i)}return t.length>i&&t[i]!==v.sep?null:t.slice(0,i)},Jn=class extends gl{constructor({libzip:e,baseFs:r=new Wt,filter:i=null,maxOpenFiles:n=Infinity,readOnlyArchives:s=!1,useCache:o=!0,maxAge:a=5e3,fileExtensions:l=null}){super();this.fdMap=new Map;this.nextFd=3;this.isZip=new Set;this.notZip=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.libzipFactory=typeof e!="function"?()=>e:e,this.baseFs=r,this.zipInstances=o?new Map:null,this.filter=i,this.maxOpenFiles=n,this.readOnlyArchives=s,this.maxAge=a,this.fileExtensions=l}static async openPromise(e,r){let i=new Jn(r);try{return await e(i)}finally{i.saveAndClose()}}get libzip(){return typeof this.libzipInstance=="undefined"&&(this.libzipInstance=this.libzipFactory()),this.libzipInstance}getExtractHint(e){return this.baseFs.getExtractHint(e)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.saveAndClose(),this.zipInstances.delete(e)}discardAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.discardAndClose(),this.zipInstances.delete(e)}resolve(e){return this.baseFs.resolve(e)}remapFd(e,r){let i=this.nextFd++|$o;return this.fdMap.set(i,[e,r]),i}async openPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.openPromise(e,r,i),async(n,{subPath:s})=>this.remapFd(n,await n.openPromise(s,r,i)))}openSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.openSync(e,r,i),(n,{subPath:s})=>this.remapFd(n,n.openSync(s,r,i)))}async opendirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.opendirPromise(e,r),async(i,{subPath:n})=>await i.opendirPromise(n,r),{requireSubpath:!1})}opendirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.opendirSync(e,r),(i,{subPath:n})=>i.opendirSync(n,r),{requireSubpath:!1})}async readPromise(e,r,i,n,s){if((e&$o)==0)return await this.baseFs.readPromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("read");let[a,l]=o;return await a.readPromise(l,r,i,n,s)}readSync(e,r,i,n,s){if((e&$o)==0)return this.baseFs.readSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("readSync");let[a,l]=o;return a.readSync(l,r,i,n,s)}async writePromise(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("write");let[a,l]=o;return typeof r=="string"?await a.writePromise(l,r,i):await a.writePromise(l,r,i,n,s)}writeSync(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("writeSync");let[a,l]=o;return typeof r=="string"?a.writeSync(l,r,i):a.writeSync(l,r,i,n,s)}async closePromise(e){if((e&$o)==0)return await this.baseFs.closePromise(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("close");this.fdMap.delete(e);let[i,n]=r;return await i.closePromise(n)}closeSync(e){if((e&$o)==0)return this.baseFs.closeSync(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("closeSync");this.fdMap.delete(e);let[i,n]=r;return i.closeSync(n)}createReadStream(e,r){return e===null?this.baseFs.createReadStream(e,r):this.makeCallSync(e,()=>this.baseFs.createReadStream(e,r),(i,{subPath:n})=>i.createReadStream(n,r))}createWriteStream(e,r){return e===null?this.baseFs.createWriteStream(e,r):this.makeCallSync(e,()=>this.baseFs.createWriteStream(e,r),(i,{subPath:n})=>i.createWriteStream(n,r))}async realpathPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.realpathPromise(e),async(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=await this.baseFs.realpathPromise(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,await r.realpathPromise(n)))})}realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSync(e),(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=this.baseFs.realpathSync(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,r.realpathSync(n)))})}async existsPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.existsPromise(e),async(r,{subPath:i})=>await r.existsPromise(i))}existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e),(r,{subPath:i})=>r.existsSync(i))}async accessPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.accessPromise(e,r),async(i,{subPath:n})=>await i.accessPromise(n,r))}accessSync(e,r){return this.makeCallSync(e,()=>this.baseFs.accessSync(e,r),(i,{subPath:n})=>i.accessSync(n,r))}async statPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.statPromise(e,r),async(i,{subPath:n})=>await i.statPromise(n,r))}statSync(e,r){return this.makeCallSync(e,()=>this.baseFs.statSync(e,r),(i,{subPath:n})=>i.statSync(n,r))}async fstatPromise(e,r){if((e&$o)==0)return this.baseFs.fstatPromise(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstat");let[n,s]=i;return n.fstatPromise(s,r)}fstatSync(e,r){if((e&$o)==0)return this.baseFs.fstatSync(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let[n,s]=i;return n.fstatSync(s,r)}async lstatPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.lstatPromise(e,r),async(i,{subPath:n})=>await i.lstatPromise(n,r))}lstatSync(e,r){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e,r),(i,{subPath:n})=>i.lstatSync(n,r))}async chmodPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.chmodPromise(e,r),async(i,{subPath:n})=>await i.chmodPromise(n,r))}chmodSync(e,r){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,r),(i,{subPath:n})=>i.chmodSync(n,r))}async chownPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.chownPromise(e,r,i),async(n,{subPath:s})=>await n.chownPromise(s,r,i))}chownSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.chownSync(e,r,i),(n,{subPath:s})=>n.chownSync(s,r,i))}async renamePromise(e,r){return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.renamePromise(e,r),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(i,{subPath:n})=>await this.makeCallPromise(r,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await i.renamePromise(n,o)}))}renameSync(e,r){return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.renameSync(e,r),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(i,{subPath:n})=>this.makeCallSync(r,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return i.renameSync(n,o)}))}async copyFilePromise(e,r,i=0){let n=async(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&await this.existsPromise(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=await s.readFilePromise(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}await a.writeFilePromise(l,c)};return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.copyFilePromise(e,r,i),async(s,{subPath:o})=>await n(this.baseFs,e,s,o)),async(s,{subPath:o})=>await this.makeCallPromise(r,async()=>await n(s,o,this.baseFs,r),async(a,{subPath:l})=>s!==a?await n(s,o,a,l):await s.copyFilePromise(o,l,i)))}copyFileSync(e,r,i=0){let n=(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&this.existsSync(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=s.readFileSync(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}a.writeFileSync(l,c)};return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.copyFileSync(e,r,i),(s,{subPath:o})=>n(this.baseFs,e,s,o)),(s,{subPath:o})=>this.makeCallSync(r,()=>n(s,o,this.baseFs,r),(a,{subPath:l})=>s!==a?n(s,o,a,l):s.copyFileSync(o,l,i)))}async appendFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.appendFilePromise(e,r,i),async(n,{subPath:s})=>await n.appendFilePromise(s,r,i))}appendFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.appendFileSync(e,r,i),(n,{subPath:s})=>n.appendFileSync(s,r,i))}async writeFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.writeFilePromise(e,r,i),async(n,{subPath:s})=>await n.writeFilePromise(s,r,i))}writeFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.writeFileSync(e,r,i),(n,{subPath:s})=>n.writeFileSync(s,r,i))}async unlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.unlinkPromise(e),async(r,{subPath:i})=>await r.unlinkPromise(i))}unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e),(r,{subPath:i})=>r.unlinkSync(i))}async utimesPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.utimesPromise(e,r,i),async(n,{subPath:s})=>await n.utimesPromise(s,r,i))}utimesSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.utimesSync(e,r,i),(n,{subPath:s})=>n.utimesSync(s,r,i))}async mkdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.mkdirPromise(e,r),async(i,{subPath:n})=>await i.mkdirPromise(n,r))}mkdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,r),(i,{subPath:n})=>i.mkdirSync(n,r))}async rmdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.rmdirPromise(e,r),async(i,{subPath:n})=>await i.rmdirPromise(n,r))}rmdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e,r),(i,{subPath:n})=>i.rmdirSync(n,r))}async linkPromise(e,r){return await this.makeCallPromise(r,async()=>await this.baseFs.linkPromise(e,r),async(i,{subPath:n})=>await i.linkPromise(e,n))}linkSync(e,r){return this.makeCallSync(r,()=>this.baseFs.linkSync(e,r),(i,{subPath:n})=>i.linkSync(e,n))}async symlinkPromise(e,r,i){return await this.makeCallPromise(r,async()=>await this.baseFs.symlinkPromise(e,r,i),async(n,{subPath:s})=>await n.symlinkPromise(e,s))}symlinkSync(e,r,i){return this.makeCallSync(r,()=>this.baseFs.symlinkSync(e,r,i),(n,{subPath:s})=>n.symlinkSync(e,s))}async readFilePromise(e,r){return this.makeCallPromise(e,async()=>{switch(r){case"utf8":return await this.baseFs.readFilePromise(e,r);default:return await this.baseFs.readFilePromise(e,r)}},async(i,{subPath:n})=>await i.readFilePromise(n,r))}readFileSync(e,r){return this.makeCallSync(e,()=>{switch(r){case"utf8":return this.baseFs.readFileSync(e,r);default:return this.baseFs.readFileSync(e,r)}},(i,{subPath:n})=>i.readFileSync(n,r))}async readdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.readdirPromise(e,r),async(i,{subPath:n})=>await i.readdirPromise(n,r),{requireSubpath:!1})}readdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.readdirSync(e,r),(i,{subPath:n})=>i.readdirSync(n,r),{requireSubpath:!1})}async readlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.readlinkPromise(e),async(r,{subPath:i})=>await r.readlinkPromise(i))}readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSync(e),(r,{subPath:i})=>r.readlinkSync(i))}async truncatePromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.truncatePromise(e,r),async(i,{subPath:n})=>await i.truncatePromise(n,r))}truncateSync(e,r){return this.makeCallSync(e,()=>this.baseFs.truncateSync(e,r),(i,{subPath:n})=>i.truncateSync(n,r))}watch(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watch(e,r,i),(n,{subPath:s})=>n.watch(s,r,i))}watchFile(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watchFile(e,r,i),()=>QE(this,e,r,i))}unwatchFile(e,r){return this.makeCallSync(e,()=>this.baseFs.unwatchFile(e,r),()=>nh(this,e,r))}async makeCallPromise(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return await r();let s=this.resolve(e),o=this.findZip(s);return o?n&&o.subPath==="/"?await r():await this.getZipPromise(o.archivePath,async a=>await i(a,o)):await r()}makeCallSync(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return r();let s=this.resolve(e),o=this.findZip(s);return!o||n&&o.subPath==="/"?r():this.getZipSync(o.archivePath,a=>i(a,o))}findZip(e){if(this.filter&&!this.filter.test(e))return null;let r="";for(;;){let i=e.substr(r.length),n;if(!this.fileExtensions)n=SO(i,".zip");else for(let s of this.fileExtensions)if(n=SO(i,s),n)break;if(!n)return null;if(r=this.pathUtils.join(r,n),this.isZip.has(r)===!1){if(this.notZip.has(r))continue;try{if(!this.baseFs.lstatSync(r).isFile()){this.notZip.add(r);continue}}catch{return null}this.isZip.add(r)}return{archivePath:r,subPath:this.pathUtils.join(Se.root,e.substr(r.length))}}}limitOpenFiles(e){if(this.zipInstances===null)return;let r=Date.now(),i=r+this.maxAge,n=e===null?0:this.zipInstances.size-e;for(let[s,{zipFs:o,expiresAt:a,refCount:l}]of this.zipInstances.entries())if(!(l!==0||o.hasOpenFileHandles())){if(r>=a){o.saveAndClose(),this.zipInstances.delete(s),n-=1;continue}else if(e===null||n<=0){i=a;break}o.saveAndClose(),this.zipInstances.delete(s),n-=1}this.limitOpenFilesTimeout===null&&(e===null&&this.zipInstances.size>0||e!==null)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},i-r).unref())}async getZipPromise(e,r){let i=async()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:await this.baseFs.statPromise(e)});if(this.zipInstances){let n=this.zipInstances.get(e);if(!n){let s=await i();n=this.zipInstances.get(e),n||(n={zipFs:new Jr(e,s),expiresAt:0,refCount:0})}this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,n.refCount+=1;try{return await r(n.zipFs)}finally{n.refCount-=1}}else{let n=new Jr(e,await i());try{return await r(n)}finally{n.saveAndClose()}}}getZipSync(e,r){let i=()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:this.baseFs.statSync(e)});if(this.zipInstances){let n=this.zipInstances.get(e);return n||(n={zipFs:new Jr(e,i()),expiresAt:0,refCount:0}),this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,r(n.zipFs)}else{let n=new Jr(e,i());try{return r(n)}finally{n.saveAndClose()}}}};var lh=ie(require("util"));var vE=ie(require("url"));var hb=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return e}mapToBase(e){return e instanceof vE.URL?(0,vE.fileURLToPath)(e):e}};var ohe=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","chownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),xO=new Set(["accessPromise","appendFilePromise","chmodPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]),ahe=new Set(["appendFilePromise","chmodPromise","chownPromise","closePromise","readPromise","readFilePromise","statPromise","truncatePromise","utimesPromise","writePromise","writeFilePromise"]);function pb(t,e){e=new hb(e);let r=(i,n,s)=>{let o=i[n];i[n]=s,typeof(o==null?void 0:o[lh.promisify.custom])!="undefined"&&(s[lh.promisify.custom]=o[lh.promisify.custom])};{r(t,"exists",(i,...n)=>{let o=typeof n[n.length-1]=="function"?n.pop():()=>{};process.nextTick(()=>{e.existsPromise(i).then(a=>{o(a)},()=>{o(!1)})})}),r(t,"read",(i,n,...s)=>{let a=typeof s[s.length-1]=="function"?s.pop():()=>{};process.nextTick(()=>{e.readPromise(i,n,...s).then(l=>{a(null,l,n)},l=>{a(l,0,n)})})});for(let i of xO){let n=i.replace(/Promise$/,"");if(typeof t[n]=="undefined")continue;let s=e[i];if(typeof s=="undefined")continue;r(t,n,(...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{s.apply(e,a).then(u=>{c(null,u)},u=>{c(u)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",i=>{try{return e.existsSync(i)}catch(n){return!1}});for(let i of ohe){let n=i;if(typeof t[n]=="undefined")continue;let s=e[i];typeof s!="undefined"&&r(t,n,s.bind(e))}t.realpathSync.native=t.realpathSync}{let i=process.emitWarning;process.emitWarning=()=>{};let n;try{n=t.promises}finally{process.emitWarning=i}if(typeof n!="undefined"){for(let o of xO){let a=o.replace(/Promise$/,"");if(typeof n[a]=="undefined")continue;let l=e[o];typeof l!="undefined"&&o!=="open"&&r(n,a,l.bind(e))}class s{constructor(a){this.fd=a}}for(let o of ahe){let a=o.replace(/Promise$/,""),l=e[o];typeof l!="undefined"&&r(s.prototype,a,function(...c){return l.call(e,this.fd,...c)})}r(n,"open",async(...o)=>{let a=await e.openPromise(...o);return new s(a)})}}t.read[lh.promisify.custom]=async(i,n,...s)=>({bytesRead:await e.readPromise(i,n,...s),buffer:n})}function SE(t,e){let r=Object.create(t);return pb(r,e),r}var kO=ie(require("os"));function PO(t){let e=M.toPortablePath(kO.default.tmpdir()),r=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return v.join(e,`${t}${r}`)}var vs=new Set,DO=!1;function RO(){DO||(DO=!0,process.once("exit",()=>{T.rmtempSync()}))}var T=Object.assign(new Wt,{detachTemp(t){vs.delete(t)},mktempSync(t){for(RO();;){let e=PO("xfs-");try{this.mkdirSync(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=this.realpathSync(e);if(vs.add(r),typeof t!="undefined")try{return t(r)}finally{if(vs.has(r)){vs.delete(r);try{this.removeSync(r)}catch{}}}else return r}},async mktempPromise(t){for(RO();;){let e=PO("xfs-");try{await this.mkdirPromise(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=await this.realpathPromise(e);if(vs.add(r),typeof t!="undefined")try{return await t(r)}finally{if(vs.has(r)){vs.delete(r);try{await this.removePromise(r)}catch{}}}else return r}},async rmtempPromise(){await Promise.all(Array.from(vs.values()).map(async t=>{try{await T.removePromise(t,{maxRetries:0}),vs.delete(t)}catch{}}))},rmtempSync(){for(let t of vs)try{T.removeSync(t),vs.delete(t)}catch{}}});var vb=ie(bb()),Pn;(function(i){i[i.Never=0]="Never",i[i.ErrorCode=1]="ErrorCode",i[i.Always=2]="Always"})(Pn||(Pn={}));function dl(t){return t!==null&&typeof t.fd=="number"}var Cl=new Set;function Sb(){}function xb(){for(let t of Cl)t.kill()}async function to(t,e,{cwd:r,env:i=process.env,strict:n=!1,stdin:s=null,stdout:o,stderr:a,end:l=2}){let c=["pipe","pipe","pipe"];s===null?c[0]="ignore":dl(s)&&(c[0]=s),dl(o)&&(c[1]=o),dl(a)&&(c[2]=a);let u=(0,vb.default)(t,e,{cwd:M.fromPortablePath(r),env:_(P({},i),{PWD:M.fromPortablePath(r)}),stdio:c});Cl.add(u),Cl.size===1&&(process.on("SIGINT",Sb),process.on("SIGTERM",xb)),!dl(s)&&s!==null&&s.pipe(u.stdin),dl(o)||u.stdout.pipe(o,{end:!1}),dl(a)||u.stderr.pipe(a,{end:!1});let g=()=>{for(let f of new Set([o,a]))dl(f)||f.end()};return new Promise((f,h)=>{u.on("error",p=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1)&&g(),h(p)}),u.on("close",(p,d)=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1&&p>0)&&g(),p===0||!n?f({code:kb(p,d)}):h(p!==null?new Error(`Child "${t}" exited with exit code ${p}`):new Error(`Child "${t}" exited with signal ${d}`))})})}async function Nhe(t,e,{cwd:r,env:i=process.env,encoding:n="utf8",strict:s=!1}){let o=["ignore","pipe","pipe"],a=[],l=[],c=M.fromPortablePath(r);typeof i.PWD!="undefined"&&(i=_(P({},i),{PWD:c}));let u=(0,vb.default)(t,e,{cwd:c,env:i,stdio:o});return u.stdout.on("data",g=>{a.push(g)}),u.stderr.on("data",g=>{l.push(g)}),await new Promise((g,f)=>{u.on("error",()=>{f()}),u.on("close",(h,p)=>{let d=n==="buffer"?Buffer.concat(a):Buffer.concat(a).toString(n),m=n==="buffer"?Buffer.concat(l):Buffer.concat(l).toString(n);h===0||!s?g({code:kb(h,p),stdout:d,stderr:m}):f(Object.assign(new Error(`Child "${t}" exited with exit code ${h} - -${m}`),{code:kb(h,p),stdout:d,stderr:m}))})})}var Lhe=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function kb(t,e){let r=Lhe.get(e);return typeof r!="undefined"?128+r:t!=null?t:1}var Pb={};it(Pb,{getDefaultGlobalFolder:()=>Rb,getHomeFolder:()=>uh,isFolderInside:()=>Fb});var Db=ie(require("os"));function Rb(){if(process.platform==="win32"){let t=M.toPortablePath(process.env.LOCALAPPDATA||M.join((0,Db.homedir)(),"AppData","Local"));return v.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=M.toPortablePath(process.env.XDG_DATA_HOME);return v.resolve(t,"yarn/berry")}return v.resolve(uh(),".yarn/berry")}function uh(){return M.toPortablePath((0,Db.homedir)()||"/usr/local/share")}function Fb(t,e){let r=v.relative(e,t);return r&&!r.startsWith("..")&&!v.isAbsolute(r)}var ue={};it(ue,{LogLevel:()=>Ts,Style:()=>Gl,Type:()=>Le,addLogFilterSupport:()=>Cp,applyColor:()=>On,applyHyperlink:()=>Ku,applyStyle:()=>Py,json:()=>Uu,mark:()=>xx,pretty:()=>Ve,prettyField:()=>Yl,prettyList:()=>Kx,supportsColor:()=>xy,supportsHyperlinks:()=>Mx,tuple:()=>jl});var pp=ie(jb()),dp=ie(ml()),o3=ie(Nn()),a3=ie(gU());var z;(function(te){te[te.UNNAMED=0]="UNNAMED",te[te.EXCEPTION=1]="EXCEPTION",te[te.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",te[te.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",te[te.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",te[te.BUILD_DISABLED=5]="BUILD_DISABLED",te[te.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",te[te.MUST_BUILD=7]="MUST_BUILD",te[te.MUST_REBUILD=8]="MUST_REBUILD",te[te.BUILD_FAILED=9]="BUILD_FAILED",te[te.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",te[te.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",te[te.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",te[te.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",te[te.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",te[te.REMOTE_INVALID=15]="REMOTE_INVALID",te[te.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",te[te.RESOLUTION_PACK=17]="RESOLUTION_PACK",te[te.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",te[te.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",te[te.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",te[te.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",te[te.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",te[te.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",te[te.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",te[te.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",te[te.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",te[te.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",te[te.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",te[te.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",te[te.FETCH_FAILED=30]="FETCH_FAILED",te[te.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",te[te.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",te[te.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",te[te.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",te[te.NETWORK_ERROR=35]="NETWORK_ERROR",te[te.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",te[te.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",te[te.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",te[te.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",te[te.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",te[te.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",te[te.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",te[te.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",te[te.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",te[te.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",te[te.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",te[te.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",te[te.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",te[te.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",te[te.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",te[te.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",te[te.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",te[te.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",te[te.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",te[te.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",te[te.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",te[te.INVALID_MANIFEST=57]="INVALID_MANIFEST",te[te.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",te[te.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",te[te.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",te[te.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",te[te.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",te[te.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",te[te.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",te[te.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",te[te.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",te[te.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",te[te.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",te[te.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",te[te.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",te[te.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",te[te.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",te[te.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",te[te.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",te[te.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",te[te.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",te[te.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE"})(z||(z={}));function KE(t){return`YN${t.toString(10).padStart(4,"0")}`}var de={};it(de,{BufferStream:()=>OH,CachingStrategy:()=>Dl,DefaultStream:()=>KH,assertNever:()=>Lv,bufferStream:()=>Cu,buildIgnorePattern:()=>DEe,convertMapsToIndexableObjects:()=>aI,dynamicRequire:()=>mu,escapeRegExp:()=>SEe,getArrayWithDefault:()=>hu,getFactoryWithDefault:()=>na,getMapWithDefault:()=>pu,getSetWithDefault:()=>Pl,isIndexableObject:()=>Tv,isPathLike:()=>REe,isTaggedYarnVersion:()=>vEe,mapAndFilter:()=>kl,mapAndFind:()=>MH,overrideType:()=>Nv,parseBoolean:()=>Hh,parseOptionalBoolean:()=>jH,prettifyAsyncErrors:()=>du,prettifySyncErrors:()=>Mv,releaseAfterUseAsync:()=>kEe,replaceEnvVariables:()=>Ov,sortMap:()=>gn,tryParseOptionalBoolean:()=>Kv,validateEnum:()=>xEe});var vh={};it(vh,{Builtins:()=>Iv,Cli:()=>oo,Command:()=>ye,Option:()=>Y,UsageError:()=>me});var yl=0,Eh=1,Gi=2,sv="",hi="\0",Au=-1,ov=/^(-h|--help)(?:=([0-9]+))?$/,UE=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,fU=/^-[a-zA-Z]{2,}$/,av=/^([^=]+)=([\s\S]*)$/,Av=process.env.DEBUG_CLI==="1";var me=class extends Error{constructor(e){super(e);this.clipanion={type:"usage"},this.name="UsageError"}},Ih=class extends Error{constructor(e,r){super();if(this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===r[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} - -${this.candidates.map(({usage:n})=>`$ ${n}`).join(` -`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: - -$ ${i} -${lv(e)}`}else this.message=`Command not found; did you mean one of: - -${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},cv=class extends Error{constructor(e,r){super();this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: - -${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},lv=t=>`While running ${t.filter(e=>e!==hi).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`;var yh=Symbol("clipanion/isOption");function ji(t){return _(P({},t),{[yh]:!0})}function so(t,e){return typeof t=="undefined"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function HE(t,e=!1){let r=t.replace(/^\.: /,"");return e&&(r=r[0].toLowerCase()+r.slice(1)),r}function wh(t,e){return e.length===1?new me(`${t}: ${HE(e[0],!0)}`):new me(`${t}: -${e.map(r=>` -- ${HE(r)}`).join("")}`)}function Bh(t,e,r){if(typeof r=="undefined")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!r(e,{errors:i,coercions:n,coercion:s}))throw wh(`Invalid value for ${t}`,i);for(let[,a]of n)a();return e}var ye=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(typeof r!="undefined"){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(()=>(Ss(),lu)),a=o(n(s()),r),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw wh("Invalid option schema",l);for(let[,g]of c)g()}let i=await this.execute();return typeof i!="undefined"?i:0}};ye.isOption=yh;ye.Default=[];function un(t){Av&&console.log(t)}var BU={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Au};function QU(){return{nodes:[qi(),qi(),qi()]}}function nCe(t){let e=QU(),r=[],i=e.nodes.length;for(let n of t){r.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=t.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)r(a);for(let[,{to:o}]of n.dynamics)r(o);for(let{to:o}of n.shortcuts)r(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=t.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};r(yl)}function oCe(t,{prefix:e=""}={}){if(Av){un(`${e}Nodes are:`);for(let r=0;rl!==Gi).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===Gi))throw new Ih(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=aCe(a)}if(i.length>0){un(" Results:");for(let s of i)un(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else un(" No results");return i}function ACe(t,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(t.statics,hi)){for(let{to:r}of t.statics[hi])if(r===Eh)return!0}return!1}function cCe(t,e,r){let i=r&&e.length>0?[""]:[],n=vU(t,e,r),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let d=t.nodes[p],m=Object.keys(d.statics);for(let I of Object.keys(d.statics)){let B=m[0];for(let{to:b,reducer:R}of d.statics[B])R==="pushPath"&&(u||l.push(B),g.push(b))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=t.nodes[l],g=ACe(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==hi||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===Gi)continue;let p=lCe(f,c);if(p!==null)for(let d of p)a([...i,d],l)}}return[...s].sort()}function gCe(t,e){let r=vU(t,[...e,hi]);return uCe(e,r.map(({state:i})=>i))}function aCe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function uCe(t,e){let r=e.filter(g=>g.selectedIndex!==null);if(r.length===0)throw new Error;let i=r.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new Ih(t,r.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=fCe(c);if(u.length>1)throw new cv(t,u.map(g=>g.candidateUsage));return u[0]}function fCe(t){let e=[],r=[];for(let i of t)i.selectedIndex===Au?r.push(i):e.push(i);return r.length>0&&e.push(_(P({},BU),{path:SU(...r.map(i=>i.path)),options:r.reduce((i,n)=>i.concat(n.options),[])})),e}function SU(t,e,...r){return e===void 0?Array.from(t):SU(t.filter((i,n)=>i===e[n]),...r)}function qi(){return{dynamics:[],shortcuts:[],statics:{}}}function bU(t){return t===Eh||t===Gi}function Cv(t,e=0){return{to:bU(t.to)?t.to:t.to>2?t.to+e-2:t.to+e,reducer:t.reducer}}function iCe(t,e=0){let r=qi();for(let[i,n]of t.dynamics)r.dynamics.push([i,Cv(n,e)]);for(let i of t.shortcuts)r.shortcuts.push(Cv(i,e));for(let[i,n]of Object.entries(t.statics))r.statics[i]=n.map(s=>Cv(s,e));return r}function pi(t,e,r,i,n){t.nodes[e].dynamics.push([r,{to:i,reducer:n}])}function cu(t,e,r,i){t.nodes[e].shortcuts.push({to:r,reducer:i})}function ta(t,e,r,i,n){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:i,reducer:n})}function jE(t,e,r,i){if(Array.isArray(e)){let[n,...s]=e;return t[n](r,i,...s)}else return t[e](r,i)}function lCe(t,e){let r=Array.isArray(t)?YE[t[0]]:YE[t];if(typeof r.suggest=="undefined")return null;let i=Array.isArray(t)?t.slice(1):[];return r.suggest(e,...i)}var YE={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,i)=>!t.ignoreOptions&&e===r,isBatchOption:(t,e,r)=>!t.ignoreOptions&&fU.test(e)&&[...e.slice(1)].every(i=>r.includes(`-${i}`)),isBoundOption:(t,e,r,i)=>{let n=e.match(av);return!t.ignoreOptions&&!!n&&UE.test(n[1])&&r.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(t,e,r)=>!t.ignoreOptions&&e===`--no-${r.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&ov.test(e),isUnsupportedOption:(t,e,r)=>!t.ignoreOptions&&e.startsWith("-")&&UE.test(e)&&!r.includes(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!UE.test(e)};YE.isOption.suggest=(t,e,r=!0)=>r?null:[e];var dv={setCandidateState:(t,e,r)=>P(P({},t),r),setSelectedIndex:(t,e,r)=>_(P({},t),{selectedIndex:r}),pushBatch:(t,e)=>_(P({},t),{options:t.options.concat([...e.slice(1)].map(r=>({name:`-${r}`,value:!0})))}),pushBound:(t,e)=>{let[,r,i]=e.match(av);return _(P({},t),{options:t.options.concat({name:r,value:i})})},pushPath:(t,e)=>_(P({},t),{path:t.path.concat(e)}),pushPositional:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!1})}),pushExtra:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:Ln})}),pushTrue:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:e,value:!0})}),pushFalse:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:r,value:!1})}),pushUndefined:(t,e)=>_(P({},t),{options:t.options.concat({name:e,value:void 0})}),pushStringValue:(t,e)=>{var r;let i=_(P({},t),{options:[...t.options]}),n=t.options[t.options.length-1];return n.value=((r=n.value)!==null&&r!==void 0?r:[]).concat([e]),i},setStringValue:(t,e)=>{let r=_(P({},t),{options:[...t.options]}),i=t.options[t.options.length-1];return i.value=e,r},inhibateOptions:t=>_(P({},t),{ignoreOptions:!0}),useHelp:(t,e,r)=>{let[,,i]=e.match(ov);return typeof i!="undefined"?_(P({},t),{options:[{name:"-c",value:String(r)},{name:"-i",value:i}]}):_(P({},t),{options:[{name:"-c",value:String(r)}]})},setError:(t,e,r)=>e===hi?_(P({},t),{errorMessage:`${r}.`}):_(P({},t),{errorMessage:`${r} ("${e}").`}),setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return _(P({},t),{errorMessage:`Not enough arguments to option ${r.name}.`})}},Ln=Symbol(),xU=class{constructor(e,r){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:i,proxy:n})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===Ln)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Ln?this.arity.extra.push(e):this.arity.extra!==Ln&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===Ln)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:r,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Ln?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context=="undefined")throw new Error("Assertion failed: No context attached");let e=QU(),r=yl,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);r=xs(e,qi()),ta(e,yl,sv,r,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=r;if(a.length>0){let f=xs(e,qi());cu(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=xs(e,qi());pi(e,l,"isHelp",f,["useHelp",this.cliIndex]),ta(e,f,hi,Eh,["setSelectedIndex",Au]),this.registerOptions(e,l)}this.arity.leading.length>0&&ta(e,l,hi,Gi,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&ta(e,h,hi,Gi,["setError","Not enough positional arguments"]),pi(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Ln||this.arity.extra.length>0){let f=xs(e,qi());if(cu(e,c,f),this.arity.extra===Ln){let h=xs(e,qi());this.arity.proxy||this.registerOptions(e,h),pi(e,c,s,h,"pushExtraNoLimits"),pi(e,h,s,h,"pushExtraNoLimits"),cu(e,h,f)}else for(let h=0;h0&&ta(e,u,hi,Gi,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)pi(e,r,["isOption",s,i.hidden||s!==n],r,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&pi(e,r,["isNegatedOption",s],r,["pushFalse",s]);else{let s=xs(e,qi());for(let o of i.names)pi(e,r,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&egCe(i,n),suggest:(n,s)=>cCe(i,n,s)}}};var kU=80,mv=Array(kU).fill("\u2501");for(let t=0;t<=24;++t)mv[mv.length-t]=`[38;5;${232+t}m\u2501`;var Ev={header:t=>`\u2501\u2501\u2501 ${t}${t.length`${t}`,error:t=>`${t}`,code:t=>`${t}`},PU={header:t=>t,bold:t=>t,error:t=>t,code:t=>t};function hCe(t){let e=t.split(` -`),r=e.filter(n=>n.match(/\S/)),i=r.length>0?r.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` -`)}function Vn(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` -`),t=hCe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 - -`),t=t.replace(/\n(\n)?\n*/g,"$1"),r&&(t=t.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` -`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` -`)}).join(` - -`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),t?`${t} -`:""}var bh=class extends ye{constructor(e){super();this.contexts=e,this.commands=[]}static from(e,r){let i=new bh(r);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index!="undefined"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: -`),this.context.stdout.write(` -`);let r=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` -`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. -`)}}};var DU=Symbol("clipanion/errorCommand");function pCe(){return process.env.FORCE_COLOR==="0"?!1:!!(process.env.FORCE_COLOR==="1"||typeof process.stdout!="undefined"&&process.stdout.isTTY)}var oo=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:i,enableColors:n=pCe()}={}){this.registrations=new Map,this.builder=new Qh({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=i,this.enableColors=n}static from(e,r={}){let i=new oo(r);for(let n of e)i.register(n);return i}register(e){var r;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[ye.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(r=e.paths)!==null&&r!==void 0?r:n.paths;if(typeof a!="undefined")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:r,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case Au:return bh.from(n,r);default:{let{commandClass:s}=r[n.selectedIndex],o=this.registrations.get(s);if(typeof o=="undefined")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[DU]=a,l}}break}}async run(e,r){let i;if(!Array.isArray(e))i=e;else try{i=this.process(e)}catch(s){return r.stdout.write(this.error(s)),1}if(i.help)return r.stdout.write(this.usage(i,{detailed:!0})),0;i.context=r,i.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(s,o)=>this.error(s,o),process:s=>this.process(s),run:(s,o)=>this.run(s,P(P({},r),o)),usage:(s,o)=>this.usage(s,o)};let n;try{n=await i.validateAndExecute().catch(s=>i.catch(s).then(()=>0))}catch(s){return r.stdout.write(this.error(s,{command:i})),1}return n}async runExit(e,r){process.exitCode=await this.run(e,r)}suggest(e,r){let{suggest:i}=this.builder.compile();return i(e,r)}definitions({colored:e=!1}={}){let r=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage=="undefined")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category!="undefined"?Vn(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description!="undefined"?Vn(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details!="undefined"?Vn(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples!="undefined"?i.usage.examples.map(([f,h])=>[Vn(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;r.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return r}usage(e=null,{colored:r,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage!="undefined";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof ye?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=Vn(l,{format:this.format(r),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` -`),(c!==""||u.length>0)&&(a+=`${this.format(r).header("Usage")} -`,a+=` -`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(r).bold(n)}${g} -`,f.length>0){a+=` -`,a+=`${Ev.header("Options")} -`;let h=f.reduce((p,d)=>Math.max(p,d.definition.length),0);a+=` -`;for(let{definition:p,description:d}of f)a+=` ${this.format(r).bold(p.padEnd(h))} ${Vn(d,{format:this.format(r),paragraphs:!1})}`}if(c!==""&&(a+=` -`,a+=`${this.format(r).header("Details")} -`,a+=` -`,a+=Vn(c,{format:this.format(r),paragraphs:!0})),u.length>0){a+=` -`,a+=`${this.format(r).header("Examples")} -`;for(let[h,p]of u)a+=` -`,a+=Vn(h,{format:this.format(r),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(r).bold(n)}`).replace(/\$0/g,this.binaryName)} -`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(r).bold(n)}${l} -`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage=="undefined")continue;let p=typeof f.usage.category!="undefined"?Vn(f.usage.category,{format:this.format(r),paragraphs:!1}):null,d=l.get(p);typeof d=="undefined"&&l.set(p,d=[]);let{usage:m}=this.getUsageByIndex(h);d.push({commandClass:f,usage:m})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel!="undefined",g=typeof this.binaryVersion!="undefined";u||g?(u&&g?a+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} - -`:u?a+=`${this.format(r).header(`${this.binaryLabel}`)} -`:a+=`${this.format(r).header(`${this.binaryVersion}`)} -`,a+=` ${this.format(r).bold(n)}${this.binaryName} -`):a+=`${this.format(r).bold(n)}${this.binaryName} -`;for(let f of c){let h=l.get(f).slice().sort((d,m)=>d.usage.localeCompare(m.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` -`,a+=`${this.format(r).header(`${p}`)} -`;for(let{commandClass:d,usage:m}of h){let I=d.usage.description||"undocumented";a+=` -`,a+=` ${this.format(r).bold(m)} -`,a+=` ${Vn(I,{format:this.format(r),paragraphs:!1})}`}}a+=` -`,a+=Vn("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return a}error(e,r){var i,{colored:n,command:s=(i=e[DU])!==null&&i!==void 0?i:null}=r===void 0?{}:r;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} -`;let l=e.clipanion;return typeof l!="undefined"?l.type==="usage"&&(o+=` -`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} -`),o}getUsageByRegistration(e,r){let i=this.registrations.get(e);if(typeof i=="undefined")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}format(e=this.enableColors){return e?Ev:PU}};oo.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr};var Iv={};it(Iv,{DefinitionsCommand:()=>qE,HelpCommand:()=>JE,VersionCommand:()=>WE});var qE=class extends ye{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} -`)}};qE.paths=[["--clipanion=definitions"]];var JE=class extends ye{async execute(){this.context.stdout.write(this.cli.usage())}};JE.paths=[["-h"],["--help"]];var WE=class extends ye{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} -`)}};WE.paths=[["-v"],["--version"]];var Y={};it(Y,{Array:()=>RU,Boolean:()=>FU,Counter:()=>NU,Proxy:()=>LU,Rest:()=>TU,String:()=>MU,applyValidator:()=>Bh,cleanValidationError:()=>HE,formatError:()=>wh,isOptionSymbol:()=>yh,makeCommandOption:()=>ji,rerouteArguments:()=>so});function RU(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i!="undefined"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}function FU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}function NU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}function LU(t={}){return ji({definition(e,r){var i;e.addProxy({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){return i.positionals.map(({value:n})=>n)}})}function TU(t={}){return ji({definition(e,r){var i;e.addRest({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){let n=o=>{let a=i.positionals[o];return a.extra===Ln||a.extra===!1&&oo)}})}function dCe(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?Bh(g!=null?g:c,f,n.validator):f}})}function CCe(t={}){let{required:e=!0}=t;return ji({definition(r,i){var n;r.addPositional({name:(n=t.name)!==null&&n!==void 0?n:i,required:t.required})},transformer(r,i,n){var s;for(let o=0;oJSON.stringify(i)).join(", ")})`);return e}function kl(t,e){let r=[];for(let i of t){let n=e(i);n!==LH&&r.push(n)}return r}var LH=Symbol();kl.skip=LH;function MH(t,e){for(let r of t){let i=e(r);if(i!==TH)return i}}var TH=Symbol();MH.skip=TH;function Tv(t){return typeof t=="object"&&t!==null}function aI(t){if(t instanceof Map&&(t=Object.fromEntries(t)),Tv(t))for(let e of Object.keys(t)){let r=t[e];Tv(r)&&(t[e]=aI(r))}return t}function na(t,e,r){let i=t.get(e);return typeof i=="undefined"&&t.set(e,i=r()),i}function hu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=[]),r}function Pl(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Set),r}function pu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Map),r}async function kEe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function du(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function Mv(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Cu(t){return await new Promise((e,r)=>{let i=[];t.on("error",n=>{r(n)}),t.on("data",n=>{i.push(n)}),t.on("end",()=>{e(Buffer.concat(i))})})}var OH=class extends Fv.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(e),i(null,null)}_flush(e){e(null,Buffer.concat(this.chunks))}},KH=class extends Fv.Transform{constructor(e=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=e}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,i(null,e)}_flush(e){this.active&&this.ifEmpty.length>0?e(null,this.ifEmpty):e(null)}},Uh=eval("require");function UH(t){return Uh(M.fromPortablePath(t))}function HH(path){let physicalPath=M.fromPortablePath(path),currentCacheEntry=Uh.cache[physicalPath];delete Uh.cache[physicalPath];let result;try{result=UH(physicalPath);let freshCacheEntry=Uh.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{Uh.cache[physicalPath]=currentCacheEntry}return result}var GH=new Map;function PEe(t){let e=GH.get(t),r=T.statSync(t);if((e==null?void 0:e.mtime)===r.mtimeMs)return e.instance;let i=HH(t);return GH.set(t,{mtime:r.mtimeMs,instance:i}),i}var Dl;(function(i){i[i.NoCache=0]="NoCache",i[i.FsTime=1]="FsTime",i[i.Node=2]="Node"})(Dl||(Dl={}));function mu(t,{cachingStrategy:e=2}={}){switch(e){case 0:return HH(t);case 1:return PEe(t);case 2:return UH(t);default:throw new Error("Unsupported caching strategy")}}function gn(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(r.map(o=>s(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function DEe(t){return t.length===0?null:t.map(e=>`(${FH.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function Ov(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...i)=>{let{variableName:n,colon:s,fallback:o}=i[i.length-1],a=Object.prototype.hasOwnProperty.call(e,n),l=e[n];if(l||a&&!s)return l;if(o!=null)return o;throw new me(`Environment variable not found (${n})`)})}function Hh(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function jH(t){return typeof t=="undefined"?t:Hh(t)}function Kv(t){try{return jH(t)}catch{return null}}function REe(t){return!!(M.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}var S={};it(S,{areDescriptorsEqual:()=>i3,areIdentsEqual:()=>cp,areLocatorsEqual:()=>up,areVirtualPackagesEquivalent:()=>XQe,bindDescriptor:()=>VQe,bindLocator:()=>_Qe,convertDescriptorToLocator:()=>By,convertLocatorToDescriptor:()=>WQe,convertPackageToLocator:()=>zQe,convertToIdent:()=>JQe,convertToManifestRange:()=>ebe,copyPackage:()=>ap,devirtualizeDescriptor:()=>Ap,devirtualizeLocator:()=>lp,getIdentVendorPath:()=>Lx,isPackageCompatible:()=>Sy,isVirtualDescriptor:()=>hA,isVirtualLocator:()=>Io,makeDescriptor:()=>Yt,makeIdent:()=>Eo,makeLocator:()=>Vi,makeRange:()=>by,parseDescriptor:()=>pA,parseFileStyleRange:()=>ZQe,parseIdent:()=>En,parseLocator:()=>Hl,parseRange:()=>Tu,prettyDependent:()=>Nx,prettyDescriptor:()=>Xt,prettyIdent:()=>Vr,prettyLocator:()=>lt,prettyLocatorNoColors:()=>Rx,prettyRange:()=>yy,prettyReference:()=>fp,prettyResolution:()=>Fx,prettyWorkspace:()=>hp,renamePackage:()=>op,slugifyIdent:()=>Dx,slugifyLocator:()=>Mu,sortDescriptors:()=>Ou,stringifyDescriptor:()=>In,stringifyIdent:()=>St,stringifyLocator:()=>is,tryParseDescriptor:()=>gp,tryParseIdent:()=>n3,tryParseLocator:()=>Qy,virtualizeDescriptor:()=>kx,virtualizePackage:()=>Px});var Lu=ie(require("querystring")),e3=ie(Or()),t3=ie(wY());var mn={};it(mn,{checksumFile:()=>Ey,checksumPattern:()=>Iy,makeHash:()=>zi});var my=ie(require("crypto")),Sx=ie(vx());function zi(...t){let e=(0,my.createHash)("sha512"),r="";for(let i of t)typeof i=="string"?r+=i:i&&(r&&(e.update(r),r=""),e.update(i));return r&&e.update(r),e.digest("hex")}async function Ey(t,{baseFs:e,algorithm:r}={baseFs:T,algorithm:"sha512"}){let i=await e.openPromise(t,"r");try{let n=65536,s=Buffer.allocUnsafeSlow(n),o=(0,my.createHash)(r),a=0;for(;(a=await e.readPromise(i,s,0,n))!==0;)o.update(a===n?s:s.slice(0,a));return o.digest("hex")}finally{await e.closePromise(i)}}async function Iy(t,{cwd:e}){let i=(await(0,Sx.default)(t,{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(a=>`${a}/**/*`),n=await(0,Sx.default)([t,...i],{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});n.sort();let s=await Promise.all(n.map(async a=>{let l=[Buffer.from(a)],c=M.toPortablePath(a),u=await T.lstatPromise(c);return u.isSymbolicLink()?l.push(Buffer.from(await T.readlinkPromise(c))):u.isFile()&&l.push(await T.readFilePromise(c)),l.join("\0")})),o=(0,my.createHash)("sha512");for(let a of s)o.update(a);return o.digest("hex")}var wy="virtual:",YQe=5,r3=/(os|cpu)=([a-z0-9_-]+)/,qQe=(0,t3.makeParser)(r3);function Eo(t,e){if(t==null?void 0:t.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:zi(t,e),scope:t,name:e}}function Yt(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zi(t.identHash,e),range:e}}function Vi(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zi(t.identHash,e),reference:e}}function JQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function By(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function WQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function zQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function op(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function ap(t){return op(t,t)}function kx(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return Yt(t,`virtual:${e}#${t.range}`)}function Px(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return op(t,Vi(t,`virtual:${e}#${t.reference}`))}function hA(t){return t.range.startsWith(wy)}function Io(t){return t.reference.startsWith(wy)}function Ap(t){if(!hA(t))throw new Error("Not a virtual descriptor");return Yt(t,t.range.replace(/^[^#]*#/,""))}function lp(t){if(!Io(t))throw new Error("Not a virtual descriptor");return Vi(t,t.reference.replace(/^[^#]*#/,""))}function VQe(t,e){return t.range.includes("::")?t:Yt(t,`${t.range}::${Lu.default.stringify(e)}`)}function _Qe(t,e){return t.reference.includes("::")?t:Vi(t,`${t.reference}::${Lu.default.stringify(e)}`)}function cp(t,e){return t.identHash===e.identHash}function i3(t,e){return t.descriptorHash===e.descriptorHash}function up(t,e){return t.locatorHash===e.locatorHash}function XQe(t,e){if(!Io(t))throw new Error("Invalid package type");if(!Io(e))throw new Error("Invalid package type");if(!cp(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let i=e.dependencies.get(r.identHash);if(!i||!i3(r,i))return!1}return!0}function En(t){let e=n3(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function n3(t){let e=t.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,r,i]=e,n=typeof r!="undefined"?r:null;return Eo(n,i)}function pA(t,e=!1){let r=gp(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function gp(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid range (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Yt(Eo(o,n),a)}function Hl(t,e=!1){let r=Qy(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function Qy(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid reference (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Vi(Eo(o,n),a)}function Tu(t,e){let r=t.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(r===null)throw new Error(`Invalid range (${t})`);let i=typeof r[1]!="undefined"?r[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&i!==e.requireProtocol)throw new Error(`Invalid protocol (${i})`);if((e==null?void 0:e.requireProtocol)&&i===null)throw new Error(`Missing protocol (${i})`);let n=typeof r[3]!="undefined"?decodeURIComponent(r[2]):null;if((e==null?void 0:e.requireSource)&&n===null)throw new Error(`Missing source (${t})`);let s=typeof r[3]!="undefined"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),o=(e==null?void 0:e.parseSelector)?Lu.default.parse(s):s,a=typeof r[4]!="undefined"?Lu.default.parse(r[4]):null;return{protocol:i,source:n,selector:o,params:a}}function ZQe(t,{protocol:e}){let{selector:r,params:i}=Tu(t,{requireProtocol:e,requireBindings:!0});if(typeof i.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Hl(i.locator,!0),path:r}}function s3(t){return t=t.replace(/%/g,"%25"),t=t.replace(/:/g,"%3A"),t=t.replace(/#/g,"%23"),t}function $Qe(t){return t===null?!1:Object.entries(t).length>0}function by({protocol:t,source:e,selector:r,params:i}){let n="";return t!==null&&(n+=`${t}`),e!==null&&(n+=`${s3(e)}#`),n+=s3(r),$Qe(i)&&(n+=`::${Lu.default.stringify(i)}`),n}function ebe(t){let{params:e,protocol:r,source:i,selector:n}=Tu(t);for(let s in e)s.startsWith("__")&&delete e[s];return by({protocol:r,source:i,params:e,selector:n})}function St(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function In(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function is(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function Dx(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function Mu(t){let{protocol:e,selector:r}=Tu(t.reference),i=e!==null?e.replace(/:$/,""):"exotic",n=e3.default.valid(r),s=n!==null?`${i}-${n}`:`${i}`,o=10,a=t.scope?`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`:`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`;return kr(a)}function Vr(t,e){return e.scope?`${Ve(t,`@${e.scope}/`,Le.SCOPE)}${Ve(t,e.name,Le.NAME)}`:`${Ve(t,e.name,Le.NAME)}`}function vy(t){if(t.startsWith(wy)){let e=vy(t.substr(t.indexOf("#")+1)),r=t.substr(wy.length,YQe);return`${e} [${r}]`}else return t.replace(/\?.*/,"?[...]")}function yy(t,e){return`${Ve(t,vy(e),Le.RANGE)}`}function Xt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.RANGE)}${yy(t,e.range)}`}function fp(t,e){return`${Ve(t,vy(e),Le.REFERENCE)}`}function lt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.REFERENCE)}${fp(t,e.reference)}`}function Rx(t){return`${St(t)}@${vy(t.reference)}`}function Ou(t){return gn(t,[e=>St(e),e=>e.range])}function hp(t,e){return Vr(t,e.locator)}function Fx(t,e,r){let i=hA(e)?Ap(e):e;return r===null?`${Xt(t,i)} \u2192 ${xx(t).Cross}`:i.identHash===r.identHash?`${Xt(t,i)} \u2192 ${fp(t,r.reference)}`:`${Xt(t,i)} \u2192 ${lt(t,r)}`}function Nx(t,e,r){return r===null?`${lt(t,e)}`:`${lt(t,e)} (via ${yy(t,r.range)})`}function Lx(t){return`node_modules/${St(t)}`}function Sy(t,e){return t.conditions?qQe(t.conditions,r=>{let[,i,n]=r.match(r3),s=e[i];return s?s.includes(n):!0}):!0}var gt;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(gt||(gt={}));var oi;(function(i){i.Dependency="Dependency",i.PeerDependency="PeerDependency",i.PeerDependencyMeta="PeerDependencyMeta"})(oi||(oi={}));var ki;(function(i){i.Inactive="inactive",i.Redundant="redundant",i.Active="active"})(ki||(ki={}));var Le={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING"},Gl;(function(e){e[e.BOLD=2]="BOLD"})(Gl||(Gl={}));var Tx=dp.default.GITHUB_ACTIONS?{level:2}:pp.default.supportsColor?{level:pp.default.supportsColor.level}:{level:0},xy=Tx.level!==0,Mx=xy&&!dp.default.GITHUB_ACTIONS&&!dp.default.CIRCLE&&!dp.default.GITLAB,Ox=new pp.default.Instance(Tx),tbe=new Map([[Le.NO_HINT,null],[Le.NULL,["#a853b5",129]],[Le.SCOPE,["#d75f00",166]],[Le.NAME,["#d7875f",173]],[Le.RANGE,["#00afaf",37]],[Le.REFERENCE,["#87afff",111]],[Le.NUMBER,["#ffd700",220]],[Le.PATH,["#d75fd7",170]],[Le.URL,["#d75fd7",170]],[Le.ADDED,["#5faf00",70]],[Le.REMOVED,["#d70000",160]],[Le.CODE,["#87afff",111]],[Le.SIZE,["#ffd700",220]]]),Ls=t=>t,ky={[Le.NUMBER]:Ls({pretty:(t,e)=>`${e}`,json:t=>t}),[Le.IDENT]:Ls({pretty:(t,e)=>Vr(t,e),json:t=>St(t)}),[Le.LOCATOR]:Ls({pretty:(t,e)=>lt(t,e),json:t=>is(t)}),[Le.DESCRIPTOR]:Ls({pretty:(t,e)=>Xt(t,e),json:t=>In(t)}),[Le.RESOLUTION]:Ls({pretty:(t,{descriptor:e,locator:r})=>Fx(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:In(t),locator:e!==null?is(e):null})}),[Le.DEPENDENT]:Ls({pretty:(t,{locator:e,descriptor:r})=>Nx(t,e,r),json:({locator:t,descriptor:e})=>({locator:is(t),descriptor:In(e)})}),[Le.PACKAGE_EXTENSION]:Ls({pretty:(t,e)=>{switch(e.type){case oi.Dependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"dependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependencyMeta:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependenciesMeta",Le.CODE)} \u27A4 ${Vr(t,En(e.selector))} \u27A4 ${On(t,e.key,Le.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case oi.Dependency:return`${St(t.parentDescriptor)} > ${St(t.descriptor)}`;case oi.PeerDependency:return`${St(t.parentDescriptor)} >> ${St(t.descriptor)}`;case oi.PeerDependencyMeta:return`${St(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Le.SETTING]:Ls({pretty:(t,e)=>(t.get(e),Ku(t,On(t,e,Le.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Le.DURATION]:Ls({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),i=Math.ceil((e-r*60*1e3)/1e3);return i===0?`${r}m`:`${r}m ${i}s`}else{let r=Math.floor(e/1e3),i=e-r*1e3;return i===0?`${r}s`:`${r}s ${i}ms`}},json:t=>t}),[Le.SIZE]:Ls({pretty:(t,e)=>{let r=["KB","MB","GB","TB"],i=r.length;for(;i>1&&e<1024**i;)i-=1;let n=1024**i,s=Math.floor(e*100/n)/100;return On(t,`${s} ${r[i-1]}`,Le.NUMBER)},json:t=>t}),[Le.PATH]:Ls({pretty:(t,e)=>On(t,M.fromPortablePath(e),Le.PATH),json:t=>M.fromPortablePath(t)})};function jl(t,e){return[e,t]}function Py(t,e,r){return t.get("enableColors")&&r&2&&(e=pp.default.bold(e)),e}function On(t,e,r){if(!t.get("enableColors"))return e;let i=tbe.get(r);if(i===null)return e;let n=typeof i=="undefined"?r:Tx.level>=3?i[0]:i[1],s=typeof n=="number"?Ox.ansi256(n):n.startsWith("#")?Ox.hex(n):Ox[n];if(typeof s!="function")throw new Error(`Invalid format type ${n}`);return s(e)}var rbe=!!process.env.KONSOLE_VERSION;function Ku(t,e,r){return t.get("enableHyperlinks")?rbe?`]8;;${r}\\${e}]8;;\\`:`]8;;${r}\x07${e}]8;;\x07`:e}function Ve(t,e,r){if(e===null)return On(t,"null",Le.NULL);if(Object.prototype.hasOwnProperty.call(ky,r))return ky[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return On(t,e,r)}function Kx(t,e,r,{separator:i=", "}={}){return[...e].map(n=>Ve(t,n,r)).join(i)}function Uu(t,e){if(t===null)return null;if(Object.prototype.hasOwnProperty.call(ky,e))return Nv(e),ky[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function xx(t){return{Check:On(t,"\u2713","green"),Cross:On(t,"\u2718","red"),Question:On(t,"?","cyan")}}function Yl(t,{label:e,value:[r,i]}){return`${Ve(t,e,Le.CODE)}: ${Ve(t,r,i)}`}var Ts;(function(n){n.Error="error",n.Warning="warning",n.Info="info",n.Discard="discard"})(Ts||(Ts={}));function Cp(t,{configuration:e}){let r=e.get("logFilters"),i=new Map,n=new Map,s=[];for(let g of r){let f=g.get("level");if(typeof f=="undefined")continue;let h=g.get("code");typeof h!="undefined"&&i.set(h,f);let p=g.get("text");typeof p!="undefined"&&n.set(p,f);let d=g.get("pattern");typeof d!="undefined"&&s.push([o3.default.matcher(d,{contains:!0}),f])}s.reverse();let o=(g,f,h)=>{if(g===null||g===z.UNNAMED)return h;let p=n.size>0||s.length>0?(0,a3.default)(f):f;if(n.size>0){let d=n.get(p);if(typeof d!="undefined")return d!=null?d:h}if(s.length>0){for(let[d,m]of s)if(d(p))return m!=null?m:h}if(i.size>0){let d=i.get(KE(g));if(typeof d!="undefined")return d!=null?d:h}return h},a=t.reportInfo,l=t.reportWarning,c=t.reportError,u=function(g,f,h,p){switch(o(f,h,p)){case Ts.Info:a.call(g,f,h);break;case Ts.Warning:l.call(g,f!=null?f:z.UNNAMED,h);break;case Ts.Error:c.call(g,f!=null?f:z.UNNAMED,h);break}};t.reportInfo=function(...g){return u(this,...g,Ts.Info)},t.reportWarning=function(...g){return u(this,...g,Ts.Warning)},t.reportError=function(...g){return u(this,...g,Ts.Error)}}var Zt={};it(Zt,{Method:()=>Jl,RequestError:()=>z8.RequestError,del:()=>pxe,get:()=>fxe,getNetworkSettings:()=>Z8,post:()=>iP,put:()=>hxe,request:()=>xp});var q8=ie(zy()),J8=ie(require("https")),W8=ie(require("http")),tP=ie(Nn()),rP=ie(G8()),Vy=ie(require("url"));var j8=ie(require("stream")),Y8=ie(require("string_decoder"));var nt=class extends Error{constructor(e,r,i){super(r);this.reportExtra=i;this.reportCode=e}};function Axe(t){return typeof t.reportCode!="undefined"}var Xi=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let r=0,i,n=new Promise(l=>{i=l}),s=l=>{let c=i;n=new Promise(u=>{i=u}),r=l,c()},o=(l=0)=>{s(r+1)},a=async function*(){for(;r{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",e!==null?this.reportInfo(null,`${e} ${l}`):this.reportInfo(null,l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&(e!==null?this.reportInfo(null,`${e} ${s}`):this.reportInfo(null,s))}),r}};var z8=ie(zy()),V8=new Map,_8=new Map,lxe=new W8.Agent({keepAlive:!0}),cxe=new J8.Agent({keepAlive:!0});function X8(t){let e=new Vy.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),{proxy:r}}async function uxe(t){return na(_8,t,()=>T.readFilePromise(t).then(e=>(_8.set(t,e),e)))}function gxe({statusCode:t,statusMessage:e},r){let i=Ve(r,t,Le.NUMBER),n=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Ku(r,`${i}${e?` (${e})`:""}`,n)}async function _y(t,{configuration:e,customErrorMessage:r}){var i,n;try{return await t}catch(s){if(s.name!=="HTTPError")throw s;let o=(n=r==null?void 0:r(s))!=null?n:(i=s.response.body)==null?void 0:i.error;o==null&&(s.message.startsWith("Response code")?o="The remote server failed to provide the requested resource":o=s.message),s instanceof q8.TimeoutError&&s.event==="socket"&&(o+=`(can be increased via ${Ve(e,"httpTimeout",Le.SETTING)})`);let a=new nt(z.NETWORK_ERROR,o,l=>{s.response&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Response Code",value:jl(Le.NO_HINT,gxe(s.response,e))})}`),s.request&&(l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Method",value:jl(Le.NO_HINT,s.request.options.method)})}`),l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request URL",value:jl(Le.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Redirects",value:jl(Le.NO_HINT,Kx(e,s.request.redirects,Le.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Retry Count",value:jl(Le.NO_HINT,`${Ve(e,s.request.retryCount,Le.NUMBER)} (can be increased via ${Ve(e,"httpRetry",Le.SETTING)})`)})}`)});throw a.originalError=s,a}}function Z8(t,e){let r=[...e.configuration.get("networkSettings")].sort(([o],[a])=>a.length-o.length),i={enableNetwork:void 0,caFilePath:void 0,httpProxy:void 0,httpsProxy:void 0},n=Object.keys(i),s=typeof t=="string"?new Vy.URL(t):t;for(let[o,a]of r)if(tP.default.isMatch(s.hostname,o))for(let l of n){let c=a.get(l);c!==null&&typeof i[l]=="undefined"&&(i[l]=c)}for(let o of n)typeof i[o]=="undefined"&&(i[o]=e.configuration.get(o));return i}var Jl;(function(n){n.GET="GET",n.PUT="PUT",n.POST="POST",n.DELETE="DELETE"})(Jl||(Jl={}));async function xp(t,e,{configuration:r,headers:i,jsonRequest:n,jsonResponse:s,method:o=Jl.GET}){let a=typeof t=="string"?new Vy.URL(t):t,l=Z8(a,{configuration:r});if(l.enableNetwork===!1)throw new Error(`Request to '${a.href}' has been blocked because of your configuration settings`);if(a.protocol==="http:"&&!tP.default.isMatch(a.hostname,r.get("unsafeHttpWhitelist")))throw new Error(`Unsafe http requests must be explicitly whitelisted in your configuration (${a.hostname})`);let u={agent:{http:l.httpProxy?rP.default.httpOverHttp(X8(l.httpProxy)):lxe,https:l.httpsProxy?rP.default.httpsOverHttp(X8(l.httpsProxy)):cxe},headers:i,method:o};u.responseType=s?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!n&&typeof e=="string"?u.body=e:u.json=e);let g=r.get("httpTimeout"),f=r.get("httpRetry"),h=r.get("enableStrictSsl"),p=l.caFilePath,{default:d}=await Promise.resolve().then(()=>ie(zy())),m=p?await uxe(p):void 0,I=d.extend(P({timeout:{socket:g},retry:f,https:{rejectUnauthorized:h,certificateAuthority:m}},u));return r.getLimit("networkConcurrency")(()=>I(a))}async function fxe(t,n){var s=n,{configuration:e,jsonResponse:r}=s,i=qr(s,["configuration","jsonResponse"]);let o=na(V8,t,()=>_y(xp(t,null,P({configuration:e},i)),{configuration:e}).then(a=>(V8.set(t,a.body),a.body)));return Buffer.isBuffer(o)===!1&&(o=await o),r?JSON.parse(o.toString()):o}async function hxe(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.PUT})),i)).body}async function iP(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.POST})),i)).body}async function pxe(t,i){var n=i,{customErrorMessage:e}=n,r=qr(n,["customErrorMessage"]);return(await _y(xp(t,null,_(P({},r),{method:Jl.DELETE})),r)).body}var Kt={};it(Kt,{PackageManager:()=>tn,detectPackageManager:()=>a9,executePackageAccessibleBinary:()=>g9,executePackageScript:()=>Uw,executePackageShellcode:()=>rD,executeWorkspaceAccessibleBinary:()=>qFe,executeWorkspaceLifecycleScript:()=>u9,executeWorkspaceScript:()=>c9,getPackageAccessibleBinaries:()=>Hw,getWorkspaceAccessibleBinaries:()=>l9,hasPackageScript:()=>GFe,hasWorkspaceScript:()=>tD,makeScriptEnv:()=>Vp,maybeExecuteWorkspaceLifecycleScript:()=>YFe,prepareExternalProject:()=>HFe});var Fp={};it(Fp,{getLibzipPromise:()=>$i,getLibzipSync:()=>v4});var yA=["number","number"],nP;(function(D){D[D.ZIP_ER_OK=0]="ZIP_ER_OK",D[D.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",D[D.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",D[D.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",D[D.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",D[D.ZIP_ER_READ=5]="ZIP_ER_READ",D[D.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",D[D.ZIP_ER_CRC=7]="ZIP_ER_CRC",D[D.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",D[D.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",D[D.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",D[D.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",D[D.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",D[D.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",D[D.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",D[D.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",D[D.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",D[D.ZIP_ER_EOF=17]="ZIP_ER_EOF",D[D.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",D[D.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",D[D.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",D[D.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",D[D.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",D[D.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",D[D.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",D[D.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",D[D.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",D[D.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",D[D.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",D[D.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",D[D.ZIP_ER_TELL=30]="ZIP_ER_TELL",D[D.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA"})(nP||(nP={}));var $8=t=>({get HEAP8(){return t.HEAP8},get HEAPU8(){return t.HEAPU8},errors:nP,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint16S:t._malloc(2),uint32S:t._malloc(4),uint64S:t._malloc(8),malloc:t._malloc,free:t._free,getValue:t.getValue,open:t.cwrap("zip_open","number",["string","number","number"]),openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),stat:t.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...yA,"number","number"]),fopen:t.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...yA,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...yA,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...yA,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...yA,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...yA,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number","number","number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...yA,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...yA,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"]),setMtime:t.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:t.cwrap("zipstruct_stat","number",[]),statS:t.cwrap("zipstruct_statS","number",[]),statName:t.cwrap("zipstruct_stat_name","string",["number"]),statIndex:t.cwrap("zipstruct_stat_index","number",["number"]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),error:t.cwrap("zipstruct_error","number",[]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}});var BP=null;function v4(){return BP===null&&(BP=$8(b4())),BP}async function $i(){return v4()}var jp={};it(jp,{ShellError:()=>as,execute:()=>Fw,globUtils:()=>bw});var Hp={};it(Hp,{parseResolution:()=>gw,parseShell:()=>Aw,parseSyml:()=>Ii,stringifyArgument:()=>SP,stringifyArgumentSegment:()=>xP,stringifyArithmeticExpression:()=>uw,stringifyCommand:()=>vP,stringifyCommandChain:()=>rg,stringifyCommandChainThen:()=>bP,stringifyCommandLine:()=>lw,stringifyCommandLineThen:()=>QP,stringifyEnvSegment:()=>cw,stringifyRedirectArgument:()=>Np,stringifyResolution:()=>fw,stringifyShell:()=>tg,stringifyShellLine:()=>tg,stringifySyml:()=>Qa,stringifyValueArgument:()=>ig});var k4=ie(x4());function Aw(t,e={isGlobPattern:()=>!1}){try{return(0,k4.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function tg(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:i},n)=>`${lw(r)}${i===";"?n!==t.length-1||e?";":"":" &"}`).join(" ")}function lw(t){return`${rg(t.chain)}${t.then?` ${QP(t.then)}`:""}`}function QP(t){return`${t.type} ${lw(t.line)}`}function rg(t){return`${vP(t)}${t.then?` ${bP(t.then)}`:""}`}function bP(t){return`${t.type} ${rg(t.chain)}`}function vP(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>cw(e)).join(" ")} `:""}${t.args.map(e=>SP(e)).join(" ")}`;case"subshell":return`(${tg(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"group":return`{ ${tg(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>cw(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function cw(t){return`${t.name}=${t.args[0]?ig(t.args[0]):""}`}function SP(t){switch(t.type){case"redirection":return Np(t);case"argument":return ig(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function Np(t){return`${t.subtype} ${t.args.map(e=>ig(e)).join(" ")}`}function ig(t){return t.segments.map(e=>xP(e)).join("")}function xP(t){let e=(i,n)=>n?`"${i}"`:i,r=i=>i===""?'""':i.match(/[(){}<>$|&; \t"']/)?`$'${i.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:i;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${tg(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue=="undefined"?`\${${t.name}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(i=>ig(i)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${uw(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function uw(t){let e=n=>{switch(n){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${n}"`)}},r=(n,s)=>s?`( ${n} )`:n,i=n=>r(uw(n),!["number","variable"].includes(n.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${i(t.left)} ${e(t.type)} ${i(t.right)}`}}var R4=ie(D4());function gw(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,R4.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fw(t){let e="";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+="/"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var Qw=ie(w5()),b5=ie(Q5()),$De=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,v5=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],HP=class{constructor(e){this.data=e}};function S5(t){return t.match($De)?t:JSON.stringify(t)}function x5(t){return typeof t=="undefined"?!0:typeof t=="object"&&t!==null?Object.keys(t).every(e=>x5(t[e])):!1}function GP(t,e,r){if(t===null)return`null -`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} -`;if(typeof t=="string")return`${S5(t)} -`;if(Array.isArray(t)){if(t.length===0)return`[] -`;let i=" ".repeat(e);return` -${t.map(s=>`${i}- ${GP(s,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let i,n;t instanceof HP?(i=t.data,n=!1):(i=t,n=!0);let s=" ".repeat(e),o=Object.keys(i);n&&o.sort((l,c)=>{let u=v5.indexOf(l),g=v5.indexOf(c);return u===-1&&g===-1?lc?1:0:u!==-1&&g===-1?-1:u===-1&&g!==-1?1:u-g});let a=o.filter(l=>!x5(i[l])).map((l,c)=>{let u=i[l],g=S5(l),f=GP(u,e+1,!0),h=c>0||r?s:"";return f.startsWith(` -`)?`${h}${g}:${f}`:`${h}${g}: ${f}`}).join(e===0?` -`:"")||` -`;return r?` -${a}`:`${a}`}throw new Error(`Unsupported value type (${t})`)}function Qa(t){try{let e=GP(t,0,!1);return e!==` -`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}Qa.PreserveOrdering=HP;function eRe(t){return t.endsWith(` -`)||(t+=` -`),(0,b5.parse)(t)}var tRe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function rRe(t){if(tRe.test(t))return eRe(t);let e=(0,Qw.safeLoad)(t,{schema:Qw.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function Ii(t){return rRe(t)}var U5=ie(jb()),H5=ie(require("os")),Kn=ie(require("stream")),G5=ie(require("util"));var as=class extends Error{constructor(e){super(e);this.name="ShellError"}};var bw={};it(bw,{fastGlobOptions:()=>D5,isBraceExpansion:()=>R5,isGlobPattern:()=>iRe,match:()=>nRe,micromatchOptions:()=>Sw});var k5=ie(gy()),P5=ie(require("fs")),vw=ie(Nn()),Sw={strictBrackets:!0},D5={onlyDirectories:!1,onlyFiles:!1};function iRe(t){if(!vw.default.scan(t,Sw).isGlob)return!1;try{vw.default.parse(t,Sw)}catch{return!1}return!0}function nRe(t,{cwd:e,baseFs:r}){return(0,k5.default)(t,_(P({},D5),{cwd:M.fromPortablePath(e),fs:SE(P5.default,new ah(r))}))}function R5(t){return vw.default.scan(t,Sw).isBrace}var F5=ie(bb()),Bo=ie(require("stream")),N5=ie(require("string_decoder")),wn;(function(i){i[i.STDIN=0]="STDIN",i[i.STDOUT=1]="STDOUT",i[i.STDERR=2]="STDERR"})(wn||(wn={}));var sc=new Set;function jP(){}function YP(){for(let t of sc)t.kill()}function L5(t,e,r,i){return n=>{let s=n[0]instanceof Bo.Transform?"pipe":n[0],o=n[1]instanceof Bo.Transform?"pipe":n[1],a=n[2]instanceof Bo.Transform?"pipe":n[2],l=(0,F5.default)(t,e,_(P({},i),{stdio:[s,o,a]}));return sc.add(l),sc.size===1&&(process.on("SIGINT",jP),process.on("SIGTERM",YP)),n[0]instanceof Bo.Transform&&n[0].pipe(l.stdin),n[1]instanceof Bo.Transform&&l.stdout.pipe(n[1],{end:!1}),n[2]instanceof Bo.Transform&&l.stderr.pipe(n[2],{end:!1}),{stdin:l.stdin,promise:new Promise(c=>{l.on("error",u=>{switch(sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),u.code){case"ENOENT":n[2].write(`command not found: ${t} -`),c(127);break;case"EACCES":n[2].write(`permission denied: ${t} -`),c(128);break;default:n[2].write(`uncaught error: ${u.message} -`),c(1);break}}),l.on("exit",u=>{sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),c(u!==null?u:129)})})}}}function T5(t){return e=>{let r=e[0]==="pipe"?new Bo.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}var Os=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},M5=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Gp=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:i,stderr:n}){let s=new Gp(null,e);return s.stdin=r,s.stdout=i,s.stderr=n,s}pipeTo(e,r=1){let i=new Gp(this,e),n=new M5;return i.pipe=n,i.stdout=this.stdout,i.stderr=this.stderr,(r&1)==1?this.stdout=n:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)==2?this.stderr=n:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),i}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let i;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");i=this.stderr,e[2]=i.get();let n=this.implementation(e);return this.pipe&&this.pipe.attach(n.stdin),await n.promise.then(s=>(r.close(),i.close(),s))}async run(){let e=[];for(let i=this;i;i=i.ancestor)e.push(i.exec());return(await Promise.all(e))[0]}};function xw(t,e){return Gp.start(t,e)}function O5(t,e=null){let r=new Bo.PassThrough,i=new N5.StringDecoder,n="";return r.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",t(e!==null?`${e} ${l}`:l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&t(e!==null?`${e} ${s}`:s)}),r}function K5(t,{prefix:e}){return{stdout:O5(r=>t.stdout.write(`${r} -`),t.stdout.isTTY?e:null),stderr:O5(r=>t.stderr.write(`${r} -`),t.stderr.isTTY?e:null)}}var sRe=(0,G5.promisify)(setTimeout);var Fi;(function(r){r[r.Readable=1]="Readable",r[r.Writable=2]="Writable"})(Fi||(Fi={}));function j5(t,e,r){let i=new Kn.PassThrough({autoDestroy:!0});switch(t){case wn.STDIN:(e&1)==1&&r.stdin.pipe(i,{end:!1}),(e&2)==2&&r.stdin instanceof Kn.Writable&&i.pipe(r.stdin,{end:!1});break;case wn.STDOUT:(e&1)==1&&r.stdout.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stdout,{end:!1});break;case wn.STDERR:(e&1)==1&&r.stderr.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stderr,{end:!1});break;default:throw new as(`Bad file descriptor: "${t}"`)}return i}function kw(t,e={}){let r=P(P({},t),e);return r.environment=P(P({},t.environment),e.environment),r.variables=P(P({},t.variables),e.variables),r}var oRe=new Map([["cd",async([t=(0,H5.homedir)(),...e],r,i)=>{let n=v.resolve(i.cwd,M.toPortablePath(t));if(!(await r.baseFs.statPromise(n).catch(o=>{throw o.code==="ENOENT"?new as(`cd: no such file or directory: ${t}`):o})).isDirectory())throw new as(`cd: not a directory: ${t}`);return i.cwd=n,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${M.fromPortablePath(r.cwd)} -`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,i)=>i.exitCode=parseInt(t!=null?t:i.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} -`),0)],["sleep",async([t],e,r)=>{if(typeof t=="undefined")throw new as("sleep: missing operand");let i=Number(t);if(Number.isNaN(i))throw new as(`sleep: invalid time interval '${t}'`);return await sRe(1e3*i,0)}],["__ysh_run_procedure",async(t,e,r)=>{let i=r.procedures[t[0]];return await xw(i,{stdin:new Os(r.stdin),stdout:new Os(r.stdout),stderr:new Os(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let i=r.stdin,n=r.stdout,s=r.stderr,o=[],a=[],l=[],c=0;for(;t[c]!=="--";){let g=t[c++],{type:f,fd:h}=JSON.parse(g),p=B=>{switch(h){case null:case 0:o.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},d=B=>{switch(h){case null:case 1:a.push(B);break;case 2:l.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},m=Number(t[c++]),I=c+m;for(let B=c;Be.baseFs.createReadStream(v.resolve(r.cwd,M.toPortablePath(t[B]))));break;case"<<<":p(()=>{let b=new Kn.PassThrough;return process.nextTick(()=>{b.write(`${t[B]} -`),b.end()}),b});break;case"<&":p(()=>j5(Number(t[B]),1,r));break;case">":case">>":{let b=v.resolve(r.cwd,M.toPortablePath(t[B]));d(b==="/dev/null"?new Kn.Writable({autoDestroy:!0,emitClose:!0,write(R,H,L){setImmediate(L)}}):e.baseFs.createWriteStream(b,f===">>"?{flags:"a"}:void 0))}break;case">&":d(j5(Number(t[B]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(o.length>0){let g=new Kn.PassThrough;i=g;let f=h=>{if(h===o.length)g.end();else{let p=o[h]();p.pipe(g,{end:!1}),p.on("end",()=>{f(h+1)})}};f(0)}if(a.length>0){let g=new Kn.PassThrough;n=g;for(let f of a)g.pipe(f)}if(l.length>0){let g=new Kn.PassThrough;s=g;for(let f of l)g.pipe(f)}let u=await xw(Yp(t.slice(c+1),e,r),{stdin:new Os(i),stdout:new Os(n),stderr:new Os(s)}).run();return await Promise.all(a.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),await Promise.all(l.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),u}]]);async function aRe(t,e,r){let i=[],n=new Kn.PassThrough;return n.on("data",s=>i.push(s)),await Pw(t,e,kw(r,{stdout:n})),Buffer.concat(i).toString().replace(/[\r\n]+$/,"")}async function Y5(t,e,r){let i=t.map(async s=>{let o=await oc(s.args,e,r);return{name:s.name,value:o.join(" ")}});return(await Promise.all(i)).reduce((s,o)=>(s[o.name]=o.value,s),{})}function Dw(t){return t.match(/[^ \r\n\t]+/g)||[]}async function q5(t,e,r,i,n=i){switch(t.name){case"$":i(String(process.pid));break;case"#":i(String(e.args.length));break;case"@":if(t.quoted)for(let s of e.args)n(s);else for(let s of e.args){let o=Dw(s);for(let a=0;a=0&&st+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)};async function qp(t,e,r){if(t.type==="number"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: "${t.value}", only integers are allowed`)}else if(t.type==="variable"){let i=[];await q5(_(P({},t),{quoted:!0}),e,r,s=>i.push(s));let n=Number(i.join(" "));return Number.isNaN(n)?qp({type:"variable",name:i.join(" ")},e,r):qp({type:"number",value:n},e,r)}else return ARe[t.type](await qp(t.left,e,r),await qp(t.right,e,r))}async function oc(t,e,r){let i=new Map,n=[],s=[],o=u=>{s.push(u)},a=()=>{s.length>0&&n.push(s.join("")),s=[]},l=u=>{o(u),a()},c=(u,g,f)=>{let h=JSON.stringify({type:u,fd:g}),p=i.get(h);typeof p=="undefined"&&i.set(h,p=[]),p.push(f)};for(let u of t){let g=!1;switch(u.type){case"redirection":{let f=await oc(u.args,e,r);for(let h of f)c(u.subtype,u.fd,h)}break;case"argument":for(let f of u.segments)switch(f.type){case"text":o(f.text);break;case"glob":o(f.pattern),g=!0;break;case"shell":{let h=await aRe(f.shell,e,r);if(f.quoted)o(h);else{let p=Dw(h);for(let d=0;d0){let u=[];for(let[g,f]of i.entries())u.splice(u.length,0,g,String(f.length),...f);n.splice(0,0,"__ysh_set_redirects",...u,"--")}return n}function Yp(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let i=M.fromPortablePath(r.cwd),n=r.environment;typeof n.PWD!="undefined"&&(n=_(P({},n),{PWD:i}));let[s,...o]=t;if(s==="command")return L5(o[0],o.slice(1),e,{cwd:i,env:n});let a=e.builtins.get(s);if(typeof a=="undefined")throw new Error(`Assertion failed: A builtin should exist for "${s}"`);return T5(async({stdin:l,stdout:c,stderr:u})=>{let{stdin:g,stdout:f,stderr:h}=r;r.stdin=l,r.stdout=c,r.stderr=u;try{return await a(o,e,r)}finally{r.stdin=g,r.stdout=f,r.stderr=h}})}function lRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,kw(r,{stdin:n}));return{stdin:n,promise:s}}}function cRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,r);return{stdin:n,promise:s}}}function J5(t,e,r,i){if(e.length===0)return t;{let n;do n=String(Math.random());while(Object.prototype.hasOwnProperty.call(i.procedures,n));return i.procedures=P({},i.procedures),i.procedures[n]=t,Yp([...e,"__ysh_run_procedure",n],r,i)}}async function W5(t,e,r){let i=t,n=null,s=null;for(;i;){let o=i.then?P({},r):r,a;switch(i.type){case"command":{let l=await oc(i.args,e,r),c=await Y5(i.envs,e,r);a=i.envs.length?Yp(l,e,kw(o,{environment:c})):Yp(l,e,o)}break;case"subshell":{let l=await oc(i.args,e,r),c=lRe(i.subshell,e,o);a=J5(c,l,e,o)}break;case"group":{let l=await oc(i.args,e,r),c=cRe(i.group,e,o);a=J5(c,l,e,o)}break;case"envs":{let l=await Y5(i.envs,e,r);o.environment=P(P({},o.environment),l),a=Yp(["true"],e,o)}break}if(typeof a=="undefined")throw new Error("Assertion failed: An action should have been generated");if(n===null)s=xw(a,{stdin:new Os(o.stdin),stdout:new Os(o.stdout),stderr:new Os(o.stderr)});else{if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(n){case"|":s=s.pipeTo(a,wn.STDOUT);break;case"|&":s=s.pipeTo(a,wn.STDOUT|wn.STDERR);break}}i.then?(n=i.then.type,i=i.then.chain):i=null}if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await s.run()}async function uRe(t,e,r,{background:i=!1}={}){function n(s){let o=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],a=o[s%o.length];return U5.default.hex(a)}if(i){let s=r.nextBackgroundJobIndex++,o=n(s),a=`[${s}]`,l=o(a),{stdout:c,stderr:u}=K5(r,{prefix:l});return r.backgroundJobs.push(W5(t,e,kw(r,{stdout:c,stderr:u})).catch(g=>u.write(`${g.message} -`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${l}, '${o(rg(t))}' has ended -`)})),0}return await W5(t,e,r)}async function gRe(t,e,r,{background:i=!1}={}){let n,s=a=>{n=a,r.variables["?"]=String(a)},o=async a=>{try{return await uRe(a.chain,e,r,{background:i&&typeof a.then=="undefined"})}catch(l){if(!(l instanceof as))throw l;return r.stderr.write(`${l.message} -`),1}};for(s(await o(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":n===0&&s(await o(t.then.line));break;case"||":n!==0&&s(await o(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return n}async function Pw(t,e,r){let i=r.backgroundJobs;r.backgroundJobs=[];let n=0;for(let{command:s,type:o}of t){if(n=await gRe(s,e,r,{background:o==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(n)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=i,n}function z5(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>Rw(e));case"arithmetic":return qP(t.arithmetic);case"shell":return JP(t.shell);default:return!1}}function Rw(t){switch(t.type){case"redirection":return t.args.some(e=>Rw(e));case"argument":return t.segments.some(e=>z5(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function qP(t){switch(t.type){case"variable":return z5(t);case"number":return!1;default:return qP(t.left)||qP(t.right)}}function JP(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let i;switch(r.type){case"subshell":i=JP(r.subshell);break;case"command":i=r.envs.some(n=>n.args.some(s=>Rw(s)))||r.args.some(n=>Rw(n));break}if(i)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function Fw(t,e=[],{baseFs:r=new Wt,builtins:i={},cwd:n=M.toPortablePath(process.cwd()),env:s=process.env,stdin:o=process.stdin,stdout:a=process.stdout,stderr:l=process.stderr,variables:c={},glob:u=bw}={}){let g={};for(let[p,d]of Object.entries(s))typeof d!="undefined"&&(g[p]=d);let f=new Map(oRe);for(let[p,d]of Object.entries(i))f.set(p,d);o===null&&(o=new Kn.PassThrough,o.end());let h=Aw(t,u);if(!JP(h)&&h.length>0&&e.length>0){let{command:p}=h[h.length-1];for(;p.then;)p=p.then.line;let d=p.chain;for(;d.then;)d=d.then.chain;d.type==="command"&&(d.args=d.args.concat(e.map(m=>({type:"argument",segments:[{type:"text",text:m}]}))))}return await Pw(h,{args:e,baseFs:r,builtins:f,initialStdin:o,initialStdout:a,initialStderr:l,glob:u},{cwd:n,environment:g,exitCode:null,procedures:{},stdin:o,stdout:a,stderr:l,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var s9=ie(ZP()),o9=ie(Wp()),cc=ie(require("stream"));var J6=ie(Or());var zp=class{supportsDescriptor(e,r){return!!(e.range.startsWith(zp.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(zp.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[i.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.getWorkspaceByCwd(e.reference.slice(zp.protocol.length));return _(P({},e),{version:i.manifest.version||"0.0.0",languageName:"unknown",linkType:gt.SOFT,conditions:null,dependencies:new Map([...i.manifest.dependencies,...i.manifest.devDependencies]),peerDependencies:new Map([...i.manifest.peerDependencies]),dependenciesMeta:i.manifest.dependenciesMeta,peerDependenciesMeta:i.manifest.peerDependenciesMeta,bin:i.manifest.bin})}},Yr=zp;Yr.protocol="workspace:";var qt={};it(qt,{SemVer:()=>j6.SemVer,satisfiesWithPrereleases:()=>lc,validRange:()=>Us});var Lw=ie(Or()),j6=ie(Or()),Y6=new Map;function lc(t,e,r=!1){if(!t)return!1;let i=`${e}${r}`,n=Y6.get(i);if(typeof n=="undefined")try{n=new Lw.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{Y6.set(i,n||null)}else if(n===null)return!1;let s;try{s=new Lw.default.SemVer(t,n)}catch(o){return!1}return n.test(s)?!0:(s.prerelease&&(s.prerelease=[]),n.set.some(o=>{for(let a of o)a.semver.prerelease&&(a.semver.prerelease=[]);return o.every(a=>a.test(s))}))}var q6=new Map;function Us(t){if(t.indexOf(":")!==-1)return null;let e=q6.get(t);if(typeof e!="undefined")return e;try{e=new Lw.default.Range(t)}catch{e=null}return q6.set(t,e),e}var vA=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new Wt}={}){let i=v.join(e,"package.json");return await r.existsPromise(i)?await vA.fromFile(i,{baseFs:r}):null}static async find(e,{baseFs:r}={}){let i=await vA.tryFind(e,{baseFs:r});if(i===null)throw new Error("Manifest not found");return i}static async fromFile(e,{baseFs:r=new Wt}={}){let i=new vA;return await i.loadFile(e,{baseFs:r}),i}static fromText(e){let r=new vA;return r.loadFromText(e),r}static isManifestFieldCompatible(e,r){if(e===null)return!0;let i=!0,n=!1;for(let s of e)if(s[0]==="!"){if(n=!0,r===s.slice(1))return!1}else if(i=!1,s===r)return!0;return n&&i}loadFromText(e){let r;try{r=JSON.parse(z6(e)||"{}")}catch(i){throw i.message+=` (when parsing ${e})`,i}this.load(r),this.indent=W6(e)}async loadFile(e,{baseFs:r=new Wt}){let i=await r.readFilePromise(e,"utf8"),n;try{n=JSON.parse(z6(i)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(n),this.indent=W6(i)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let i=[];if(this.name=null,typeof e.name=="string")try{this.name=En(e.name)}catch(s){i.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let s=[];this.os=s;for(let o of e.os)typeof o!="string"?i.push(new Error("Parsing failed for the 'os' field")):s.push(o)}else this.os=null;if(Array.isArray(e.cpu)){let s=[];this.cpu=s;for(let o of e.cpu)typeof o!="string"?i.push(new Error("Parsing failed for the 'cpu' field")):s.push(o)}else this.cpu=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=en(e.main):this.main=null,typeof e.module=="string"?this.module=en(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=en(e.browser);else{this.browser=new Map;for(let[s,o]of Object.entries(e.browser))this.browser.set(en(s),typeof o=="string"?en(o):o)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,en(e.bin)):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[s,o]of Object.entries(e.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.bin.set(s,en(o))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[s,o]of Object.entries(e.scripts)){if(typeof o!="string"){i.push(new Error(`Invalid script definition for '${s}'`));continue}this.scripts.set(s,o)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[s,o]of Object.entries(e.dependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[s,o]of Object.entries(e.devDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.devDependencies.set(l.identHash,l)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[s,o]of Object.entries(e.peerDependencies)){let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}(typeof o!="string"||!o.startsWith(Yr.protocol)&&!Us(o))&&(i.push(new Error(`Invalid dependency range for '${s}'`)),o="*");let l=Yt(a,o);this.peerDependencies.set(l.identHash,l)}typeof e.workspaces=="object"&&e.workspaces.nohoist&&i.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let n=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let s of n){if(typeof s!="string"){i.push(new Error(`Invalid workspace definition for '${s}'`));continue}this.workspaceDefinitions.push({pattern:s})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[s,o]of Object.entries(e.dependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}`));continue}let a=pA(s),l=this.ensureDependencyMeta(a),c=Tw(o.built,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid built meta field for '${s}'`));continue}let u=Tw(o.optional,{yamlCompatibilityMode:r});if(u===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}let g=Tw(o.unplugged,{yamlCompatibilityMode:r});if(g===null){i.push(new Error(`Invalid unplugged meta field for '${s}'`));continue}Object.assign(l,{built:c,optional:u,unplugged:g})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[s,o]of Object.entries(e.peerDependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}'`));continue}let a=pA(s),l=this.ensurePeerDependencyMeta(a),c=Tw(o.optional,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}Object.assign(l,{optional:c})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[s,o]of Object.entries(e.resolutions)){if(typeof o!="string"){i.push(new Error(`Invalid resolution entry for '${s}'`));continue}try{this.resolutions.push({pattern:gw(s),reference:o})}catch(a){i.push(a);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let s of e.files){if(typeof s!="string"){i.push(new Error(`Invalid files entry for '${s}'`));continue}this.files.add(s)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=en(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=en(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=en(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[s,o]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(en(s),typeof o=="string"?en(o):o)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,en(e.publishConfig.bin)]]):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[s,o]of Object.entries(e.publishConfig.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.publishConfig.bin.set(s,en(o))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let s of e.publishConfig.executableFiles){if(typeof s!="string"){i.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(en(s))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let s of Object.keys(e.installConfig))s==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:i.push(new Error("Invalid hoisting limits definition")):s=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:i.push(new Error("Invalid selfReferences definition, must be a boolean value")):i.push(new Error(`Unrecognized installConfig key: ${s}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[s,o]of Object.entries(e.optionalDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(g){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l);let c=Yt(a,"unknown"),u=this.ensureDependencyMeta(c);Object.assign(u,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=i}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(V6("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(V6("cpu",this.cpu)),e.length>0?e.join(" & "):null}isCompatibleWithOS(e){return vA.isManifestFieldCompatible(this.os,e)}isCompatibleWithCPU(e){return vA.isManifestFieldCompatible(this.cpu,e)}ensureDependencyMeta(e){if(e.range!=="unknown"&&!J6.default.valid(e.range))throw new Error(`Invalid meta field range for '${In(e)}'`);let r=St(e),i=e.range!=="unknown"?e.range:null,n=this.dependenciesMeta.get(r);n||this.dependenciesMeta.set(r,n=new Map);let s=n.get(i);return s||n.set(i,s={}),s}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${In(e)}'`);let r=St(e),i=this.peerDependenciesMeta.get(r);return i||this.peerDependenciesMeta.set(r,i={}),i}setRawField(e,r,{after:i=[]}={}){let n=new Set(i.filter(s=>Object.prototype.hasOwnProperty.call(this.raw,s)));if(n.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=r;else{let s=this.raw,o=this.raw={},a=!1;for(let l of Object.keys(s))o[l]=s[l],a||(n.delete(l),n.size===0&&(o[e]=r,a=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){var s;if(Object.assign(e,this.raw),this.name!==null?e.name=St(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let o=this.browser;typeof o=="string"?e.browser=o:o instanceof Map&&(e.browser=Object.assign({},...Array.from(o.keys()).sort().map(a=>({[a]:o.get(a)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(o=>({[o]:this.bin.get(o)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces=_(P({},this.raw.workspaces),{packages:this.workspaceDefinitions.map(({pattern:o})=>o)}):e.workspaces=this.workspaceDefinitions.map(({pattern:o})=>o):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let i=[],n=[];for(let o of this.dependencies.values()){let a=this.dependenciesMeta.get(St(o)),l=!1;if(r&&a){let c=a.get(null);c&&c.optional&&(l=!0)}l?n.push(o):i.push(o)}i.length>0?e.dependencies=Object.assign({},...Ou(i).map(o=>({[St(o)]:o.range}))):delete e.dependencies,n.length>0?e.optionalDependencies=Object.assign({},...Ou(n).map(o=>({[St(o)]:o.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...Ou(this.devDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...Ou(this.peerDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[o,a]of gn(this.dependenciesMeta.entries(),([l,c])=>l))for(let[l,c]of gn(a.entries(),([u,g])=>u!==null?`0${u}`:"1")){let u=l!==null?In(Yt(En(o),l)):o,g=P({},c);r&&l===null&&delete g.optional,Object.keys(g).length!==0&&(e.dependenciesMeta[u]=g)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...gn(this.peerDependenciesMeta.entries(),([o,a])=>o).map(([o,a])=>({[o]:a}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:o,reference:a})=>({[fw(o)]:a}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){(s=e.scripts)!=null||(e.scripts={});for(let o of Object.keys(e.scripts))this.scripts.has(o)||delete e.scripts[o];for(let[o,a]of this.scripts.entries())e.scripts[o]=a}else delete e.scripts;return e}},Ze=vA;Ze.fileName="package.json",Ze.allDependencies=["dependencies","devDependencies","peerDependencies"],Ze.hardDependencies=["dependencies","devDependencies"];function W6(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function z6(t){return t.charCodeAt(0)===65279?t.slice(1):t}function en(t){return t.replace(/\\/g,"/")}function Tw(t,{yamlCompatibilityMode:e}){return e?Kv(t):typeof t=="undefined"||typeof t=="boolean"?t:null}function _6(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let i=r%2==0?"":"!",n=e.slice(r);return`${i}${t}=${n}`}function V6(t,e){return e.length===1?_6(t,e[0]):`(${e.map(r=>_6(t,r)).join(" | ")})`}var e9=ie($6()),Ow=ie(ml());var t9=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],r9=80,NFe=new Set([z.FETCH_NOT_CACHED,z.UNUSED_CACHE_ENTRY]),LFe=5,SA=Ow.default.GITHUB_ACTIONS?{start:t=>`::group::${t} -`,end:t=>`::endgroup:: -`}:Ow.default.TRAVIS?{start:t=>`travis_fold:start:${t} -`,end:t=>`travis_fold:end:${t} -`}:Ow.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r${t} -`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r`}:null,i9=new Date,TFe=["iTerm.app","Apple_Terminal"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,MFe=t=>t,Kw=MFe({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),OFe=TFe&&Object.keys(Kw).find(t=>{let e=Kw[t];return!(e.date&&(e.date[0]!==i9.getDate()||e.date[1]!==i9.getMonth()+1))})||"default";function n9(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let n=KE(t===null?0:t);return!r&&t===null?Ve(e,n,"grey"):n}function eD(t,{configuration:e,json:r}){let i=n9(t,{configuration:e,json:r});if(!i||t===null||t===z.UNNAMED)return i;let n=z[t],s=`https://yarnpkg.com/advanced/error-codes#${i}---${n}`.toLowerCase();return Ku(e,i,s)}var Fe=class extends Xi{constructor({configuration:e,stdout:r,json:i=!1,includeFooter:n=!0,includeLogs:s=!i,includeInfos:o=s,includeWarnings:a=s,forgettableBufferSize:l=LFe,forgettableNames:c=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.forgettableLines=[];Cp(this,{configuration:e}),this.configuration=e,this.forgettableBufferSize=l,this.forgettableNames=new Set([...c,...NFe]),this.includeFooter=n,this.includeInfos=o,this.includeWarnings=a,this.json=i,this.stdout=r;let u=this.configuration.get("progressBarStyle")||OFe;if(!Object.prototype.hasOwnProperty.call(Kw,u))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=Kw[u];let g="\u27A4 YN0000: \u250C ".length,f=Math.max(0,Math.min(process.stdout.columns-g,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*f/80)}static async start(e,r){let i=new this(e),n=process.emitWarning;process.emitWarning=(s,o)=>{if(typeof s!="string"){let l=s;s=l.message,o=o!=null?o:l.name}let a=typeof o!="undefined"?`${o}: ${s}`:s;i.reportWarning(z.UNNAMED,a)};try{await r(i)}catch(s){i.reportExceptionOnce(s)}finally{await i.finalize(),process.emitWarning=n}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){this.cacheHitCount+=1}reportCacheMiss(e,r){this.lastCacheMiss=e,this.cacheMissCount+=1,typeof r!="undefined"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(z.FETCH_NOT_CACHED,r)}startTimerSync(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startTimerPromise(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return await s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startCacheReport(e){let r=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await e()}catch(i){throw this.reportExceptionOnce(i),i}finally{r!==null&&this.reportCacheChanges(r)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(e,r){if(!this.includeInfos)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"",s=`${Ve(this.configuration,"\u27A4","blueBright")} ${n}${this.formatIndent()}${r}`;if(this.json)this.reportJson({type:"info",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r});else if(this.forgettableNames.has(e))if(this.forgettableLines.push(s),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(s,{truncate:!0});else this.writeLineWithForgettableReset(s)}reportWarning(e,r){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"warning",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","yellowBright")} ${n}${this.formatIndent()}${r}`)}reportError(e,r){this.errorCount+=1,this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"error",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","redBright")} ${n}${this.formatIndent()}${r}`,{truncate:!1})}reportProgress(e){let r=!1,i=Promise.resolve().then(async()=>{let s={progress:0,title:void 0};this.progress.set(e,{definition:s,lastScaledSize:-1}),this.refreshProgress(-1);for await(let{progress:o,title:a}of e)r||s.progress===o&&s.title===a||(s.progress=o,s.title=a,this.refreshProgress());n()}),n=()=>{r||(r=!0,this.progress.delete(e),this.refreshProgress(1))};return _(P({},i),{stop:n})}reportJson(e){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(e)}`)}async finalize(){if(!this.includeFooter)return;let e="";this.errorCount>0?e="Failed with errors":this.warningCount>0?e="Done with warnings":e="Done";let r=Ve(this.configuration,Date.now()-this.startTime,Le.DURATION),i=this.configuration.get("enableTimers")?`${e} in ${r}`:e;this.errorCount>0?this.reportError(z.UNNAMED,i):this.warningCount>0?this.reportWarning(z.UNNAMED,i):this.reportInfo(z.UNNAMED,i)}writeLine(e,{truncate:r}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(e,{truncate:r})} -`),this.writeProgress()}writeLineWithForgettableReset(e,{truncate:r}={}){this.forgettableLines=[],this.writeLine(e,{truncate:r})}writeLines(e,{truncate:r}={}){this.clearProgress({delta:e.length});for(let i of e)this.stdout.write(`${this.truncate(i,{truncate:r})} -`);this.writeProgress()}reportCacheChanges({cacheHitCount:e,cacheMissCount:r}){let i=this.cacheHitCount-e,n=this.cacheMissCount-r;if(i===0&&n===0)return;let s="";this.cacheHitCount>1?s+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?s+=" - one package was already cached":s+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?s+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(s+=`, one had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?s+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(s+=` - one package had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`),this.reportInfo(z.FETCH_NOT_CACHED,s)}commit(){let e=this.uncommitted;this.uncommitted=new Set;for(let r of e)r.committed=!0,r.action()}clearProgress({delta:e=0,clear:r=!1}){!this.configuration.get("enableProgressBars")||this.json||this.progress.size+e>0&&(this.stdout.write(`[${this.progress.size+e}A`),(e>0||r)&&this.stdout.write(""))}writeProgress(){if(!this.configuration.get("enableProgressBars")||this.json||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let e=Date.now();e-this.progressTime>r9&&(this.progressFrame=(this.progressFrame+1)%t9.length,this.progressTime=e);let r=t9[this.progressFrame];for(let i of this.progress.values()){let n=this.progressStyle.chars[0].repeat(i.lastScaledSize),s=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-i.lastScaledSize),o=this.formatName(null),a=o?`${o}: `:"";this.stdout.write(`${Ve(this.configuration,"\u27A4","blueBright")} ${a}${r} ${n}${s} -`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress()},r9)}refreshProgress(e=0){let r=!1;if(this.progress.size===0)r=!0;else for(let i of this.progress.values()){let n=Math.trunc(this.progressMaxScaledSize*i.definition.progress),s=i.lastScaledSize;if(i.lastScaledSize=n,n!==s){r=!0;break}}r&&(this.clearProgress({delta:e}),this.writeProgress())}truncate(e,{truncate:r}={}){return this.configuration.get("enableProgressBars")||(r=!1),typeof r=="undefined"&&(r=this.configuration.get("preferTruncatedLines")),r&&(e=(0,e9.default)(e,0,process.stdout.columns-1)),e}formatName(e){return n9(e,{configuration:this.configuration,json:this.json})}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};var Zr="3.1.1";var tn;(function(n){n.Yarn1="Yarn Classic",n.Yarn2="Yarn",n.Npm="npm",n.Pnpm="pnpm"})(tn||(tn={}));async function ba(t,e,r,i=[]){if(process.platform==="win32"){let n=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${i.map(s=>`"${s.replace('"','""')}"`).join(" ")} %*`;await T.writeFilePromise(v.format({dir:t,name:e,ext:".cmd"}),n)}await T.writeFilePromise(v.join(t,e),`#!/bin/sh -exec "${r}" ${i.map(n=>`'${n.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" -`,{mode:493})}async function a9(t){let e=await Ze.tryFind(t);if(e==null?void 0:e.packageManager){let i=Qy(e.packageManager);if(i==null?void 0:i.name){let n=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[s]=i.reference.split(".");switch(i.name){case"yarn":return{packageManager:Number(s)===1?tn.Yarn1:tn.Yarn2,reason:n};case"npm":return{packageManager:tn.Npm,reason:n};case"pnpm":return{packageManager:tn.Pnpm,reason:n}}}}let r;try{r=await T.readFilePromise(v.join(t,wt.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:tn.Yarn2,reason:'"__metadata" key found in yarn.lock'}:{packageManager:tn.Yarn1,reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:T.existsSync(v.join(t,"package-lock.json"))?{packageManager:tn.Npm,reason:`found npm's "package-lock.json" lockfile`}:T.existsSync(v.join(t,"pnpm-lock.yaml"))?{packageManager:tn.Pnpm,reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Vp({project:t,locator:e,binFolder:r,lifecycleScript:i}){var l,c;let n={};for(let[u,g]of Object.entries(process.env))typeof g!="undefined"&&(n[u.toLowerCase()!=="path"?u:"PATH"]=g);let s=M.fromPortablePath(r);n.BERRY_BIN_FOLDER=M.fromPortablePath(s);let o=process.env.COREPACK_ROOT?M.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([ba(r,"node",process.execPath),...Zr!==null?[ba(r,"run",process.execPath,[o,"run"]),ba(r,"yarn",process.execPath,[o]),ba(r,"yarnpkg",process.execPath,[o]),ba(r,"node-gyp",process.execPath,[o,"run","--top-level","node-gyp"])]:[]]),t&&(n.INIT_CWD=M.fromPortablePath(t.configuration.startingCwd),n.PROJECT_CWD=M.fromPortablePath(t.cwd)),n.PATH=n.PATH?`${s}${M.delimiter}${n.PATH}`:`${s}`,n.npm_execpath=`${s}${M.sep}yarn`,n.npm_node_execpath=`${s}${M.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let u=t.tryWorkspaceByLocator(e),g=u?(l=u.manifest.version)!=null?l:"":(c=t.storedPackages.get(e.locatorHash).version)!=null?c:"";n.npm_package_name=St(e),n.npm_package_version=g}let a=Zr!==null?`yarn/${Zr}`:`yarn/${mu("@yarnpkg/core").version}-core`;return n.npm_config_user_agent=`${a} npm/? node/${process.versions.node} ${process.platform} ${process.arch}`,i&&(n.npm_lifecycle_event=i),t&&await t.configuration.triggerHook(u=>u.setupScriptEnvironment,t,n,async(u,g,f)=>await ba(r,kr(u),g,f)),n}var KFe=2,UFe=(0,o9.default)(KFe);async function HFe(t,e,{configuration:r,report:i,workspace:n=null,locator:s=null}){await UFe(async()=>{await T.mktempPromise(async o=>{let a=v.join(o,"pack.log"),l=null,{stdout:c,stderr:u}=r.getSubprocessStreams(a,{prefix:M.fromPortablePath(t),report:i}),g=s&&Io(s)?lp(s):s,f=g?is(g):"an external project";c.write(`Packing ${f} from sources -`);let h=await a9(t),p;h!==null?(c.write(`Using ${h.packageManager} for bootstrap. Reason: ${h.reason} - -`),p=h.packageManager):(c.write(`No package manager configuration detected; defaulting to Yarn - -`),p=tn.Yarn2),await T.mktempPromise(async d=>{let m=await Vp({binFolder:d}),B=new Map([[tn.Yarn1,async()=>{let R=n!==null?["workspace",n]:[],H=await to("yarn",["set","version","classic","--only-if-needed"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;await T.appendFilePromise(v.join(t,".npmignore"),`/.yarn -`),c.write(` -`);let L=await to("yarn",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(L.code!==0)return L.code;c.write(` -`);let K=await to("yarn",[...R,"pack","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return K.code!==0?K.code:0}],[tn.Yarn2,async()=>{let R=n!==null?["workspace",n]:[];m.YARN_ENABLE_INLINE_BUILDS="1";let H=v.join(t,wt.lockfile);await T.existsPromise(H)||await T.writeFilePromise(H,"");let L=await to("yarn",[...R,"pack","--install-if-needed","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return L.code!==0?L.code:0}],[tn.Npm,async()=>{if(n!==null){let A=new cc.PassThrough,V=Cu(A);A.pipe(c,{end:!1});let W=await to("npm",["--version"],{cwd:t,env:m,stdin:l,stdout:A,stderr:u,end:Pn.Never});if(A.end(),W.code!==0)return c.end(),u.end(),W.code;let X=(await V).toString().trim();if(!lc(X,">=7.x")){let F=Eo(null,"npm"),D=Yt(F,X),he=Yt(F,">=7.x");throw new Error(`Workspaces aren't supported by ${Xt(r,D)}; please upgrade to ${Xt(r,he)} (npm has been detected as the primary package manager for ${Ve(r,t,Le.PATH)})`)}}let R=n!==null?["--workspace",n]:[];delete m.npm_config_user_agent;let H=await to("npm",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;let L=new cc.PassThrough,K=Cu(L);L.pipe(c);let J=await to("npm",["pack","--silent",...R],{cwd:t,env:m,stdin:l,stdout:L,stderr:u});if(J.code!==0)return J.code;let ne=(await K).toString().trim().replace(/^.*\n/s,""),q=v.resolve(t,M.toPortablePath(ne));return await T.renamePromise(q,e),0}]]).get(p);if(typeof B=="undefined")throw new Error("Assertion failed: Unsupported workflow");let b=await B();if(!(b===0||typeof b=="undefined"))throw T.detachTemp(o),new nt(z.PACKAGE_PREPARATION_FAILED,`Packing the package failed (exit code ${b}, logs can be found here: ${Ve(r,a,Le.PATH)})`)})})})}async function GFe(t,e,{project:r}){let i=r.tryWorkspaceByLocator(t);if(i!==null)return tD(i,e);let n=r.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r.configuration,t)} not found in the project`);return await Jn.openPromise(async s=>{let o=r.configuration,a=r.configuration.getLinkers(),l={project:r,report:new Fe({stdout:new cc.PassThrough,configuration:o})},c=a.find(h=>h.supportsPackage(n,l));if(!c)throw new Error(`The package ${lt(r.configuration,n)} isn't supported by any of the available linkers`);let u=await c.findPackageLocation(n,l),g=new Ft(u,{baseFs:s});return(await Ze.find(Se.dot,{baseFs:g})).scripts.has(e)},{libzip:await $i()})}async function Uw(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{manifest:c,env:u,cwd:g}=await A9(t,{project:n,binFolder:l,cwd:i,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f=="undefined")return 1;let h=async()=>await Fw(f,r,{cwd:g,env:u,stdin:s,stdout:o,stderr:a});return await(await n.configuration.reduceHook(d=>d.wrapScriptExecution,h,n,t,e,{script:f,args:r,cwd:g,env:u,stdin:s,stdout:o,stderr:a}))()})}async function rD(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{env:c,cwd:u}=await A9(t,{project:n,binFolder:l,cwd:i});return await Fw(e,r,{cwd:u,env:c,stdin:s,stdout:o,stderr:a})})}async function jFe(t,{binFolder:e,cwd:r,lifecycleScript:i}){let n=await Vp({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:i});return await Promise.all(Array.from(await l9(t),([s,[,o]])=>ba(e,kr(s),process.execPath,[o]))),typeof r=="undefined"&&(r=v.dirname(await T.realpathPromise(v.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:n,cwd:r}}async function A9(t,{project:e,binFolder:r,cwd:i,lifecycleScript:n}){let s=e.tryWorkspaceByLocator(t);if(s!==null)return jFe(s,{binFolder:r,cwd:i,lifecycleScript:n});let o=e.storedPackages.get(t.locatorHash);if(!o)throw new Error(`Package for ${lt(e.configuration,t)} not found in the project`);return await Jn.openPromise(async a=>{let l=e.configuration,c=e.configuration.getLinkers(),u={project:e,report:new Fe({stdout:new cc.PassThrough,configuration:l})},g=c.find(m=>m.supportsPackage(o,u));if(!g)throw new Error(`The package ${lt(e.configuration,o)} isn't supported by any of the available linkers`);let f=await Vp({project:e,locator:t,binFolder:r,lifecycleScript:n});await Promise.all(Array.from(await Hw(t,{project:e}),([m,[,I]])=>ba(r,kr(m),process.execPath,[I])));let h=await g.findPackageLocation(o,u),p=new Ft(h,{baseFs:a}),d=await Ze.find(Se.dot,{baseFs:p});return typeof i=="undefined"&&(i=h),{manifest:d,binFolder:r,env:f,cwd:i}},{libzip:await $i()})}async function c9(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o}){return await Uw(t.anchoredLocator,e,r,{cwd:i,project:t.project,stdin:n,stdout:s,stderr:o})}function tD(t,e){return t.manifest.scripts.has(e)}async function u9(t,e,{cwd:r,report:i}){let{configuration:n}=t.project,s=null;await T.mktempPromise(async o=>{let a=v.join(o,`${e}.log`),l=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${M.fromPortablePath(t.cwd)}") -`,{stdout:c,stderr:u}=n.getSubprocessStreams(a,{report:i,prefix:lt(n,t.anchoredLocator),header:l});i.reportInfo(z.LIFECYCLE_SCRIPT,`Calling the "${e}" lifecycle script`);let g=await c9(t,e,[],{cwd:r,stdin:s,stdout:c,stderr:u});if(c.end(),u.end(),g!==0)throw T.detachTemp(o),new nt(z.LIFECYCLE_SCRIPT,`${(0,s9.default)(e)} script failed (exit code ${Ve(n,g,Le.NUMBER)}, logs can be found here: ${Ve(n,a,Le.PATH)}); run ${Ve(n,`yarn ${e}`,Le.CODE)} to investigate`)})}async function YFe(t,e,r){tD(t,e)&&await u9(t,e,r)}async function Hw(t,{project:e}){let r=e.configuration,i=new Map,n=e.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r,t)} not found in the project`);let s=new cc.Writable,o=r.getLinkers(),a={project:e,report:new Fe({configuration:r,stdout:s})},l=new Set([t.locatorHash]);for(let u of n.dependencies.values()){let g=e.storedResolutions.get(u.descriptorHash);if(!g)throw new Error(`Assertion failed: The resolution (${Xt(r,u)}) should have been registered`);l.add(g)}let c=await Promise.all(Array.from(l,async u=>{let g=e.storedPackages.get(u);if(!g)throw new Error(`Assertion failed: The package (${u}) should have been registered`);if(g.bin.size===0)return kl.skip;let f=o.find(p=>p.supportsPackage(g,a));if(!f)return kl.skip;let h=null;try{h=await f.findPackageLocation(g,a)}catch(p){if(p.code==="LOCATOR_NOT_INSTALLED")return kl.skip;throw p}return{dependency:g,packageLocation:h}}));for(let u of c){if(u===kl.skip)continue;let{dependency:g,packageLocation:f}=u;for(let[h,p]of g.bin)i.set(h,[g,M.fromPortablePath(v.resolve(f,p))])}return i}async function l9(t){return await Hw(t.anchoredLocator,{project:t.project})}async function g9(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a,nodeArgs:l=[],packageAccessibleBinaries:c}){c!=null||(c=await Hw(t,{project:n}));let u=c.get(e);if(!u)throw new Error(`Binary not found (${e}) for ${lt(n.configuration,t)}`);return await T.mktempPromise(async g=>{let[,f]=u,h=await Vp({project:n,locator:t,binFolder:g});await Promise.all(Array.from(c,([d,[,m]])=>ba(h.BERRY_BIN_FOLDER,kr(d),process.execPath,[m])));let p;try{p=await to(process.execPath,[...l,f,...r],{cwd:i,env:h,stdin:s,stdout:o,stderr:a})}finally{await T.removePromise(h.BERRY_BIN_FOLDER)}return p.code})}async function qFe(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a}){return await g9(t.anchoredLocator,e,r,{project:t.project,cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a})}var Ai={};it(Ai,{convertToZip:()=>lTe,extractArchiveTo:()=>uTe,makeArchiveFromDirectory:()=>ATe});var d_=ie(require("stream")),C_=ie(Z7());var u_=ie(require("os")),g_=ie(c_()),f_=ie(require("worker_threads")),IR=class{constructor(e){this.source=e;this.pool=[];this.queue=new g_.default({concurrency:Math.max(1,(0,u_.cpus)().length)});let r=setTimeout(()=>{if(!(this.queue.size!==0||this.queue.pending!==0)){for(let i of this.pool)i.terminate();this.pool=[]}},1e3).unref();this.queue.on("idle",()=>{r.refresh()})}run(e){return this.queue.add(()=>{var i;let r=(i=this.pool.pop())!=null?i:new f_.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return r.ref(),new Promise((n,s)=>{let o=a=>{a!==0&&s(new Error(`Worker exited with code ${a}`))};r.once("message",a=>{this.pool.push(r),r.unref(),r.off("error",s),r.off("exit",o),n(a)}),r.once("error",s),r.once("exit",o),r.postMessage(e)})})}};var m_=ie(p_());async function ATe(t,{baseFs:e=new Wt,prefixPath:r=Se.root,compressionLevel:i,inMemory:n=!1}={}){let s=await $i(),o;if(n)o=new Jr(null,{libzip:s,level:i});else{let l=await T.mktempPromise(),c=v.join(l,"archive.zip");o=new Jr(c,{create:!0,libzip:s,level:i})}let a=v.resolve(Se.root,r);return await o.copyPromise(a,t,{baseFs:e,stableTime:!0,stableSort:!0}),o}var E_;async function lTe(t,e){let r=await T.mktempPromise(),i=v.join(r,"archive.zip");return E_||(E_=new IR((0,m_.getContent)())),await E_.run({tmpFile:i,tgz:t,opts:e}),new Jr(i,{libzip:await $i(),level:e.compressionLevel})}async function*cTe(t){let e=new C_.default.Parse,r=new d_.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",i=>{r.write(i)}),e.on("error",i=>{r.destroy(i)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let i of r){let n=i;yield n,n.resume()}}async function uTe(t,e,{stripComponents:r=0,prefixPath:i=Se.dot}={}){var s,o;function n(a){if(a.path[0]==="/")return!0;let l=a.path.split(/\//g);return!!(l.some(c=>c==="..")||l.length<=r)}for await(let a of cTe(t)){if(n(a))continue;let l=v.normalize(M.toPortablePath(a.path)).replace(/\/$/,"").split(/\//g);if(l.length<=r)continue;let c=l.slice(r).join("/"),u=v.join(i,c),g=420;switch((a.type==="Directory"||(((s=a.mode)!=null?s:0)&73)!=0)&&(g|=73),a.type){case"Directory":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.mkdirSync(u,{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.writeFileSync(u,await Cu(a),{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.symlinkSync(a.linkpath,u),(o=e.lutimesSync)==null||o.call(e,u,mr.SAFE_TIME,mr.SAFE_TIME);break}}return e}var Hs={};it(Hs,{emitList:()=>gTe,emitTree:()=>b_,treeNodeToJson:()=>Q_,treeNodeToTreeify:()=>B_});var w_=ie(y_());function B_(t,{configuration:e}){let r={},i=(n,s)=>{let o=Array.isArray(n)?n.entries():Object.entries(n);for(let[a,{label:l,value:c,children:u}]of o){let g=[];typeof l!="undefined"&&g.push(Py(e,l,Gl.BOLD)),typeof c!="undefined"&&g.push(Ve(e,c[0],c[1])),g.length===0&&g.push(Py(e,`${a}`,Gl.BOLD));let f=g.join(": "),h=s[f]={};typeof u!="undefined"&&i(u,h)}};if(typeof t.children=="undefined")throw new Error("The root node must only contain children");return i(t.children,r),r}function Q_(t){let e=r=>{var s;if(typeof r.children=="undefined"){if(typeof r.value=="undefined")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Uu(r.value[0],r.value[1])}let i=Array.isArray(r.children)?r.children.entries():Object.entries((s=r.children)!=null?s:{}),n=Array.isArray(r.children)?[]:{};for(let[o,a]of i)n[o]=e(a);return typeof r.value=="undefined"?n:{value:Uu(r.value[0],r.value[1]),children:n}};return e(t)}function gTe(t,{configuration:e,stdout:r,json:i}){let n=t.map(s=>({value:s}));b_({children:n},{configuration:e,stdout:r,json:i})}function b_(t,{configuration:e,stdout:r,json:i,separators:n=0}){var o;if(i){let a=Array.isArray(t.children)?t.children.values():Object.values((o=t.children)!=null?o:{});for(let l of a)r.write(`${JSON.stringify(Q_(l))} -`);return}let s=(0,w_.asTree)(B_(t,{configuration:e}),!1,!1);if(n>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502 -$1`).replace(/^│\n/,"")),n>=2)for(let a=0;a<2;++a)s=s.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 -$2`).replace(/^│\n/,"");if(n>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(s)}var v_=ie(require("crypto")),BR=ie(require("fs"));var fTe=8,Qt=class{constructor(e,{configuration:r,immutable:i=r.get("enableImmutableCache"),check:n=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,v_.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=i,this.check=n;let s=r.get("cacheKeyOverride");if(s!==null)this.cacheKey=`${s}`;else{let o=r.get("compressionLevel"),a=o!==pl?`c${o}`:"";this.cacheKey=[fTe,a].join("")}}static async find(e,{immutable:r,check:i}={}){let n=new Qt(e.get("cacheFolder"),{configuration:e,immutable:r,check:i});return await n.setup(),n}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${Mu(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let n=hTe(r).slice(0,10);return`${Mu(e)}-${n}.zip`}getLocatorPath(e,r,i={}){var s;return this.mirrorCwd===null||((s=i.unstablePackages)==null?void 0:s.has(e.locatorHash))?v.resolve(this.cwd,this.getVersionFilename(e)):r===null||QR(r)!==this.cacheKey?null:v.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?v.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await T.existsPromise(this.cwd))throw new nt(z.IMMUTABLE_CACHE,"Cache path does not exist.")}else{await T.mkdirPromise(this.cwd,{recursive:!0});let e=v.resolve(this.cwd,".gitignore");await T.changeFilePromise(e,`/.gitignore -*.flock -*.tmp -`)}(this.mirrorCwd||!this.immutable)&&await T.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,a){var l=a,{onHit:i,onMiss:n,loader:s}=l,o=qr(l,["onHit","onMiss","loader"]);var A;let c=this.getLocatorMirrorPath(e),u=new Wt,g=()=>{let V=new Jr(null,{libzip:H}),W=v.join(Se.root,Lx(e));return V.mkdirSync(W,{recursive:!0}),V.writeJsonSync(v.join(W,wt.manifest),{name:St(e),mocked:!0}),V},f=async(V,W=null)=>{let X=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Ey(V)}`:r;if(W!==null){let F=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Ey(W)}`:r;if(X!==F)throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(r!==null&&X!==r){let F;switch(this.check?F="throw":QR(r)!==QR(X)?F="update":F=this.configuration.get("checksumBehavior"),F){case"ignore":return r;case"update":return X;default:case"throw":throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the expected checksum")}}return X},h=async V=>{if(!s)throw new Error(`Cache check required but no loader configured for ${lt(this.configuration,e)}`);let W=await s(),X=W.getRealPath();return W.saveAndClose(),await T.chmodPromise(X,420),await f(V,X)},p=async()=>{if(c===null||!await T.existsPromise(c)){let V=await s(),W=V.getRealPath();return V.saveAndClose(),{source:"loader",path:W}}return{source:"mirror",path:c}},d=async()=>{if(!s)throw new Error(`Cache entry required but missing for ${lt(this.configuration,e)}`);if(this.immutable)throw new nt(z.IMMUTABLE_CACHE,`Cache entry required but missing for ${lt(this.configuration,e)}`);let{path:V,source:W}=await p(),X=await f(V),F=this.getLocatorPath(e,X,o);if(!F)throw new Error("Assertion failed: Expected the cache path to be available");let D=[];W!=="mirror"&&c!==null&&D.push(async()=>{let pe=`${c}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,c)}),(!o.mirrorWriteOnly||c===null)&&D.push(async()=>{let pe=`${F}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,F)});let he=o.mirrorWriteOnly&&c!=null?c:F;return await Promise.all(D.map(pe=>pe())),[!1,he,X]},m=async()=>{let W=(async()=>{var Ne;let X=this.getLocatorPath(e,r,o),F=X!==null?await u.existsPromise(X):!1,D=!!((Ne=o.mockedPackages)==null?void 0:Ne.has(e.locatorHash))&&(!this.check||!F),he=D||F,pe=he?i:n;if(pe&&pe(),he){let Pe=null,qe=X;return D||(Pe=this.check?await h(qe):await f(qe)),[D,qe,Pe]}else return d()})();this.mutexes.set(e.locatorHash,W);try{return await W}finally{this.mutexes.delete(e.locatorHash)}};for(let V;V=this.mutexes.get(e.locatorHash);)await V;let[I,B,b]=await m();this.markedFiles.add(B);let R,H=await $i(),L=I?()=>g():()=>new Jr(B,{baseFs:u,libzip:H,readOnly:!0}),K=new oh(()=>Mv(()=>R=L(),V=>`Failed to open the cache entry for ${lt(this.configuration,e)}: ${V}`),v),J=new Xo(B,{baseFs:K,pathUtils:v}),ne=()=>{R==null||R.discardAndClose()},q=((A=o.unstablePackages)==null?void 0:A.has(e.locatorHash))?null:b;return[J,ne,q]}};function QR(t){let e=t.indexOf("/");return e!==-1?t.slice(0,e):null}function hTe(t){let e=t.indexOf("/");return e!==-1?t.slice(e+1):t}var F_=ie(x_()),NB=ie(ml());var N_=ie(Wp()),kR=ie(require("stream"));var k_={hooks:{reduceDependency:(t,e,r,i,{resolver:n,resolveOptions:s})=>{for(let{pattern:o,reference:a}of e.topLevelWorkspace.manifest.resolutions){if(o.from&&o.from.fullName!==St(r)||o.from&&o.from.description&&o.from.description!==r.reference||o.descriptor.fullName!==St(t)||o.descriptor.description&&o.descriptor.description!==t.range)continue;return n.bindDescriptor(Yt(t,a),e.topLevelWorkspace.anchoredLocator,s)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let i=hp(t.configuration,r);await t.configuration.triggerHook(n=>n.validateWorkspace,r,{reportWarning:(n,s)=>e.reportWarning(n,`${i}: ${s}`),reportError:(n,s)=>e.reportError(n,`${i}: ${s}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let i of r.errors)e.reportWarning(z.INVALID_MANIFEST,i.message)}}};var vR=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));return i||null}getFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));if(!i)throw new nt(z.FETCHER_NOT_FOUND,`${lt(r.project.configuration,e)} isn't supported by any available fetcher`);return i}};var pd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.getResolverByDescriptor(e,i).bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,i){return await this.getResolverByDescriptor(e,i).getCandidates(e,r,i)}async getSatisfying(e,r,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,r,i)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));return i||null}getResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));if(!i)throw new Error(`${Xt(r.project.configuration,e)} isn't supported by any available resolver`);return i}tryResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));return i||null}getResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));if(!i)throw new Error(`${lt(r.project.configuration,e)} isn't supported by any available resolver`);return i}};var P_=ie(Or());var Rg=/^(?!v)[a-z0-9._-]+$/i,SR=class{supportsDescriptor(e,r){return!!(Us(e.range)||Rg.test(e.range))}supportsLocator(e,r){return!!(P_.default.valid(e.reference)||Rg.test(e.reference))}shouldPersistResolution(e,r){return r.resolver.shouldPersistResolution(this.forwardLocator(e,r),r)}bindDescriptor(e,r,i){return i.resolver.bindDescriptor(this.forwardDescriptor(e,i),r,i)}getResolutionDependencies(e,r){return r.resolver.getResolutionDependencies(this.forwardDescriptor(e,r),r)}async getCandidates(e,r,i){return await i.resolver.getCandidates(this.forwardDescriptor(e,i),r,i)}async getSatisfying(e,r,i){return await i.resolver.getSatisfying(this.forwardDescriptor(e,i),r,i)}async resolve(e,r){let i=await r.resolver.resolve(this.forwardLocator(e,r),r);return op(i,e)}forwardDescriptor(e,r){return Yt(e,`${r.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,r){return Vi(e,`${r.project.configuration.get("defaultProtocol")}${e.reference}`)}};var dd=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n);return r.fetcher.getLocalPath(s,r)}async fetch(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n),o=await r.fetcher.fetch(s,r);return await this.ensureVirtualLink(e,o,r)}getLocatorFilename(e){return Mu(e)}async ensureVirtualLink(e,r,i){let n=r.packageFs.getRealPath(),s=i.project.configuration.get("virtualFolder"),o=this.getLocatorFilename(e),a=Pr.makeVirtualPath(s,o,n),l=new Xo(a,{baseFs:r.packageFs,pathUtils:v});return _(P({},r),{packageFs:l})}};var Fg=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Fg.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Fg.protocol)}supportsDescriptor(e,r){return Fg.isVirtualDescriptor(e)}supportsLocator(e,r){return Fg.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,i){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},FB=Fg;FB.protocol="virtual:";var xR=class{supports(e){return!!e.reference.startsWith(Yr.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let i=this.getWorkspace(e,r).cwd;return{packageFs:new Ft(i),prefixPath:Se.dot,localPath:i}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Yr.protocol.length))}};var D_=ie(require("module"));function R_(){return new Set(D_.default.builtinModules||Object.keys(process.binding("natives")))}var dTe=new Set(["binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]),LB="yarn_",PR=".yarnrc.yml",DR="yarn.lock",CTe="********",ge;(function(u){u.ANY="ANY",u.BOOLEAN="BOOLEAN",u.ABSOLUTE_PATH="ABSOLUTE_PATH",u.LOCATOR="LOCATOR",u.LOCATOR_LOOSE="LOCATOR_LOOSE",u.NUMBER="NUMBER",u.STRING="STRING",u.SECRET="SECRET",u.SHAPE="SHAPE",u.MAP="MAP"})(ge||(ge={}));var ps=Le,RR={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:ge.STRING,default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:ge.ABSOLUTE_PATH,default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:ge.BOOLEAN,default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:ge.BOOLEAN,default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:ge.STRING,default:null},globalFolder:{description:"Folder where are stored the system-wide settings",type:ge.ABSOLUTE_PATH,default:Rb()},cacheFolder:{description:"Folder where the cache files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:ge.NUMBER,values:["mixed",0,1,2,3,4,5,6,7,8,9],default:pl},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:ge.ABSOLUTE_PATH,default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:ge.STRING,default:DR},installStatePath:{description:"Path of the file where the install state will be persisted",type:ge.ABSOLUTE_PATH,default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:ge.STRING,default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:ge.STRING,default:TB()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:ge.BOOLEAN,default:!1},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:ge.BOOLEAN,default:xy,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:ge.BOOLEAN,default:Mx,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:ge.BOOLEAN,default:NB.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:ge.BOOLEAN,default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:ge.BOOLEAN,default:!NB.isCI&&process.stdout.isTTY&&process.stdout.columns>22,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:ge.BOOLEAN,default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:ge.BOOLEAN,default:NB.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:ge.BOOLEAN,default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:ge.BOOLEAN,default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:ge.STRING,default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:ge.STRING,default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:ge.STRING,default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:ge.BOOLEAN,default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:ge.SHAPE,properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:ge.BOOLEAN,default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:ge.STRING,default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:ge.NUMBER,default:6e4},httpRetry:{description:"Retry times on http failure",type:ge.NUMBER,default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:ge.NUMBER,default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:{caFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null}}}},caFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:ge.BOOLEAN,default:!0},logFilters:{description:"Overrides for log levels",type:ge.SHAPE,isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:ge.STRING,default:void 0},text:{description:"Code of the texts covered by this override",type:ge.STRING,default:void 0},pattern:{description:"Code of the patterns covered by this override",type:ge.STRING,default:void 0},level:{description:"Log level override, set to null to remove override",type:ge.STRING,values:Object.values(Ts),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:ge.BOOLEAN,default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:ge.NUMBER,default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:ge.STRING,default:null},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:ge.BOOLEAN,default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:ge.BOOLEAN,default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:ge.BOOLEAN,default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:ge.STRING,default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:ge.MAP,valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:ge.SHAPE,properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:ge.MAP,valueDefinition:{description:"A range",type:ge.STRING}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:ge.MAP,valueDefinition:{description:"A semver range",type:ge.STRING}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:ge.MAP,valueDefinition:{description:"The peerDependency meta",type:ge.SHAPE,properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:ge.BOOLEAN,default:!1}}}}}}}};function NR(t,e,r,i,n){if(i.isArray||i.type===ge.ANY&&Array.isArray(r))return Array.isArray(r)?r.map((s,o)=>FR(t,`${e}[${o}]`,s,i,n)):String(r).split(/,/).map(s=>FR(t,e,s,i,n));if(Array.isArray(r))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return FR(t,e,r,i,n)}function FR(t,e,r,i,n){var a;switch(i.type){case ge.ANY:return r;case ge.SHAPE:return mTe(t,e,r,i,n);case ge.MAP:return ETe(t,e,r,i,n)}if(r===null&&!i.isNullable&&i.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((a=i.values)==null?void 0:a.includes(r))return r;let o=(()=>{if(i.type===ge.BOOLEAN&&typeof r!="string")return Hh(r);if(typeof r!="string")throw new Error(`Expected value (${r}) to be a string`);let l=Ov(r,{env:process.env});switch(i.type){case ge.ABSOLUTE_PATH:return v.resolve(n,M.toPortablePath(l));case ge.LOCATOR_LOOSE:return Hl(l,!1);case ge.NUMBER:return parseInt(l);case ge.LOCATOR:return Hl(l);case ge.BOOLEAN:return Hh(l);default:return l}})();if(i.values&&!i.values.includes(o))throw new Error(`Invalid value, expected one of ${i.values.join(", ")}`);return o}function mTe(t,e,r,i,n){if(typeof r!="object"||Array.isArray(r))throw new me(`Object configuration settings "${e}" must be an object`);let s=LR(t,i,{ignoreArrays:!0});if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=`${e}.${o}`;if(!i.properties[o])throw new me(`Unrecognized configuration settings found: ${e}.${o} - run "yarn config -v" to see the list of settings supported in Yarn`);s.set(o,NR(t,l,a,i.properties[o],n))}return s}function ETe(t,e,r,i,n){let s=new Map;if(typeof r!="object"||Array.isArray(r))throw new me(`Map configuration settings "${e}" must be an object`);if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=i.normalizeKeys?i.normalizeKeys(o):o,c=`${e}['${l}']`,u=i.valueDefinition;s.set(l,NR(t,c,a,u,n))}return s}function LR(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case ge.SHAPE:{if(e.isArray&&!r)return[];let i=new Map;for(let[n,s]of Object.entries(e.properties))i.set(n,LR(t,s));return i}break;case ge.MAP:return e.isArray&&!r?[]:new Map;case ge.ABSOLUTE_PATH:return e.default===null?null:t.projectCwd===null?v.isAbsolute(e.default)?v.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(i=>v.resolve(t.projectCwd,i)):v.resolve(t.projectCwd,e.default);default:return e.default}}function MB(t,e,r){if(e.type===ge.SECRET&&typeof t=="string"&&r.hideSecrets)return CTe;if(e.type===ge.ABSOLUTE_PATH&&typeof t=="string"&&r.getNativePaths)return M.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let i=[];for(let n of t)i.push(MB(n,e,r));return i}if(e.type===ge.MAP&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries())i.set(n,MB(s,e.valueDefinition,r));return i}if(e.type===ge.SHAPE&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries()){let o=e.properties[n];i.set(n,MB(s,o,r))}return i}return t}function ITe(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),!!e.startsWith(LB)&&(e=(0,F_.default)(e.slice(LB.length)),t[e]=r);return t}function TB(){let t=`${LB}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return PR}var KA;(function(i){i[i.LOCKFILE=0]="LOCKFILE",i[i.MANIFEST=1]="MANIFEST",i[i.NONE=2]="NONE"})(KA||(KA={}));var Ra=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,r,i){let n=new Ra(e);typeof r!="undefined"&&!(r instanceof Map)&&(n.projectCwd=r),n.importSettings(RR);let s=typeof i!="undefined"?i:r instanceof Map?r:new Map;for(let[o,a]of s)n.activatePlugin(o,a);return n}static async find(e,r,{lookup:i=0,strict:n=!0,usePath:s=!1,useRc:o=!0}={}){let a=ITe();delete a.rcFilename;let l=await Ra.findRcFiles(e),c=await Ra.findHomeRcFile();if(c){let I=l.find(B=>B.path===c.path);I?I.strict=!1:l.push(_(P({},c),{strict:!1}))}let u=({ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R})=>({ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R}),g=L=>{var K=L,{ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R}=K,H=qr(K,["ignoreCwd","yarnPath","ignorePath","lockfileFilename"]);return H},f=new Ra(e);f.importSettings(u(RR)),f.useWithSource("",u(a),e,{strict:!1});for(let{path:I,cwd:B,data:b}of l)f.useWithSource(I,u(b),B,{strict:!1});if(s){let I=f.get("yarnPath"),B=f.get("ignorePath");if(I!==null&&!B)return f}let h=f.get("lockfileFilename"),p;switch(i){case 0:p=await Ra.findProjectCwd(e,h);break;case 1:p=await Ra.findProjectCwd(e,null);break;case 2:T.existsSync(v.join(e,"package.json"))?p=v.resolve(e):p=null;break}f.startingCwd=e,f.projectCwd=p,f.importSettings(g(RR));let d=new Map([["@@core",k_]]),m=I=>"default"in I?I.default:I;if(r!==null){for(let R of r.plugins.keys())d.set(R,m(r.modules.get(R)));let I=new Map;for(let R of R_())I.set(R,()=>mu(R));for(let[R,H]of r.modules)I.set(R,()=>H);let B=new Set,b=async(R,H)=>{let{factory:L,name:K}=mu(R);if(B.has(K))return;let J=new Map(I),ne=A=>{if(J.has(A))return J.get(A)();throw new me(`This plugin cannot access the package referenced via ${A} which is neither a builtin, nor an exposed entry`)},q=await du(async()=>m(await L(ne)),A=>`${A} (when initializing ${K}, defined in ${H})`);I.set(K,()=>q),B.add(K),d.set(K,q)};if(a.plugins)for(let R of a.plugins.split(";")){let H=v.resolve(e,M.toPortablePath(R));await b(H,"")}for(let{path:R,cwd:H,data:L}of l)if(!!o&&!!Array.isArray(L.plugins))for(let K of L.plugins){let J=typeof K!="string"?K.path:K,ne=v.resolve(H,M.toPortablePath(J));await b(ne,R)}}for(let[I,B]of d)f.activatePlugin(I,B);f.useWithSource("",g(a),e,{strict:n});for(let{path:I,cwd:B,data:b,strict:R}of l)f.useWithSource(I,g(b),B,{strict:R!=null?R:n});return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),await f.refreshPackageExtensions(),f}static async findRcFiles(e){let r=TB(),i=[],n=e,s=null;for(;n!==s;){s=n;let o=v.join(s,r);if(T.existsSync(o)){let a=await T.readFilePromise(o,"utf8"),l;try{l=Ii(a)}catch(c){let u="";throw a.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(u=" (in particular, make sure you list the colons after each key name)"),new me(`Parse error when loading ${o}; please check it's proper Yaml${u}`)}i.push({path:o,cwd:s,data:l})}n=v.dirname(s)}return i}static async findHomeRcFile(){let e=TB(),r=uh(),i=v.join(r,e);if(T.existsSync(i)){let n=await T.readFilePromise(i,"utf8"),s=Ii(n);return{path:i,cwd:r,data:s}}return null}static async findProjectCwd(e,r){let i=null,n=e,s=null;for(;n!==s;){if(s=n,T.existsSync(v.join(s,"package.json"))&&(i=s),r!==null){if(T.existsSync(v.join(s,r))){i=s;break}}else if(i!==null)break;n=v.dirname(s)}return i}static async updateConfiguration(e,r){let i=TB(),n=v.join(e,i),s=T.existsSync(n)?Ii(await T.readFilePromise(n,"utf8")):{},o=!1,a;if(typeof r=="function"){try{a=r(s)}catch{a=r({})}if(a===s)return}else{a=s;for(let l of Object.keys(r)){let c=s[l],u=r[l],g;if(typeof u=="function")try{g=u(c)}catch{g=u(void 0)}else g=u;c!==g&&(a[l]=g,o=!0)}if(!o)return}await T.changeFilePromise(n,Qa(a),{automaticNewlines:!0})}static async updateHomeConfiguration(e){let r=uh();return await Ra.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration!="undefined"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,i]of Object.entries(e))if(i!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,i),this.values.set(r,LR(this,i))}}useWithSource(e,r,i,n){try{this.use(e,r,i,n)}catch(s){throw s.message+=` (in ${Ve(this,e,Le.PATH)})`,s}}use(e,r,i,{strict:n=!0,overwrite:s=!1}={}){n=n&&this.get("enableStrictSettings");for(let o of["enableStrictSettings",...Object.keys(r)]){if(typeof r[o]=="undefined"||o==="plugins"||e===""&&dTe.has(o))continue;if(o==="rcFilename")throw new me(`The rcFilename settings can only be set via ${`${LB}RC_FILENAME`.toUpperCase()}, not via a rc file`);let l=this.settings.get(o);if(!l){if(n)throw new me(`Unrecognized or legacy configuration settings found: ${o} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(o,e);continue}if(this.sources.has(o)&&!(s||l.type===ge.MAP||l.isArray&&l.concatenateValues))continue;let c;try{c=NR(this,o,r[o],l,i)}catch(u){throw u.message+=` in ${Ve(this,e,Le.PATH)}`,u}if(o==="enableStrictSettings"&&e!==""){n=c;continue}if(l.type===ge.MAP){let u=this.values.get(o);this.values.set(o,new Map(s?[...u,...c]:[...c,...u])),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else if(l.isArray&&l.concatenateValues){let u=this.values.get(o);this.values.set(o,s?[...u,...c]:[...c,...u]),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else this.values.set(o,c),this.sources.set(o,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:i=!1}){let n=this.get(e),s=this.settings.get(e);if(typeof s=="undefined")throw new me(`Couldn't find a configuration settings named "${e}"`);return MB(n,s,{hideSecrets:r,getNativePaths:i})}getSubprocessStreams(e,{header:r,prefix:i,report:n}){let s,o,a=T.createWriteStream(e);if(this.get("enableInlineBuilds")){let l=n.createStreamReporter(`${i} ${Ve(this,"STDOUT","green")}`),c=n.createStreamReporter(`${i} ${Ve(this,"STDERR","red")}`);s=new kR.PassThrough,s.pipe(l),s.pipe(a),o=new kR.PassThrough,o.pipe(c),o.pipe(a)}else s=a,o=a,typeof r!="undefined"&&s.write(`${r} -`);return{stdout:s,stderr:o}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let i of r.resolvers||[])e.push(new i);return new pd([new FB,new Yr,new SR,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let i of r.fetchers||[])e.push(new i);return new vR([new dd,new xR,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let i of r.linkers||[])e.push(new i);return e}getSupportedArchitectures(){let e=this.get("supportedArchitectures"),r=e.get("os");r!==null&&(r=r.map(n=>n==="current"?process.platform:n));let i=e.get("cpu");return i!==null&&(i=i.map(n=>n==="current"?process.arch:n)),{os:r,cpu:i}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,r=(i,n,{userProvided:s=!1}={})=>{if(!Us(i.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let o=new Ze;o.load(n,{yamlCompatibilityMode:!0});let a=hu(e,i.identHash),l=[];a.push([i.range,l]);let c={status:ki.Inactive,userProvided:s,parentDescriptor:i};for(let u of o.dependencies.values())l.push(_(P({},c),{type:oi.Dependency,descriptor:u}));for(let u of o.peerDependencies.values())l.push(_(P({},c),{type:oi.PeerDependency,descriptor:u}));for(let[u,g]of o.peerDependenciesMeta)for(let[f,h]of Object.entries(g))l.push(_(P({},c),{type:oi.PeerDependencyMeta,selector:u,key:f,value:h}))};await this.triggerHook(i=>i.registerPackageExtensions,this,r);for(let[i,n]of this.get("packageExtensions"))r(pA(i,!0),aI(n),{userProvided:!0})}normalizePackage(e){let r=ap(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let i=this.packageExtensions.get(e.identHash);if(typeof i!="undefined"){let s=e.version;if(s!==null){for(let[o,a]of i)if(!!lc(s,o))for(let l of a)switch(l.status===ki.Inactive&&(l.status=ki.Redundant),l.type){case oi.Dependency:typeof r.dependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.dependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependency:typeof r.peerDependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.peerDependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependencyMeta:{let c=r.peerDependenciesMeta.get(l.selector);(typeof c=="undefined"||!Object.prototype.hasOwnProperty.call(c,l.key)||c[l.key]!==l.value)&&(l.status=ki.Active,na(r.peerDependenciesMeta,l.selector,()=>({}))[l.key]=l.value)}break;default:Lv(l);break}}}let n=s=>s.scope?`${s.scope}__${s.name}`:`${s.name}`;for(let s of r.peerDependenciesMeta.keys()){let o=En(s);r.peerDependencies.has(o.identHash)||r.peerDependencies.set(o.identHash,Yt(o,"*"))}for(let s of r.peerDependencies.values()){if(s.scope==="types")continue;let o=n(s),a=Eo("types",o),l=St(a);r.peerDependencies.has(a.identHash)||r.peerDependenciesMeta.has(l)||(r.peerDependencies.set(a.identHash,Yt(a,"*")),r.peerDependenciesMeta.set(l,{optional:!0}))}return r.dependencies=new Map(gn(r.dependencies,([,s])=>In(s))),r.peerDependencies=new Map(gn(r.peerDependencies,([,s])=>In(s))),r}getLimit(e){return na(this.limits,e,()=>(0,N_.default)(this.get(e)))}async triggerHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);!s||await s(...r)}}async triggerMultipleHooks(e,r){for(let i of r)await this.triggerHook(e,...i)}async reduceHook(e,r,...i){let n=r;for(let s of this.plugins.values()){let o=s.hooks;if(!o)continue;let a=e(o);!a||(n=await a(n,...i))}return n}async firstHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);if(!s)continue;let o=await s(...r);if(typeof o!="undefined")return o}return null}},fe=Ra;fe.telemetry=null;var Gn;(function(r){r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE"})(Gn||(Gn={}));var Fa=class extends Xi{constructor({configuration:e,stdout:r,suggestInstall:i=!0}){super();this.errorCount=0;Cp(this,{configuration:e}),this.configuration=e,this.stdout=r,this.suggestInstall=i}static async start(e,r){let i=new this(e);try{await r(i)}catch(n){i.reportExceptionOnce(n)}finally{await i.finalize()}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){this.errorCount+=1,this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(e)}: ${r} -`)}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){this.errorCount>0&&(this.stdout.write(` -`),this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. -`),this.suggestInstall&&this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. -`))}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:!1})}};var t0=ie(require("crypto")),v$=ie(CX()),r0=ie(Q$()),S$=ie(Wp()),x$=ie(Or()),lF=ie(require("util")),cF=ie(require("v8")),uF=ie(require("zlib"));var iUe=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,i)=>`${r}#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/(?:[^\\.]+)\.jfrog\.io\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>by({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],oF=class{constructor(){this.resolutions=null}async setup(e,{report:r}){let i=v.join(e.cwd,e.configuration.get("lockfileFilename"));if(!T.existsSync(i))return;let n=await T.readFilePromise(i,"utf8"),s=Ii(n);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;let o=this.resolutions=new Map;for(let a of Object.keys(s)){let l=gp(a);if(!l){r.reportWarning(z.YARN_IMPORT_FAILED,`Failed to parse the string "${a}" into a proper descriptor`);continue}Us(l.range)&&(l=Yt(l,`npm:${l.range}`));let{version:c,resolved:u}=s[a];if(!u)continue;let g;for(let[h,p]of iUe){let d=u.match(h);if(d){g=p(c,...d);break}}if(!g){r.reportWarning(z.YARN_IMPORT_FAILED,`${Xt(e.configuration,l)}: Only some patterns can be imported from legacy lockfiles (not "${u}")`);continue}let f=l;try{let h=Tu(l.range),p=gp(h.selector,!0);p&&(f=p)}catch{}o.set(l.descriptorHash,Vi(f,g))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let n=this.resolutions.get(e.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};var aF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(By(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){let n=i.project.originalPackages.get(By(e).locatorHash);if(n)return[n];let s=i.project.storedResolutions.get(e.descriptorHash);if(!s)throw new Error("Expected the resolution to have been successful - resolution not found");if(n=i.project.originalPackages.get(s),!n)throw new Error("Expected the resolution to have been successful - package not found");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.originalPackages.get(e.locatorHash);if(!i)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return i}};var AF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.resolver.bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}};var ei=class extends Xi{reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){}};var b$=ie(vx());var Dd=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.dependencies=new Map;this.project=r,this.cwd=e}async setup(){this.manifest=T.existsSync(v.join(this.cwd,Ze.fileName))?await Ze.find(this.cwd):new Ze,this.relativeCwd=v.relative(this.project.cwd,this.cwd)||Se.dot;let e=this.manifest.name?this.manifest.name:Eo(null,`${this.computeCandidateName()}-${zi(this.relativeCwd).substr(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=Vi(e,r),this.anchoredDescriptor=Yt(this.locator,`${Yr.protocol}${this.relativeCwd}`),this.anchoredLocator=Vi(this.locator,`${Yr.protocol}${this.relativeCwd}`);let i=this.manifest.workspaceDefinitions.map(({pattern:s})=>s),n=await(0,b$.default)(i,{cwd:M.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});n.sort();for(let s of n){let o=v.resolve(this.cwd,M.toPortablePath(s));T.existsSync(v.join(o,"package.json"))&&this.workspacesCwds.add(o)}}accepts(e){var o;let r=e.indexOf(":"),i=r!==-1?e.slice(0,r+1):null,n=r!==-1?e.slice(r+1):e;if(i===Yr.protocol&&v.normalize(n)===this.relativeCwd||i===Yr.protocol&&(n==="*"||n==="^"||n==="~"))return!0;let s=Us(n);return s?i===Yr.protocol?s.test((o=this.manifest.version)!=null?o:"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?s.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${v.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of e)for(let o of n.manifest[s].values()){let a=this.project.tryWorkspaceByDescriptor(o);a===null||r.has(a)||(r.add(a),i(a))}};return i(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of this.project.workspaces)e.some(a=>[...s.manifest[a].values()].some(l=>{let c=this.project.tryWorkspaceByDescriptor(l);return c!==null&&up(c.anchoredLocator,n.anchoredLocator)}))&&!r.has(s)&&(r.add(s),i(s))};return i(this),r}getRecursiveWorkspaceChildren(){let e=[];for(let r of this.workspacesCwds){let i=this.project.workspacesByCwd.get(r);i&&e.push(i,...i.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let r=v.join(this.cwd,Ze.fileName),i=`${JSON.stringify(e,null,this.manifest.indent)} -`;await T.changeFilePromise(r,i,{automaticNewlines:!0}),this.manifest.raw=e}};var k$=5,nUe=1,sUe=/ *, */g,P$=/\/$/,oUe=32,aUe=(0,lF.promisify)(uF.default.gzip),AUe=(0,lF.promisify)(uF.default.gunzip),li;(function(r){r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build"})(li||(li={}));var gF={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},D$=t=>zi(`${nUe}`,t),Ke=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.installersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){var c,u,g;if(!e.projectCwd)throw new me(`No project found in ${r}`);let i=e.projectCwd,n=r,s=null;for(;s!==e.projectCwd;){if(s=n,T.existsSync(v.join(s,wt.manifest))){i=s;break}n=v.dirname(s)}let o=new Ke(e.projectCwd,{configuration:e});(c=fe.telemetry)==null||c.reportProject(o.cwd),await o.setupResolutions(),await o.setupWorkspaces(),(u=fe.telemetry)==null||u.reportWorkspaceCount(o.workspaces.length),(g=fe.telemetry)==null||g.reportDependencyCount(o.workspaces.reduce((f,h)=>f+h.manifest.dependencies.size+h.manifest.devDependencies.size,0));let a=o.tryWorkspaceByCwd(i);if(a)return{project:o,workspace:a,locator:a.anchoredLocator};let l=await o.findLocatorForLocation(`${i}/`,{strict:!0});if(l)return{project:o,locator:l,workspace:null};throw new me(`The nearest package directory (${Ve(e,i,Le.PATH)}) doesn't seem to be part of the project declared in ${Ve(e,o.cwd,Le.PATH)}. - -- If the project directory is right, it might be that you forgot to list ${Ve(e,v.relative(o.cwd,i),Le.PATH)} as a workspace. -- If it isn't, it's likely because you have a yarn.lock or package.json file there, confusing the project root detection.`)}async setupResolutions(){var i;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(T.existsSync(e)){let n=await T.readFilePromise(e,"utf8");this.lockFileChecksum=D$(n);let s=Ii(n);if(s.__metadata){let o=s.__metadata.version,a=s.__metadata.cacheKey;this.lockfileNeedsRefresh=o0;){let r=e;e=[];for(let i of r){if(this.workspacesByCwd.has(i))continue;let n=await this.addWorkspace(i),s=this.storedPackages.get(n.anchoredLocator.locatorHash);s&&(n.dependencies=s.dependencies);for(let o of n.workspacesCwds)e.push(o)}}}async addWorkspace(e){let r=new Dd(e,{project:this});await r.setup();let i=this.workspacesByIdent.get(r.locator.identHash);if(typeof i!="undefined")throw new Error(`Duplicate workspace name ${Vr(this.configuration,r.locator)}: ${M.fromPortablePath(e)} conflicts with ${M.fromPortablePath(i.cwd)}`);return this.workspaces.push(r),this.workspacesByCwd.set(e,r),this.workspacesByIdent.set(r.locator.identHash,r),r}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){v.isAbsolute(e)||(e=v.resolve(this.cwd,e)),e=v.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let i of this.workspaces)v.relative(i.cwd,e).startsWith("../")||r&&r.cwd.length>=i.cwd.length||(r=i);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r=="undefined"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${Vr(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){let r=this.tryWorkspaceByIdent(e);return r===null||(hA(e)&&(e=Ap(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${Xt(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Io(e)&&(e=lp(e)),r.locator.locatorHash!==e.locatorHash&&r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${lt(this.configuration,e)})`);return r}refreshWorkspaceDependencies(){for(let e of this.workspaces){let r=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!r)throw new Error(`Assertion failed: Expected workspace ${hp(this.configuration,e)} (${Ve(this.configuration,v.join(e.cwd,wt.manifest),Le.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);e.dependencies=new Map(r.dependencies)}}forgetResolution(e){let r=n=>{this.storedResolutions.delete(n),this.storedDescriptors.delete(n)},i=n=>{this.originalPackages.delete(n),this.storedPackages.delete(n),this.accessibleLocators.delete(n)};if("descriptorHash"in e){let n=this.storedResolutions.get(e.descriptorHash);r(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof n!="undefined"&&!s.has(n)&&i(n)}if("locatorHash"in e){i(e.locatorHash);for(let[n,s]of this.storedResolutions)s===e.locatorHash&&r(n)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let r of this.originalPackages.values()){let i;try{i=e.shouldPersistResolution(r,{project:this,resolver:e})}catch{i=!1}i||this.forgetResolution(r)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,i]of e.dependencies)hA(i)&&e.dependencies.set(r,Ap(i))}getDependencyMeta(e,r){let i={},s=this.topLevelWorkspace.manifest.dependenciesMeta.get(St(e));if(!s)return i;let o=s.get(null);if(o&&Object.assign(i,o),r===null||!x$.default.valid(r))return i;for(let[a,l]of s)a!==null&&a===r&&Object.assign(i,l);return i}async findLocatorForLocation(e,{strict:r=!1}={}){let i=new ei,n=this.configuration.getLinkers(),s={project:this,report:i};for(let o of n){let a=await o.findPackageLocator(e,s);if(a){if(r&&(await o.findPackageLocation(a,s)).replace(P$,"")!==e.replace(P$,""))continue;return a}}return null}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let r=e.resolver||this.configuration.makeResolver(),i=new oF;await i.setup(this,{report:e.report});let n=e.lockfileOnly?[new AF(r)]:[i,r],s=new pd([new aF(r),...n]),o=this.configuration.makeFetcher(),a=e.lockfileOnly?{project:this,report:e.report,resolver:s}:{project:this,report:e.report,resolver:s,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:o,cacheOptions:{mirrorWriteOnly:!0}}},l=new Map,c=new Map,u=new Map,g=new Map,f=new Map,h=new Map,p=this.topLevelWorkspace.anchoredLocator,d=new Set,m=[],I=async W=>{let X=await du(async()=>await s.resolve(W,a),D=>`${lt(this.configuration,W)}: ${D}`);if(!up(W,X))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${lt(this.configuration,W)} to ${lt(this.configuration,X)})`);g.set(X.locatorHash,X);let F=this.configuration.normalizePackage(X);for(let[D,he]of F.dependencies){let pe=await this.configuration.reduceHook(Pe=>Pe.reduceDependency,he,this,F,he,{resolver:s,resolveOptions:a});if(!cp(he,pe))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let Ne=s.bindDescriptor(pe,W,a);F.dependencies.set(D,Ne)}return m.push(Promise.all([...F.dependencies.values()].map(D=>H(D)))),c.set(F.locatorHash,F),F},B=async W=>{let X=f.get(W.locatorHash);if(typeof X!="undefined")return X;let F=Promise.resolve().then(()=>I(W));return f.set(W.locatorHash,F),F},b=async(W,X)=>{let F=await H(X);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,F.locatorHash),F},R=async W=>{let X=this.resolutionAliases.get(W.descriptorHash);if(typeof X!="undefined")return b(W,this.storedDescriptors.get(X));let F=s.getResolutionDependencies(W,a),D=new Map(await Promise.all(F.map(async Ne=>{let Pe=s.bindDescriptor(Ne,p,a),qe=await H(Pe);return d.add(qe.locatorHash),[Ne.descriptorHash,qe]}))),pe=(await du(async()=>await s.getCandidates(W,D,a),Ne=>`${Xt(this.configuration,W)}: ${Ne}`))[0];if(typeof pe=="undefined")throw new Error(`${Xt(this.configuration,W)}: No candidates found`);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,pe.locatorHash),B(pe)},H=W=>{let X=h.get(W.descriptorHash);if(typeof X!="undefined")return X;l.set(W.descriptorHash,W);let F=Promise.resolve().then(()=>R(W));return h.set(W.descriptorHash,F),F};for(let W of this.workspaces){let X=W.anchoredDescriptor;m.push(H(X))}for(;m.length>0;){let W=[...m];m.length=0,await Promise.all(W)}let L=new Set(this.resolutionAliases.values()),K=new Set(c.keys()),J=new Set,ne=new Map;lUe({project:this,report:e.report,accessibleLocators:J,volatileDescriptors:L,optionalBuilds:K,peerRequirements:ne,allDescriptors:l,allResolutions:u,allPackages:c});for(let W of d)K.delete(W);for(let W of L)l.delete(W),u.delete(W);let q=this.configuration.getSupportedArchitectures(),A=new Set,V=new Set;for(let W of c.values())W.conditions!=null&&(!K.has(W.locatorHash)||(Sy(W,q)||(Sy(W,{os:[process.platform],cpu:[process.arch]})&&e.report.reportWarningOnce(z.GHOST_ARCHITECTURE,`${lt(this.configuration,W)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ve(this.configuration,"supportedArchitectures",ps.SETTING)} setting`),V.add(W.locatorHash)),A.add(W.locatorHash)));this.storedResolutions=u,this.storedDescriptors=l,this.storedPackages=c,this.accessibleLocators=J,this.conditionalLocators=A,this.disabledLocators=V,this.originalPackages=g,this.optionalBuilds=K,this.peerRequirements=ne,this.refreshWorkspaceDependencies()}async fetchEverything({cache:e,report:r,fetcher:i,mode:n}){let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,cacheOptions:s},l=Array.from(new Set(gn(this.storedResolutions.values(),[f=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");return is(h)}])));n===li.UpdateLockfile&&(l=l.filter(f=>!this.storedChecksums.has(f)));let c=!1,u=Xi.progressViaCounter(l.length);r.reportProgress(u);let g=(0,S$.default)(oUe);if(await r.startCacheReport(async()=>{await Promise.all(l.map(f=>g(async()=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");if(Io(h))return;let p;try{p=await o.fetch(h,a)}catch(d){d.message=`${lt(this.configuration,h)}: ${d.message}`,r.reportExceptionOnce(d),c=d;return}p.checksum!=null?this.storedChecksums.set(h.locatorHash,p.checksum):this.storedChecksums.delete(h.locatorHash),p.releaseFs&&p.releaseFs()}).finally(()=>{u.tick()})))}),c)throw c}async linkEverything({cache:e,report:r,fetcher:i,mode:n}){var A,V,W;let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,skipIntegrityCheck:!0,cacheOptions:s},l=this.configuration.getLinkers(),c={project:this,report:r},u=new Map(l.map(X=>{let F=X.makeInstaller(c),D=F.getCustomDataKey(),he=this.installersCustomData.get(D);return typeof he!="undefined"&&F.attachCustomData(he),[X,F]})),g=new Map,f=new Map,h=new Map,p=new Map(await Promise.all([...this.accessibleLocators].map(async X=>{let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");return[X,await o.fetch(F,a)]}))),d=[];for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(typeof F=="undefined")throw new Error("Assertion failed: The locator should have been registered");let D=p.get(F.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The fetch result should have been registered");let he=[],pe=Pe=>{he.push(Pe)},Ne=this.tryWorkspaceByLocator(F);if(Ne!==null){let Pe=[],{scripts:qe}=Ne.manifest;for(let se of["preinstall","install","postinstall"])qe.has(se)&&Pe.push([Gn.SCRIPT,se]);try{for(let[se,be]of u)if(se.supportsPackage(F,c)&&(await be.installPackage(F,D,{holdFetchResult:pe})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{he.length===0?(A=D.releaseFs)==null||A.call(D):d.push(Promise.all(he).catch(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}let re=v.join(D.packageFs.getRealPath(),D.prefixPath);f.set(F.locatorHash,re),!Io(F)&&Pe.length>0&&h.set(F.locatorHash,{directives:Pe,buildLocations:[re]})}else{let Pe=l.find(se=>se.supportsPackage(F,c));if(!Pe)throw new nt(z.LINKER_NOT_FOUND,`${lt(this.configuration,F)} isn't supported by any available linker`);let qe=u.get(Pe);if(!qe)throw new Error("Assertion failed: The installer should have been registered");let re;try{re=await qe.installPackage(F,D,{holdFetchResult:pe})}finally{he.length===0?(V=D.releaseFs)==null||V.call(D):d.push(Promise.all(he).then(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}g.set(F.locatorHash,Pe),f.set(F.locatorHash,re.packageLocation),re.buildDirective&&re.buildDirective.length>0&&re.packageLocation&&h.set(F.locatorHash,{directives:re.buildDirective,buildLocations:[re.packageLocation]})}}let m=new Map;for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");let D=this.tryWorkspaceByLocator(F)!==null,he=async(pe,Ne)=>{let Pe=f.get(F.locatorHash);if(typeof Pe=="undefined")throw new Error(`Assertion failed: The package (${lt(this.configuration,F)}) should have been registered`);let qe=[];for(let re of F.dependencies.values()){let se=this.storedResolutions.get(re.descriptorHash);if(typeof se=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,re)}, from ${lt(this.configuration,F)})should have been registered`);let be=this.storedPackages.get(se);if(typeof be=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);let ae=this.tryWorkspaceByLocator(be)===null?g.get(se):null;if(typeof ae=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);ae===pe||ae===null?f.get(be.locatorHash)!==null&&qe.push([re,be]):!D&&Pe!==null&&hu(m,se).push(Pe)}Pe!==null&&await Ne.attachInternalDependencies(F,qe)};if(D)for(let[pe,Ne]of u)pe.supportsPackage(F,c)&&await he(pe,Ne);else{let pe=g.get(F.locatorHash);if(!pe)throw new Error("Assertion failed: The linker should have been found");let Ne=u.get(pe);if(!Ne)throw new Error("Assertion failed: The installer should have been registered");await he(pe,Ne)}}for(let[X,F]of m){let D=this.storedPackages.get(X);if(!D)throw new Error("Assertion failed: The package should have been registered");let he=g.get(D.locatorHash);if(!he)throw new Error("Assertion failed: The linker should have been found");let pe=u.get(he);if(!pe)throw new Error("Assertion failed: The installer should have been registered");await pe.attachExternalDependents(D,F)}let I=new Map;for(let X of u.values()){let F=await X.finalizeInstall();for(let D of(W=F==null?void 0:F.records)!=null?W:[])h.set(D.locatorHash,{directives:D.buildDirective,buildLocations:D.buildLocations});typeof(F==null?void 0:F.customData)!="undefined"&&I.set(X.getCustomDataKey(),F.customData)}if(this.installersCustomData=I,await Promise.all(d),n===li.SkipBuild)return;let B=new Set(this.storedPackages.keys()),b=new Set(h.keys());for(let X of b)B.delete(X);let R=(0,t0.createHash)("sha512");R.update(process.versions.node),await this.configuration.triggerHook(X=>X.globalHashGeneration,this,X=>{R.update("\0"),R.update(X)});let H=R.digest("hex"),L=new Map,K=X=>{let F=L.get(X.locatorHash);if(typeof F!="undefined")return F;let D=this.storedPackages.get(X.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The package should have been registered");let he=(0,t0.createHash)("sha512");he.update(X.locatorHash),L.set(X.locatorHash,"");for(let pe of D.dependencies.values()){let Ne=this.storedResolutions.get(pe.descriptorHash);if(typeof Ne=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,pe)}) should have been registered`);let Pe=this.storedPackages.get(Ne);if(typeof Pe=="undefined")throw new Error("Assertion failed: The package should have been registered");he.update(K(Pe))}return F=he.digest("hex"),L.set(X.locatorHash,F),F},J=(X,F)=>{let D=(0,t0.createHash)("sha512");D.update(H),D.update(K(X));for(let he of F)D.update(he);return D.digest("hex")},ne=new Map,q=!1;for(;b.size>0;){let X=b.size,F=[];for(let D of b){let he=this.storedPackages.get(D);if(!he)throw new Error("Assertion failed: The package should have been registered");let pe=!0;for(let qe of he.dependencies.values()){let re=this.storedResolutions.get(qe.descriptorHash);if(!re)throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,qe)}) should have been registered`);if(b.has(re)){pe=!1;break}}if(!pe)continue;b.delete(D);let Ne=h.get(he.locatorHash);if(!Ne)throw new Error("Assertion failed: The build directive should have been registered");let Pe=J(he,Ne.buildLocations);if(this.storedBuildState.get(he.locatorHash)===Pe){ne.set(he.locatorHash,Pe);continue}q||(await this.persistInstallStateFile(),q=!0),this.storedBuildState.has(he.locatorHash)?r.reportInfo(z.MUST_REBUILD,`${lt(this.configuration,he)} must be rebuilt because its dependency tree changed`):r.reportInfo(z.MUST_BUILD,`${lt(this.configuration,he)} must be built because it never has been before or the last one failed`);for(let qe of Ne.buildLocations){if(!v.isAbsolute(qe))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${qe})`);F.push((async()=>{for(let[re,se]of Ne.directives){let be=`# This file contains the result of Yarn building a package (${is(he)}) -`;switch(re){case Gn.SCRIPT:be+=`# Script name: ${se} -`;break;case Gn.SHELLCODE:be+=`# Script code: ${se} -`;break}let ae=null;if(!await T.mktempPromise(async De=>{let $=v.join(De,"build.log"),{stdout:G,stderr:Ce}=this.configuration.getSubprocessStreams($,{header:be,prefix:lt(this.configuration,he),report:r}),ee;try{switch(re){case Gn.SCRIPT:ee=await Uw(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break;case Gn.SHELLCODE:ee=await rD(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break}}catch(Oe){Ce.write(Oe.stack),ee=1}if(G.end(),Ce.end(),ee===0)return ne.set(he.locatorHash,Pe),!0;T.detachTemp(De);let Ue=`${lt(this.configuration,he)} couldn't be built successfully (exit code ${Ve(this.configuration,ee,Le.NUMBER)}, logs can be found here: ${Ve(this.configuration,$,Le.PATH)})`;return this.optionalBuilds.has(he.locatorHash)?(r.reportInfo(z.BUILD_FAILED,Ue),ne.set(he.locatorHash,Pe),!0):(r.reportError(z.BUILD_FAILED,Ue),!1)}))return}})())}}if(await Promise.all(F),X===b.size){let D=Array.from(b).map(he=>{let pe=this.storedPackages.get(he);if(!pe)throw new Error("Assertion failed: The package should have been registered");return lt(this.configuration,pe)}).join(", ");r.reportError(z.CYCLIC_DEPENDENCIES,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${D})`);break}}this.storedBuildState=ne}async install(e){var a,l;let r=this.configuration.get("nodeLinker");(a=fe.telemetry)==null||a.reportInstall(r),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.status=ki.Inactive;let i=v.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await T.readFilePromise(i,"utf8")}catch(c){throw c.code==="ENOENT"?new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,u]of c)for(let g of u)if(g.userProvided){let f=Ve(this.configuration,g,Le.PACKAGE_EXTENSION);switch(g.status){case ki.Inactive:e.report.reportWarning(z.UNUSED_PACKAGE_EXTENSION,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case ki.Redundant:e.report.reportWarning(z.REDUNDANT_PACKAGE_EXTENSION,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let c=ul(n,this.generateLockfile());if(c!==n){let u=(0,v$.structuredPatch)(i,i,n,c);e.report.reportSeparator();for(let g of u.hunks){e.report.reportInfo(null,`@@ -${g.oldStart},${g.oldLines} +${g.newStart},${g.newLines} @@`);for(let f of g.lines)f.startsWith("+")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.ADDED)):f.startsWith("-")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.REMOVED)):e.report.reportInfo(null,Ve(this.configuration,f,"grey"))}throw e.report.reportSeparator(),new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.userProvided&&g.status===ki.Active&&((l=fe.telemetry)==null||l.reportPackageExtension(Uu(g,Le.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject=="undefined"||e.persistProject)&&e.mode!==li.UpdateLockfile&&await this.cacheCleanup(e)});let s=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],o=await Promise.all(s.map(async c=>Iy(c,{cwd:this.cwd})));(typeof e.persistProject=="undefined"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode===li.UpdateLockfile){e.report.reportWarning(z.UPDATE_LOCKFILE_ONLY_SKIP_LINK,`Skipped due to ${Ve(this.configuration,"mode=update-lockfile",Le.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(s.map(async u=>Iy(u,{cwd:this.cwd})));for(let u=0;uc.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,s]of this.storedResolutions.entries()){let o=e.get(s);o||e.set(s,o=new Set),o.add(n)}let r={};r.__metadata={version:k$,cacheKey:void 0};for(let[n,s]of e.entries()){let o=this.originalPackages.get(n);if(!o)continue;let a=[];for(let f of s){let h=this.storedDescriptors.get(f);if(!h)throw new Error("Assertion failed: The descriptor should have been registered");a.push(h)}let l=a.map(f=>In(f)).sort().join(", "),c=new Ze;c.version=o.linkType===gt.HARD?o.version:"0.0.0-use.local",c.languageName=o.languageName,c.dependencies=new Map(o.dependencies),c.peerDependencies=new Map(o.peerDependencies),c.dependenciesMeta=new Map(o.dependenciesMeta),c.peerDependenciesMeta=new Map(o.peerDependenciesMeta),c.bin=new Map(o.bin);let u,g=this.storedChecksums.get(o.locatorHash);if(typeof g!="undefined"){let f=g.indexOf("/");if(f===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let h=g.slice(0,f),p=g.slice(f+1);typeof r.__metadata.cacheKey=="undefined"&&(r.__metadata.cacheKey=h),h===r.__metadata.cacheKey?u=p:u=g}r[l]=_(P({},c.exportTo({},{compatibilityMode:!1})),{linkType:o.linkType.toLowerCase(),resolution:is(o),checksum:u,conditions:o.conditions||void 0})}return`${[`# This file is generated by running "yarn install" inside your project. -`,`# Manual changes might be lost - proceed with caution! -`].join("")} -`+Qa(r)}async persistLockfile(){let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r="";try{r=await T.readFilePromise(e,"utf8")}catch(s){}let i=this.generateLockfile(),n=ul(r,i);n!==r&&(await T.writeFilePromise(e,n),this.lockFileChecksum=D$(n),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let o of Object.values(gF))e.push(...o);let r=(0,r0.default)(this,e),i=cF.default.serialize(r),n=zi(i);if(this.installStateChecksum===n)return;let s=this.configuration.get("installStatePath");await T.mkdirPromise(v.dirname(s),{recursive:!0}),await T.writeFilePromise(s,await aUe(i)),this.installStateChecksum=n}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:i=!0}={}){let n=this.configuration.get("installStatePath");if(!T.existsSync(n)){r&&await this.applyLightResolution();return}let s=await AUe(await T.readFilePromise(n));this.installStateChecksum=zi(s);let o=cF.default.deserialize(s);e&&typeof o.installersCustomData!="undefined"&&(this.installersCustomData=o.installersCustomData),i&&Object.assign(this,(0,r0.default)(o,gF.restoreBuildState)),r&&(o.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,(0,r0.default)(o,gF.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ei}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:r}){let i=new Set([".gitignore"]);if(!Fb(e.cwd,this.cwd)||!await T.existsPromise(e.cwd))return;let n=this.configuration.get("preferAggregateCacheInfo"),s=0,o=null;for(let a of await T.readdirPromise(e.cwd)){if(i.has(a))continue;let l=v.resolve(e.cwd,a);e.markedFiles.has(l)||(o=a,e.immutable?r.reportError(z.IMMUTABLE_CACHE,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(n?s+=1:r.reportInfo(z.UNUSED_CACHE_ENTRY,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused - removing`),await T.removePromise(l)))}n&&s!==0&&r.reportInfo(z.UNUSED_CACHE_ENTRY,s>1?`${s} packages appeared to be unused and were removed`:`${o} appeared to be unused and was removed`),e.markedFiles.clear()}};function lUe({project:t,allDescriptors:e,allResolutions:r,allPackages:i,accessibleLocators:n=new Set,optionalBuilds:s=new Set,volatileDescriptors:o=new Set,peerRequirements:a=new Map,report:l,tolerateMissingPackages:c=!1}){var ne;let u=new Map,g=[],f=new Map,h=new Map,p=new Map,d=new Map,m=new Map,I=new Map(t.workspaces.map(q=>{let A=q.anchoredLocator.locatorHash,V=i.get(A);if(typeof V=="undefined"){if(c)return[A,null];throw new Error("Assertion failed: The workspace should have an associated package")}return[A,ap(V)]})),B=()=>{let q=T.mktempSync(),A=v.join(q,"stacktrace.log"),V=String(g.length+1).length,W=g.map((X,F)=>`${`${F+1}.`.padStart(V," ")} ${is(X)} -`).join("");throw T.writeFileSync(A,W),T.detachTemp(q),new nt(z.STACK_OVERFLOW_RESOLUTION,`Encountered a stack overflow when resolving peer dependencies; cf ${M.fromPortablePath(A)}`)},b=q=>{let A=r.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: The resolution should have been registered");let V=i.get(A);if(!V)throw new Error("Assertion failed: The package could not be found");return V},R=(q,A,V,{top:W,optional:X})=>{g.length>1e3&&B(),g.push(A);let F=H(q,A,V,{top:W,optional:X});return g.pop(),F},H=(q,A,V,{top:W,optional:X})=>{if(n.has(A.locatorHash))return;n.add(A.locatorHash),X||s.delete(A.locatorHash);let F=i.get(A.locatorHash);if(!F){if(c)return;throw new Error(`Assertion failed: The package (${lt(t.configuration,A)}) should have been registered`)}let D=[],he=[],pe=[],Ne=[],Pe=[];for(let re of Array.from(F.dependencies.values())){if(F.peerDependencies.has(re.identHash)&&F.locatorHash!==W)continue;if(hA(re))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");o.delete(re.descriptorHash);let se=X;if(!se){let ee=F.dependenciesMeta.get(St(re));if(typeof ee!="undefined"){let Ue=ee.get(null);typeof Ue!="undefined"&&Ue.optional&&(se=!0)}}let be=r.get(re.descriptorHash);if(!be){if(c)continue;throw new Error(`Assertion failed: The resolution (${Xt(t.configuration,re)}) should have been registered`)}let ae=I.get(be)||i.get(be);if(!ae)throw new Error(`Assertion failed: The package (${be}, resolved from ${Xt(t.configuration,re)}) should have been registered`);if(ae.peerDependencies.size===0){R(re,ae,new Map,{top:W,optional:se});continue}let Ae=u.get(ae.locatorHash);typeof Ae=="number"&&Ae>=2&&B();let De,$,G=new Set,Ce;he.push(()=>{De=kx(re,A.locatorHash),$=Px(ae,A.locatorHash),F.dependencies.delete(re.identHash),F.dependencies.set(De.identHash,De),r.set(De.descriptorHash,$.locatorHash),e.set(De.descriptorHash,De),i.set($.locatorHash,$),D.push([ae,De,$])}),pe.push(()=>{var ee;Ce=new Map;for(let Ue of $.peerDependencies.values()){let Oe=F.dependencies.get(Ue.identHash);if(!Oe&&cp(A,Ue)&&(Oe=q),(!Oe||Oe.range==="missing:")&&$.dependencies.has(Ue.identHash)){$.peerDependencies.delete(Ue.identHash);continue}Oe||(Oe=Yt(Ue,"missing:")),$.dependencies.set(Oe.identHash,Oe),hA(Oe)&&Pl(p,Oe.descriptorHash).add($.locatorHash),f.set(Oe.identHash,Oe),Oe.range==="missing:"&&G.add(Oe.identHash),Ce.set(Ue.identHash,(ee=V.get(Ue.identHash))!=null?ee:$.locatorHash)}$.dependencies=new Map(gn($.dependencies,([Ue,Oe])=>St(Oe)))}),Ne.push(()=>{if(!i.has($.locatorHash))return;let ee=u.get(ae.locatorHash),Ue=typeof ee!="undefined"?ee+1:1;u.set(ae.locatorHash,Ue),R(De,$,Ce,{top:W,optional:se}),u.set(ae.locatorHash,Ue-1)}),Pe.push(()=>{let ee=F.dependencies.get(re.identHash);if(typeof ee=="undefined")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let Ue=r.get(ee.descriptorHash);if(typeof Ue=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");if(Pl(m,Ue).add(A.locatorHash),!!i.has($.locatorHash)){for(let Oe of $.peerDependencies.values()){let vt=Ce.get(Oe.identHash);if(typeof vt=="undefined")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");hu(pu(d,vt),St(Oe)).push($.locatorHash)}for(let Oe of G)$.dependencies.delete(Oe)}})}for(let re of[...he,...pe])re();let qe;do{qe=!0;for(let[re,se,be]of D){if(!i.has(be.locatorHash))continue;let ae=pu(h,re.locatorHash),Ae=zi(...[...be.dependencies.values()].map(Ce=>{let ee=Ce.range!=="missing:"?r.get(Ce.descriptorHash):"missing:";if(typeof ee=="undefined")throw new Error(`Assertion failed: Expected the resolution for ${Xt(t.configuration,Ce)} to have been registered`);return ee===W?`${ee} (top)`:ee}),se.identHash),De=ae.get(Ae);if(typeof De=="undefined"){ae.set(Ae,se);continue}if(De===se)continue;qe=!1,i.delete(be.locatorHash),e.delete(se.descriptorHash),r.delete(se.descriptorHash),n.delete(be.locatorHash);let $=p.get(se.descriptorHash)||[],G=[F.locatorHash,...$];p.delete(se.descriptorHash);for(let Ce of G){let ee=i.get(Ce);typeof ee!="undefined"&&ee.dependencies.set(se.identHash,De)}}}while(!qe);for(let re of[...Ne,...Pe])re()};for(let q of t.workspaces){let A=q.anchoredLocator;o.delete(q.anchoredDescriptor.descriptorHash),R(q.anchoredDescriptor,A,new Map,{top:A.locatorHash,optional:!1})}var L;(function(V){V[V.NotProvided=0]="NotProvided",V[V.NotCompatible=1]="NotCompatible"})(L||(L={}));let K=[];for(let[q,A]of m){let V=i.get(q);if(typeof V=="undefined")throw new Error("Assertion failed: Expected the root to be registered");let W=d.get(q);if(typeof W!="undefined")for(let X of A){let F=i.get(X);if(typeof F!="undefined")for(let[D,he]of W){let pe=En(D);if(F.peerDependencies.has(pe.identHash))continue;let Ne=`p${zi(X,D,q).slice(0,5)}`;a.set(Ne,{subject:X,requested:pe,rootRequester:q,allRequesters:he});let Pe=V.dependencies.get(pe.identHash);if(typeof Pe!="undefined"){let qe=b(Pe),re=(ne=qe.version)!=null?ne:"0.0.0",se=new Set;for(let ae of he){let Ae=i.get(ae);if(typeof Ae=="undefined")throw new Error("Assertion failed: Expected the link to be registered");let De=Ae.peerDependencies.get(pe.identHash);if(typeof De=="undefined")throw new Error("Assertion failed: Expected the ident to be registered");se.add(De.range)}[...se].every(ae=>{if(ae.startsWith(Yr.protocol)){if(!t.tryWorkspaceByLocator(qe))return!1;ae=ae.slice(Yr.protocol.length),(ae==="^"||ae==="~")&&(ae="*")}return lc(re,ae)})||K.push({type:1,subject:F,requested:pe,requester:V,version:re,hash:Ne,requirementCount:he.length})}else{let qe=V.peerDependenciesMeta.get(D);(qe==null?void 0:qe.optional)||K.push({type:0,subject:F,requested:pe,requester:V,hash:Ne})}}}}let J=[q=>Rx(q.subject),q=>St(q.requested),q=>`${q.type}`];for(let q of gn(K,J))switch(q.type){case 0:l==null||l.reportWarning(z.MISSING_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} doesn't provide ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}), requested by ${Vr(t.configuration,q.requester)}`);break;case 1:{let A=q.requirementCount>1?"and some of its descendants request":"requests";l==null||l.reportWarning(z.INCOMPATIBLE_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} provides ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}) with version ${fp(t.configuration,q.version)}, which doesn't satisfy what ${Vr(t.configuration,q.requester)} ${A}`)}break}K.length>0&&(l==null||l.reportWarning(z.UNNAMED,`Some peer dependencies are incorrectly met; run ${Ve(t.configuration,"yarn explain peer-requirements ",Le.CODE)} for details, where ${Ve(t.configuration,"",Le.CODE)} is the six-letter p-prefixed code`))}var Po;(function(l){l.VERSION="version",l.COMMAND_NAME="commandName",l.PLUGIN_NAME="pluginName",l.INSTALL_COUNT="installCount",l.PROJECT_COUNT="projectCount",l.WORKSPACE_COUNT="workspaceCount",l.DEPENDENCY_COUNT="dependencyCount",l.EXTENSION="packageExtension"})(Po||(Po={}));var Rd=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let i=this.getRegistryPath();this.isNew=!T.existsSync(i),this.sendReport(r),this.startBuffer()}reportVersion(e){this.reportValue(Po.VERSION,e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue(Po.COMMAND_NAME,e||"")}reportPluginName(e){this.reportValue(Po.PLUGIN_NAME,e)}reportProject(e){this.reportEnumerator(Po.PROJECT_COUNT,e)}reportInstall(e){this.reportHit(Po.INSTALL_COUNT,e)}reportPackageExtension(e){this.reportValue(Po.EXTENSION,e)}reportWorkspaceCount(e){this.reportValue(Po.WORKSPACE_COUNT,String(e))}reportDependencyCount(e){this.reportValue(Po.DEPENDENCY_COUNT,String(e))}reportValue(e,r){Pl(this.values,e).add(r)}reportEnumerator(e,r){Pl(this.enumerators,e).add(zi(r))}reportHit(e,r="*"){let i=pu(this.hits,e),n=na(i,r,()=>0);i.set(r,n+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return v.join(e,"telemetry.json")}sendReport(e){var u,g,f;let r=this.getRegistryPath(),i;try{i=T.readJsonSync(r)}catch{i={}}let n=Date.now(),s=this.configuration.get("telemetryInterval")*24*60*60*1e3,a=((u=i.lastUpdate)!=null?u:n+s+Math.floor(s*Math.random()))+s;if(a>n&&i.lastUpdate!=null)return;try{T.mkdirSync(v.dirname(r),{recursive:!0}),T.writeJsonSync(r,{lastUpdate:n})}catch{return}if(a>n||!i.blocks)return;let l=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,c=h=>iP(l,h,{configuration:this.configuration}).catch(()=>{});for(let[h,p]of Object.entries((g=i.blocks)!=null?g:{})){if(Object.keys(p).length===0)continue;let d=p;d.userId=h,d.reportType="primary";for(let B of Object.keys((f=d.enumerators)!=null?f:{}))d.enumerators[B]=d.enumerators[B].length;c(d);let m=new Map,I=20;for(let[B,b]of Object.entries(d.values))b.length>0&&m.set(B,b.slice(0,I));for(;m.size>0;){let B={};B.userId=h,B.reportType="secondary",B.metrics={};for(let[b,R]of m)B.metrics[b]=R.shift(),R.length===0&&m.delete(b);c(B)}}}applyChanges(){var o,a,l,c,u,g,f,h,p;let e=this.getRegistryPath(),r;try{r=T.readJsonSync(e)}catch{r={}}let i=(o=this.configuration.get("telemetryUserId"))!=null?o:"*",n=r.blocks=(a=r.blocks)!=null?a:{},s=n[i]=(l=n[i])!=null?l:{};for(let d of this.hits.keys()){let m=s.hits=(c=s.hits)!=null?c:{},I=m[d]=(u=m[d])!=null?u:{};for(let[B,b]of this.hits.get(d))I[B]=((g=I[B])!=null?g:0)+b}for(let d of["values","enumerators"])for(let m of this[d].keys()){let I=s[d]=(f=s[d])!=null?f:{};I[m]=[...new Set([...(h=I[m])!=null?h:[],...(p=this[d].get(m))!=null?p:[]])]}T.mkdirSync(v.dirname(e),{recursive:!0}),T.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}};var fF=ie(require("child_process")),R$=ie(ml());var hF=ie(require("fs"));var Yg=new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]]);function cUe(t){let e=M.fromPortablePath(t);process.on("SIGINT",()=>{}),e?(0,fF.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})}):(0,fF.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})})}async function i0({binaryVersion:t,pluginConfiguration:e}){async function r(){let n=new oo({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:t});try{await i(n)}catch(s){process.stdout.write(n.error(s)),process.exitCode=1}}async function i(n){var p,d,m,I,B;let s=process.versions.node,o=">=12 <14 || 14.2 - 14.9 || >14.10.0";if(process.env.YARN_IGNORE_NODE!=="1"&&!qt.satisfiesWithPrereleases(s,o))throw new me(`This tool requires a Node version compatible with ${o} (got ${s}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let a=await fe.find(M.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),l=a.get("yarnPath"),c=a.get("ignorePath"),u=a.get("ignoreCwd"),g=M.toPortablePath(M.resolve(process.argv[1])),f=b=>T.readFilePromise(b).catch(()=>Buffer.of());if(!c&&!u&&await(async()=>l===g||Buffer.compare(...await Promise.all([f(l),f(g)]))===0)()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await i(n);return}else if(l!==null&&!c)if(!T.existsSync(l))process.stdout.write(n.error(new Error(`The "yarn-path" option has been set (in ${a.sources.get("yarnPath")}), but the specified location doesn't exist (${l}).`))),process.exitCode=1;else try{cUe(l)}catch(b){process.exitCode=b.code||1}else{c&&delete process.env.YARN_IGNORE_PATH,a.get("enableTelemetry")&&!R$.isCI&&process.stdout.isTTY&&(fe.telemetry=new Rd(a,"puba9cdc10ec5790a2cf4969dd413a47270")),(p=fe.telemetry)==null||p.reportVersion(t);for(let[L,K]of a.plugins.entries()){Yg.has((m=(d=L.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:d[1])!=null?m:"")&&((I=fe.telemetry)==null||I.reportPluginName(L));for(let J of K.commands||[])n.register(J)}let R=n.process(process.argv.slice(2));R.help||(B=fe.telemetry)==null||B.reportCommandName(R.path.join(" "));let H=R.cwd;if(typeof H!="undefined"&&!u){let L=(0,hF.realpathSync)(process.cwd()),K=(0,hF.realpathSync)(H);if(L!==K){process.chdir(H),await r();return}}await n.runExit(R,{cwd:M.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})}}return r().catch(n=>{process.stdout.write(n.stack||n.message),process.exitCode=1}).finally(()=>T.rmtempPromise())}function F$(t){t.Command.Path=(...e)=>r=>{r.paths=r.paths||[],r.paths.push(e)};for(let e of["Array","Boolean","String","Proxy","Rest","Counter"])t.Command[e]=(...r)=>(i,n)=>{let s=t.Option[e](...r);Object.defineProperty(i,`__${n}`,{configurable:!1,enumerable:!0,get(){return s},set(o){this[n]=o}})};return t}var iC={};it(iC,{BaseCommand:()=>Be,WorkspaceRequiredError:()=>rt,getDynamicLibs:()=>Wie,getPluginConfiguration:()=>F0,main:()=>i0,openWorkspace:()=>rf,pluginCommands:()=>Yg});var Be=class extends ye{constructor(){super(...arguments);this.cwd=Y.String("--cwd",{hidden:!0})}};var rt=class extends me{constructor(e,r){let i=v.relative(e,r),n=v.join(e,Ze.fileName);super(`This command can only be run from within a workspace of your project (${i} isn't a workspace of ${n}).`)}};var dJe=ie(Or());Ss();var CJe=ie(gN()),Wie=()=>new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",vh],["semver",dJe],["typanion",lu],["yup",CJe]]);async function rf(t,e){let{project:r,workspace:i}=await Ke.find(t,e);if(!i)throw new rt(r.cwd,e);return i}var x_e=ie(Or());Ss();var k_e=ie(gN());var hL={};it(hL,{dedupeUtils:()=>zN,default:()=>Qze,suggestUtils:()=>LN});var WAe=ie(ml());var roe=ie(aC());Ss();var LN={};it(LN,{Modifier:()=>Lo,Strategy:()=>Fr,Target:()=>vr,WorkspaceModifier:()=>af,applyModifier:()=>Zse,extractDescriptorFromPath:()=>ON,extractRangeModifier:()=>Xse,fetchDescriptorFrom:()=>MN,findProjectDescriptors:()=>toe,getModifier:()=>AC,getSuggestedDescriptors:()=>lC,makeWorkspaceDescriptor:()=>eoe,toWorkspaceModifier:()=>$se});var TN=ie(Or()),L3e="workspace:",vr;(function(i){i.REGULAR="dependencies",i.DEVELOPMENT="devDependencies",i.PEER="peerDependencies"})(vr||(vr={}));var Lo;(function(i){i.CARET="^",i.TILDE="~",i.EXACT=""})(Lo||(Lo={}));var af;(function(i){i.CARET="^",i.TILDE="~",i.EXACT="*"})(af||(af={}));var Fr;(function(s){s.KEEP="keep",s.REUSE="reuse",s.PROJECT="project",s.LATEST="latest",s.CACHE="cache"})(Fr||(Fr={}));function AC(t,e){return t.exact?Lo.EXACT:t.caret?Lo.CARET:t.tilde?Lo.TILDE:e.configuration.get("defaultSemverRangePrefix")}var T3e=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Xse(t,{project:e}){let r=t.match(T3e);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function Zse(t,e){let{protocol:r,source:i,params:n,selector:s}=S.parseRange(t.range);return TN.default.valid(s)&&(s=`${e}${t.range}`),S.makeDescriptor(t,S.makeRange({protocol:r,source:i,params:n,selector:s}))}function $se(t){switch(t){case Lo.CARET:return af.CARET;case Lo.TILDE:return af.TILDE;case Lo.EXACT:return af.EXACT;default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function eoe(t,e){return S.makeDescriptor(t.anchoredDescriptor,`${L3e}${$se(e)}`)}async function toe(t,{project:e,target:r}){let i=new Map,n=s=>{let o=i.get(s.descriptorHash);return o||i.set(s.descriptorHash,o={descriptor:s,locators:[]}),o};for(let s of e.workspaces)if(r===vr.PEER){let o=s.manifest.peerDependencies.get(t.identHash);o!==void 0&&n(o).locators.push(s.locator)}else{let o=s.manifest.dependencies.get(t.identHash),a=s.manifest.devDependencies.get(t.identHash);r===vr.DEVELOPMENT?a!==void 0?n(a).locators.push(s.locator):o!==void 0&&n(o).locators.push(s.locator):o!==void 0?n(o).locators.push(s.locator):a!==void 0&&n(a).locators.push(s.locator)}return i}async function ON(t,{cwd:e,workspace:r}){return await M3e(async i=>{v.isAbsolute(t)||(t=v.relative(r.cwd,v.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:n}=r,s=await MN(S.makeIdent(null,"archive"),t,{project:r.project,cache:i,workspace:r});if(!s)throw new Error("Assertion failed: The descriptor should have been found");let o=new ei,a=n.configuration.makeResolver(),l=n.configuration.makeFetcher(),c={checksums:n.storedChecksums,project:n,cache:i,fetcher:l,report:o,resolver:a},u=a.bindDescriptor(s,r.anchoredLocator,c),g=S.convertDescriptorToLocator(u),f=await l.fetch(g,c),h=await Ze.find(f.prefixPath,{baseFs:f.packageFs});if(!h.name)throw new Error("Target path doesn't have a name");return S.makeDescriptor(h.name,t)})}async function lC(t,{project:e,workspace:r,cache:i,target:n,modifier:s,strategies:o,maxResults:a=Infinity}){if(!(a>=0))throw new Error(`Invalid maxResults (${a})`);if(t.range!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${S.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let l=typeof r!="undefined"&&r!==null&&r.manifest[n].get(t.identHash)||null,c=[],u=[],g=async f=>{try{await f()}catch(h){u.push(h)}};for(let f of o){if(c.length>=a)break;switch(f){case Fr.KEEP:await g(async()=>{l&&c.push({descriptor:l,name:`Keep ${S.prettyDescriptor(e.configuration,l)}`,reason:"(no changes)"})});break;case Fr.REUSE:await g(async()=>{for(let{descriptor:h,locators:p}of(await toe(t,{project:e,target:n})).values()){if(p.length===1&&p[0].locatorHash===r.anchoredLocator.locatorHash&&o.includes(Fr.KEEP))continue;let d=`(originally used by ${S.prettyLocator(e.configuration,p[0])}`;d+=p.length>1?` and ${p.length-1} other${p.length>2?"s":""})`:")",c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:d})}});break;case Fr.CACHE:await g(async()=>{for(let h of e.storedDescriptors.values())h.identHash===t.identHash&&c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:"(already used somewhere in the lockfile)"})});break;case Fr.PROJECT:await g(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let h=e.tryWorkspaceByIdent(t);if(h===null)return;let p=eoe(h,s);c.push({descriptor:p,name:`Attach ${S.prettyDescriptor(e.configuration,p)}`,reason:`(local workspace at ${ue.pretty(e.configuration,h.relativeCwd,ue.Type.PATH)})`})});break;case Fr.LATEST:await g(async()=>{if(t.range!=="unknown")c.push({descriptor:t,name:`Use ${S.prettyRange(e.configuration,t.range)}`,reason:"(explicit range requested)"});else if(n===vr.PEER)c.push({descriptor:S.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))c.push({descriptor:null,name:"Resolve from latest",reason:ue.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let h=await MN(t,"latest",{project:e,cache:i,workspace:r,preserveModifier:!1});h&&(h=Zse(h,s),c.push({descriptor:h,name:`Use ${S.prettyDescriptor(e.configuration,h)}`,reason:"(resolved from latest)"}))}});break}}return{suggestions:c.slice(0,a),rejections:u.slice(0,a)}}async function MN(t,e,{project:r,cache:i,workspace:n,preserveModifier:s=!0}){let o=S.makeDescriptor(t,e),a=new ei,l=r.configuration.makeFetcher(),c=r.configuration.makeResolver(),u={project:r,fetcher:l,cache:i,checksums:r.storedChecksums,report:a,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},g=_(P({},u),{resolver:c,fetchOptions:u}),f=c.bindDescriptor(o,n.anchoredLocator,g),h=await c.getCandidates(f,new Map,g);if(h.length===0)return null;let p=h[0],{protocol:d,source:m,params:I,selector:B}=S.parseRange(S.convertToManifestRange(p.reference));if(d===r.configuration.get("defaultProtocol")&&(d=null),TN.default.valid(B)&&s!==!1){let b=typeof s=="string"?s:o.range;B=Xse(b,{project:r})+B}return S.makeDescriptor(p,S.makeRange({protocol:d,source:m,params:I,selector:B}))}async function M3e(t){return await T.mktempPromise(async e=>{let r=fe.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Qt(e,{configuration:r,check:!1,immutable:!1}))})}var cC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=Y.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=Y.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=Y.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=Y.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=Y.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=Y.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.silent=Y.Boolean("--silent",{hidden:!0});this.packages=Y.Rest()}async execute(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=[...s?[Fr.REUSE]:[],Fr.PROJECT,...this.cached?[Fr.CACHE]:[],Fr.LATEST],l=s?Infinity:1,c=await Promise.all(this.packages.map(async m=>{let I=m.match(/^\.{0,2}\//)?await ON(m,{cwd:this.context.cwd,workspace:i}):S.parseDescriptor(m),B=O3e(i,I,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional}),b=await lC(I,{project:r,workspace:i,cache:n,target:B,modifier:o,strategies:a,maxResults:l});return[I,b,B]})),u=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[I,{suggestions:B,rejections:b}]of c)if(B.filter(H=>H.descriptor!==null).length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),m.reportSeparator(),m.reportExceptionOnce(H)}});if(u.hasErrors())return u.exitCode();let g=!1,f=[],h=[];for(let[,{suggestions:m},I]of c){let B,b=m.filter(K=>K.descriptor!==null),R=b[0].descriptor,H=b.every(K=>S.areDescriptorsEqual(K.descriptor,R));b.length===1||H?B=R:(g=!0,{answer:B}=await(0,roe.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:m.map(({descriptor:K,name:J,reason:ne})=>K?{name:J,hint:ne,descriptor:K}:{name:J,hint:ne,disabled:!0}),onCancel:()=>process.exit(130),result(K){return this.find(K,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let L=i.manifest[I].get(B.identHash);(typeof L=="undefined"||L.descriptorHash!==B.descriptorHash)&&(i.manifest[I].set(B.identHash,B),this.optional&&(I==="dependencies"?i.manifest.ensureDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0:I==="peerDependencies"&&(i.manifest.ensurePeerDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0)),typeof L=="undefined"?f.push([i,I,B,a]):h.push([i,I,L,B]))}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyAddition,f),await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),g&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};cC.paths=[["add"]],cC.usage=ye.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});var ioe=cC;function O3e(t,e,{dev:r,peer:i,preferDev:n,optional:s}){let o=t.manifest[vr.REGULAR].has(e.identHash),a=t.manifest[vr.DEVELOPMENT].has(e.identHash),l=t.manifest[vr.PEER].has(e.identHash);if((r||i)&&o)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(s&&a)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(s&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||n)&&s)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);return i?vr.PEER:r||n?vr.DEVELOPMENT:o?vr.REGULAR:a?vr.DEVELOPMENT:vr.REGULAR}var uC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);if(await r.restoreInstallState(),this.name){let o=(await Kt.getPackageAccessibleBinaries(i,{project:r})).get(this.name);if(!o)throw new me(`Couldn't find a binary named "${this.name}" for package "${S.prettyLocator(e,i)}"`);let[,a]=o;return this.context.stdout.write(`${a} -`),0}return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async s=>{let o=await Kt.getPackageAccessibleBinaries(i,{project:r}),l=Array.from(o.keys()).reduce((c,u)=>Math.max(c,u.length),0);for(let[c,[u,g]]of o)s.reportJson({name:c,source:S.stringifyIdent(u),path:g});if(this.verbose)for(let[c,[u]]of o)s.reportInfo(null,`${c.padEnd(l," ")} ${S.prettyLocator(e,u)}`);else for(let c of o.keys())s.reportInfo(null,c)})).exitCode()}};uC.paths=[["bin"]],uC.usage=ye.Usage({description:"get the path to a binary script",details:` - When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. - - When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. - `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});var noe=uC;var gC=class extends Be{constructor(){super(...arguments);this.mirror=Y.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=Y.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await Qt.find(e);return(await Fe.start({configuration:e,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&r.mirrorCwd!==null,s=!this.mirror;n&&(await T.removePromise(r.mirrorCwd),await e.triggerHook(o=>o.cleanGlobalArtifacts,e)),s&&await T.removePromise(r.cwd)})).exitCode()}};gC.paths=[["cache","clean"],["cache","clear"]],gC.usage=ye.Usage({description:"remove the shared cache files",details:` - This command will remove all the files from the cache. - `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});var soe=gC;var ooe=ie(p0()),KN=ie(require("util")),fC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=Y.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=this.name.replace(/[.[].*$/,""),i=this.name.replace(/^[^.[]*/,"");if(typeof e.settings.get(r)=="undefined")throw new me(`Couldn't find a configuration settings named "${r}"`);let s=e.getSpecial(r,{hideSecrets:!this.unsafe,getNativePaths:!0}),o=de.convertMapsToIndexableObjects(s),a=i?(0,ooe.default)(o,i):o,l=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async c=>{c.reportJson(a)});if(!this.json){if(typeof a=="string")return this.context.stdout.write(`${a} -`),l.exitCode();KN.inspect.styles.name="cyan",this.context.stdout.write(`${(0,KN.inspect)(a,{depth:Infinity,colors:e.get("enableColors"),compact:!1})} -`)}return l.exitCode()}};fC.paths=[["config","get"]],fC.usage=ye.Usage({description:"read a configuration settings",details:` - This command will print a configuration setting. - - Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. - `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});var aoe=fC;var Eae=ie(qN()),Iae=ie(p0()),yae=ie(mae()),JN=ie(require("util")),pC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String();this.value=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);if(i==="enableStrictSettings")throw new me("This setting only affects the file it's in, and thus cannot be set from the CLI");let o=this.json?JSON.parse(this.value):this.value;await(this.home?h=>fe.updateHomeConfiguration(h):h=>fe.updateConfiguration(r(),h))(h=>{if(n){let p=(0,Eae.default)(h);return(0,yae.default)(p,this.name,o),p}else return _(P({},h),{[i]:o})});let c=(await fe.find(this.context.cwd,this.context.plugins)).getSpecial(i,{hideSecrets:!0,getNativePaths:!0}),u=de.convertMapsToIndexableObjects(c),g=n?(0,Iae.default)(u,n):u;return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async h=>{JN.inspect.styles.name="cyan",h.reportInfo(z.UNNAMED,`Successfully set ${this.name} to ${(0,JN.inspect)(g,{depth:Infinity,colors:e.get("enableColors"),compact:!1})}`)})).exitCode()}};pC.paths=[["config","set"]],pC.usage=ye.Usage({description:"change a configuration settings",details:` - This command will set a configuration setting. - - When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). - - When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. - `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});var wae=pC;var Dae=ie(qN()),Rae=ie(Ld()),Fae=ie(Pae()),dC=class extends Be{constructor(){super(...arguments);this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);let o=this.home?l=>fe.updateHomeConfiguration(l):l=>fe.updateConfiguration(r(),l);return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async l=>{let c=!1;await o(u=>{if(!(0,Rae.default)(u,this.name))return l.reportWarning(z.UNNAMED,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),c=!0,u;let g=n?(0,Dae.default)(u):P({},u);return(0,Fae.default)(g,this.name),g}),c||l.reportInfo(z.UNNAMED,`Successfully unset ${this.name}`)})).exitCode()}};dC.paths=[["config","unset"]],dC.usage=ye.Usage({description:"unset a configuration setting",details:` - This command will unset a configuration setting. - `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});var Nae=dC;var WN=ie(require("util")),CC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=Y.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{if(e.invalid.size>0&&!this.json){for(let[n,s]of e.invalid)i.reportError(z.INVALID_CONFIGURATION_KEY,`Invalid configuration key "${n}" in ${s}`);i.reportSeparator()}if(this.json){let n=de.sortMap(e.settings.keys(),s=>s);for(let s of n){let o=e.settings.get(s),a=e.getSpecial(s,{hideSecrets:!0,getNativePaths:!0}),l=e.sources.get(s);this.verbose?i.reportJson({key:s,effective:a,source:l}):i.reportJson(P({key:s,effective:a,source:l},o))}}else{let n=de.sortMap(e.settings.keys(),a=>a),s=n.reduce((a,l)=>Math.max(a,l.length),0),o={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let a=n.map(c=>{let u=e.settings.get(c);if(!u)throw new Error(`Assertion failed: This settings ("${c}") should have been registered`);let g=this.why?e.sources.get(c)||"":u.description;return[c,g]}),l=a.reduce((c,[,u])=>Math.max(c,u.length),0);for(let[c,u]of a)i.reportInfo(null,`${c.padEnd(s," ")} ${u.padEnd(l," ")} ${(0,WN.inspect)(e.getSpecial(c,{hideSecrets:!0,getNativePaths:!0}),o)}`)}else for(let a of n)i.reportInfo(null,`${a.padEnd(s," ")} ${(0,WN.inspect)(e.getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),o)}`)}})).exitCode()}};CC.paths=[["config"]],CC.usage=ye.Usage({description:"display the current configuration",details:` - This command prints the current active configuration settings. - `,examples:[["Print the active configuration settings","$0 config"]]});var Lae=CC;Ss();var zN={};it(zN,{Strategy:()=>Oc,acceptedStrategies:()=>H4e,dedupe:()=>VN});var Tae=ie(Nn()),Oc;(function(e){e.HIGHEST="highest"})(Oc||(Oc={}));var H4e=new Set(Object.values(Oc)),G4e={highest:async(t,e,{resolver:r,fetcher:i,resolveOptions:n,fetchOptions:s})=>{let o=new Map;for(let[a,l]of t.storedResolutions){let c=t.storedDescriptors.get(a);if(typeof c=="undefined")throw new Error(`Assertion failed: The descriptor (${a}) should have been registered`);de.getSetWithDefault(o,c.identHash).add(l)}return Array.from(t.storedDescriptors.values(),async a=>{if(e.length&&!Tae.default.isMatch(S.stringifyIdent(a),e))return null;let l=t.storedResolutions.get(a.descriptorHash);if(typeof l=="undefined")throw new Error(`Assertion failed: The resolution (${a.descriptorHash}) should have been registered`);let c=t.originalPackages.get(l);if(typeof c=="undefined"||!r.shouldPersistResolution(c,n))return null;let u=o.get(a.identHash);if(typeof u=="undefined")throw new Error(`Assertion failed: The resolutions (${a.identHash}) should have been registered`);if(u.size===1)return null;let g=[...u].map(m=>{let I=t.originalPackages.get(m);if(typeof I=="undefined")throw new Error(`Assertion failed: The package (${m}) should have been registered`);return I.reference}),f=await r.getSatisfying(a,g,n),h=f==null?void 0:f[0];if(typeof h=="undefined")return null;let p=h.locatorHash,d=t.originalPackages.get(p);if(typeof d=="undefined")throw new Error(`Assertion failed: The package (${p}) should have been registered`);return p===l?null:{descriptor:a,currentPackage:c,updatedPackage:d}})}};async function VN(t,{strategy:e,patterns:r,cache:i,report:n}){let{configuration:s}=t,o=new ei,a=s.makeResolver(),l=s.makeFetcher(),c={cache:i,checksums:t.storedChecksums,fetcher:l,project:t,report:o,skipIntegrityCheck:!0,cacheOptions:{skipIntegrityCheck:!0}},u={project:t,resolver:a,report:o,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{let f=await G4e[e](t,r,{resolver:a,resolveOptions:u,fetcher:l,fetchOptions:c}),h=Xi.progressViaCounter(f.length);n.reportProgress(h);let p=0;await Promise.all(f.map(I=>I.then(B=>{if(B===null)return;p++;let{descriptor:b,currentPackage:R,updatedPackage:H}=B;n.reportInfo(z.UNNAMED,`${S.prettyDescriptor(s,b)} can be deduped from ${S.prettyLocator(s,R)} to ${S.prettyLocator(s,H)}`),n.reportJson({descriptor:S.stringifyDescriptor(b),currentResolution:S.stringifyLocator(R),updatedResolution:S.stringifyLocator(H)}),t.storedResolutions.set(b.descriptorHash,H.locatorHash)}).finally(()=>h.tick())));let d;switch(p){case 0:d="No packages";break;case 1:d="One package";break;default:d=`${p} packages`}let m=ue.pretty(s,e,ue.Type.CODE);return n.reportInfo(z.UNNAMED,`${d} can be deduped using the ${m} strategy`),p})}var mC=class extends Be{constructor(){super(...arguments);this.strategy=Y.String("-s,--strategy",Oc.HIGHEST,{description:"The strategy to use when deduping dependencies",validator:Yi(Oc)});this.check=Y.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=await Qt.find(e);await r.restoreInstallState({restoreResolutions:!1});let n=0,s=await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout,json:this.json},async o=>{n=await VN(r,{strategy:this.strategy,patterns:this.patterns,cache:i,report:o})});return s.hasErrors()?s.exitCode():this.check?n?1:0:(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async a=>{await r.install({cache:i,report:a,mode:this.mode})})).exitCode()}};mC.paths=[["dedupe"]],mC.usage=ye.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});var Mae=mC;var Y0=class extends Be{async execute(){let{plugins:e}=await fe.find(this.context.cwd,this.context.plugins),r=[];for(let o of e){let{commands:a}=o[1];if(a){let c=oo.from(a).definitions();r.push([o[0],c])}}let i=this.cli.definitions(),n=(o,a)=>o.split(" ").slice(1).join()===a.split(" ").slice(1).join(),s=Kae()["@yarnpkg/builder"].bundles.standard;for(let o of r){let a=o[1];for(let l of a)i.find(c=>n(c.path,l.path)).plugin={name:o[0],isDefault:s.includes(o[0])}}this.context.stdout.write(`${JSON.stringify(i,null,2)} -`)}};Y0.paths=[["--clipanion=definitions"]];var Uae=Y0;var q0=class extends Be{async execute(){this.context.stdout.write(this.cli.usage(null))}};q0.paths=[["help"],["--help"],["-h"]];var Hae=q0;var _N=class extends Be{constructor(){super(...arguments);this.leadingArgument=Y.String();this.args=Y.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!S.tryParseIdent(this.leadingArgument)){let e=v.resolve(this.context.cwd,M.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:e})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}},Gae=_N;var J0=class extends Be{async execute(){this.context.stdout.write(`${Zr||""} -`)}};J0.paths=[["-v"],["--version"]];var jae=J0;var EC=class extends Be{constructor(){super(...arguments);this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState(),await Kt.executePackageShellcode(i,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:r})}};EC.paths=[["exec"]],EC.usage=ye.Usage({description:"execute a shell script",details:` - This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. - - It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});var Yae=EC;Ss();var IC=class extends Be{constructor(){super(...arguments);this.hash=Y.String({required:!1,validator:fv(gv(),[hv(/^p[0-9a-f]{5}$/)])})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState({restoreResolutions:!1}),await r.applyLightResolution(),typeof this.hash!="undefined"?await j4e(this.hash,r,{stdout:this.context.stdout}):(await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async n=>{var o;let s=[([,a])=>S.stringifyLocator(r.storedPackages.get(a.subject)),([,a])=>S.stringifyIdent(a.requested)];for(let[a,l]of de.sortMap(r.peerRequirements,s)){let c=r.storedPackages.get(l.subject);if(typeof c=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let u=r.storedPackages.get(l.rootRequester);if(typeof u=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let g=(o=c.dependencies.get(l.requested.identHash))!=null?o:null,f=ue.pretty(e,a,ue.Type.CODE),h=S.prettyLocator(e,c),p=S.prettyIdent(e,l.requested),d=S.prettyIdent(e,u),m=l.allRequesters.length-1,I=`descendant${m===1?"":"s"}`,B=m>0?` and ${m} ${I}`:"",b=g!==null?"provides":"doesn't provide";n.reportInfo(null,`${f} \u2192 ${h} ${b} ${p} to ${d}${B}`)}})).exitCode()}};IC.paths=[["explain","peer-requirements"]],IC.usage=ye.Usage({description:"explain a set of peer requirements",details:` - A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. - - When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. - - When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. - - **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). - `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});var qae=IC;async function j4e(t,e,r){let{configuration:i}=e,n=e.peerRequirements.get(t);if(typeof n=="undefined")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await Fe.start({configuration:i,stdout:r.stdout,includeFooter:!1},async o=>{var I,B;let a=e.storedPackages.get(n.subject);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let l=e.storedPackages.get(n.rootRequester);if(typeof l=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let c=(I=a.dependencies.get(n.requested.identHash))!=null?I:null,u=c!==null?e.storedResolutions.get(c.descriptorHash):null;if(typeof u=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=u!==null?e.storedPackages.get(u):null;if(typeof g=="undefined")throw new Error("Assertion failed: Expected the provided package to have been registered");let f=[...n.allRequesters.values()].map(b=>{let R=e.storedPackages.get(b);if(typeof R=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let H=S.devirtualizeLocator(R),L=e.storedPackages.get(H.locatorHash);if(typeof L=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let K=L.peerDependencies.get(n.requested.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:R,peerDependency:K}});if(g!==null){let b=f.every(({peerDependency:R})=>qt.satisfiesWithPrereleases(g.version,R.range));o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} provides ${S.prettyLocator(i,g)} with version ${S.prettyReference(i,(B=g.version)!=null?B:"")}, which ${b?"satisfies":"doesn't satisfy"} the following requirements:`)}else o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} doesn't provide ${S.prettyIdent(i,n.requested)}, breaking the following requirements:`);o.reportSeparator();let h=ue.mark(i),p=[];for(let{pkg:b,peerDependency:R}of de.sortMap(f,H=>S.stringifyLocator(H.pkg))){let L=(g!==null?qt.satisfiesWithPrereleases(g.version,R.range):!1)?h.Check:h.Cross;p.push({stringifiedLocator:S.stringifyLocator(b),prettyLocator:S.prettyLocator(i,b),prettyRange:S.prettyRange(i,R.range),mark:L})}let d=Math.max(...p.map(({stringifiedLocator:b})=>b.length)),m=Math.max(...p.map(({prettyRange:b})=>b.length));for(let{stringifiedLocator:b,prettyLocator:R,prettyRange:H,mark:L}of de.sortMap(p,({stringifiedLocator:K})=>K))o.reportInfo(null,`${R.padEnd(d+(R.length-b.length)," ")} \u2192 ${H.padEnd(m," ")} ${L}`);p.length>1&&(o.reportSeparator(),o.reportInfo(z.UNNAMED,`Note: these requirements start with ${S.prettyLocator(e.configuration,l)}`))})).exitCode()}var Jae=ie(Nn()),yC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=Y.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=Y.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=Y.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=Y.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=Y.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=Y.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i&&!this.all)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=new Set(this.extra);this.cache&&s.add("cache"),this.dependents&&s.add("dependents"),this.manifest&&s.add("manifest");let o=(b,{recursive:R})=>{let H=b.anchoredLocator.locatorHash,L=new Map,K=[H];for(;K.length>0;){let J=K.shift();if(L.has(J))continue;let ne=r.storedPackages.get(J);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the package to be registered");if(L.set(J,ne),S.isVirtualLocator(ne)&&K.push(S.devirtualizeLocator(ne).locatorHash),!(!R&&J!==H))for(let q of ne.dependencies.values()){let A=r.storedResolutions.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");K.push(A)}}return L.values()},a=({recursive:b})=>{let R=new Map;for(let H of r.workspaces)for(let L of o(H,{recursive:b}))R.set(L.locatorHash,L);return R.values()},l=({all:b,recursive:R})=>b&&R?r.storedPackages.values():b?a({recursive:R}):o(i,{recursive:R}),c=({all:b,recursive:R})=>{let H=l({all:b,recursive:R}),L=this.patterns.map(ne=>{let q=S.parseLocator(ne),A=Jae.default.makeRe(S.stringifyIdent(q)),V=S.isVirtualLocator(q),W=V?S.devirtualizeLocator(q):q;return X=>{let F=S.stringifyIdent(X);if(!A.test(F))return!1;if(q.reference==="unknown")return!0;let D=S.isVirtualLocator(X),he=D?S.devirtualizeLocator(X):X;return!(V&&D&&q.reference!==X.reference||W.reference!==he.reference)}}),K=de.sortMap([...H],ne=>S.stringifyLocator(ne));return{selection:K.filter(ne=>L.length===0||L.some(q=>q(ne))),sortedLookup:K}},{selection:u,sortedLookup:g}=c({all:this.all,recursive:this.recursive});if(u.length===0)throw new me("No package matched your request");let f=new Map;if(this.dependents)for(let b of g)for(let R of b.dependencies.values()){let H=r.storedResolutions.get(R.descriptorHash);if(typeof H=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");de.getArrayWithDefault(f,H).push(b)}let h=new Map;for(let b of g){if(!S.isVirtualLocator(b))continue;let R=S.devirtualizeLocator(b);de.getArrayWithDefault(h,R.locatorHash).push(b)}let p={},d={children:p},m=e.makeFetcher(),I={project:r,fetcher:m,cache:n,checksums:r.storedChecksums,report:new ei,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},B=[async(b,R,H)=>{var J,ne;if(!R.has("manifest"))return;let L=await m.fetch(b,I),K;try{K=await Ze.find(L.prefixPath,{baseFs:L.packageFs})}finally{(J=L.releaseFs)==null||J.call(L)}H("Manifest",{License:ue.tuple(ue.Type.NO_HINT,K.license),Homepage:ue.tuple(ue.Type.URL,(ne=K.raw.homepage)!=null?ne:null)})},async(b,R,H)=>{var A;if(!R.has("cache"))return;let L={mockedPackages:r.disabledLocators,unstablePackages:r.conditionalLocators},K=(A=r.storedChecksums.get(b.locatorHash))!=null?A:null,J=n.getLocatorPath(b,K,L),ne;if(J!==null)try{ne=T.statSync(J)}catch{}let q=typeof ne!="undefined"?[ne.size,ue.Type.SIZE]:void 0;H("Cache",{Checksum:ue.tuple(ue.Type.NO_HINT,K),Path:ue.tuple(ue.Type.PATH,J),Size:q})}];for(let b of u){let R=S.isVirtualLocator(b);if(!this.virtuals&&R)continue;let H={},L={value:[b,ue.Type.LOCATOR],children:H};if(p[S.stringifyLocator(b)]=L,this.nameOnly){delete L.children;continue}let K=h.get(b.locatorHash);typeof K!="undefined"&&(H.Instances={label:"Instances",value:ue.tuple(ue.Type.NUMBER,K.length)}),H.Version={label:"Version",value:ue.tuple(ue.Type.NO_HINT,b.version)};let J=(q,A)=>{let V={};if(H[q]=V,Array.isArray(A))V.children=A.map(W=>({value:W}));else{let W={};V.children=W;for(let[X,F]of Object.entries(A))typeof F!="undefined"&&(W[X]={label:X,value:F})}};if(!R){for(let q of B)await q(b,s,J);await e.triggerHook(q=>q.fetchPackageInfo,b,s,J)}b.bin.size>0&&!R&&J("Exported Binaries",[...b.bin.keys()].map(q=>ue.tuple(ue.Type.PATH,q)));let ne=f.get(b.locatorHash);typeof ne!="undefined"&&ne.length>0&&J("Dependents",ne.map(q=>ue.tuple(ue.Type.LOCATOR,q))),b.dependencies.size>0&&!R&&J("Dependencies",[...b.dependencies.values()].map(q=>{var W;let A=r.storedResolutions.get(q.descriptorHash),V=typeof A!="undefined"&&(W=r.storedPackages.get(A))!=null?W:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:V})})),b.peerDependencies.size>0&&R&&J("Peer dependencies",[...b.peerDependencies.values()].map(q=>{var X,F;let A=b.dependencies.get(q.identHash),V=typeof A!="undefined"&&(X=r.storedResolutions.get(A.descriptorHash))!=null?X:null,W=V!==null&&(F=r.storedPackages.get(V))!=null?F:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:W})}))}Hs.emitTree(d,{configuration:e,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};yC.paths=[["info"]],yC.usage=ye.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});var Wae=yC;var W0=ie(ml());Ss();var wC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=Y.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=Y.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.checkCache=Y.Boolean("--check-cache",!1,{description:"Always refetch the packages and ensure that their checksums are consistent"});this.inlineBuilds=Y.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.cacheFolder=Y.String("--cache-folder",{hidden:!0});this.frozenLockfile=Y.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=Y.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=Y.Boolean("--non-interactive",{hidden:!0});this.preferOffline=Y.Boolean("--prefer-offline",{hidden:!0});this.production=Y.Boolean("--production",{hidden:!0});this.registry=Y.String("--registry",{hidden:!0});this.silent=Y.Boolean("--silent",{hidden:!0});this.networkTimeout=Y.String("--network-timeout",{hidden:!0})}async execute(){var c;let e=await fe.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds!="undefined"&&e.useWithSource("",{enableInlineBuilds:this.inlineBuilds},e.startingCwd,{overwrite:!0});let r=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,i=async(u,{error:g})=>{let f=await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async h=>{g?h.reportError(z.DEPRECATED_CLI_SETTINGS,u):h.reportWarning(z.DEPRECATED_CLI_SETTINGS,u)});return f.hasErrors()?f.exitCode():null};if(typeof this.ignoreEngines!="undefined"){let u=await i("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.registry!="undefined"){let u=await i("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(u!==null)return u}if(typeof this.preferOffline!="undefined"){let u=await i("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.production!="undefined"){let u=await i("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(u!==null)return u}if(typeof this.nonInteractive!="undefined"){let u=await i("The --non-interactive option is deprecated",{error:!r});if(u!==null)return u}if(typeof this.frozenLockfile!="undefined"&&(await i("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder!="undefined"){let u=await i("The cache-folder option has been deprecated; use rc settings instead",{error:!W0.default.NETLIFY});if(u!==null)return u}let n=(c=this.immutable)!=null?c:e.get("enableImmutableInstalls");if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{await Y4e(e,n)&&(g.reportInfo(z.AUTOMERGE_SUCCESS,"Automatically fixed merge conflicts \u{1F44D}"),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}if(e.projectCwd!==null&&typeof e.sources.get("nodeLinker")=="undefined"){let u=e.projectCwd,g;try{g=await T.readFilePromise(v.join(u,wt.lockfile),"utf8")}catch{}if(g==null?void 0:g.includes("yarn lockfile v1")){let f=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async h=>{h.reportInfo(z.AUTO_NM_SUCCESS,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),h.reportSeparator(),e.use("",{nodeLinker:"node-modules"},u,{overwrite:!0}),await fe.updateConfiguration(u,{nodeLinker:"node-modules"})});if(f.hasErrors())return f.exitCode()}}if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{var f;((f=fe.telemetry)==null?void 0:f.isNew)&&(g.reportInfo(z.TELEMETRY_NOTICE,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),g.reportInfo(z.TELEMETRY_NOTICE,`Run ${ue.pretty(e,"yarn config set --home enableTelemetry 0",ue.Type.CODE)} to disable`),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}let{project:s,workspace:o}=await Ke.find(e,this.context.cwd),a=await Qt.find(e,{immutable:this.immutableCache,check:this.checkCache});if(!o)throw new rt(s.cwd,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!0},async u=>{await s.install({cache:a,report:u,immutable:n,mode:this.mode})})).exitCode()}};wC.paths=[["install"],ye.Default],wC.usage=ye.Usage({description:"install the project dependencies",details:` - This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics: - - - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ). - - - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of \`cacheFolder\` in \`yarn config\` to see where the cache files are stored). - - - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know). - - - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail. - - Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches. - - If the \`--immutable\` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the \`immutablePatterns\` configuration setting). For backward compatibility we offer an alias under the name of \`--frozen-lockfile\`, but it will be removed in a later release. - - If the \`--immutable-cache\` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed). - - If the \`--check-cache\` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them. - - If the \`--inline-builds\` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - `,examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var zae=wC,q4e="|||||||",J4e=">>>>>>>",W4e="=======",Vae="<<<<<<<";async function Y4e(t,e){if(!t.projectCwd)return!1;let r=v.join(t.projectCwd,t.get("lockfileFilename"));if(!await T.existsPromise(r))return!1;let i=await T.readFilePromise(r,"utf8");if(!i.includes(Vae))return!1;if(e)throw new nt(z.AUTOMERGE_IMMUTABLE,"Cannot autofix a lockfile when running an immutable install");let[n,s]=z4e(i),o,a;try{o=Ii(n),a=Ii(s)}catch(c){throw new nt(z.AUTOMERGE_FAILED_TO_PARSE,"The individual variants of the lockfile failed to parse")}let l=P(P({},o),a);for(let[c,u]of Object.entries(l))typeof u=="string"&&delete l[c];return await T.changeFilePromise(r,Qa(l),{automaticNewlines:!0}),!0}function z4e(t){let e=[[],[]],r=t.split(/\r?\n/g),i=!1;for(;r.length>0;){let n=r.shift();if(typeof n=="undefined")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(Vae)){for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s===W4e){i=!1;break}else if(i||s.startsWith(q4e)){i=!0;continue}else e[0].push(s)}for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s.startsWith(J4e))break;e[1].push(s)}}else e[0].push(n),e[1].push(n)}return[e[0].join(` -`),e[1].join(` -`)]}var BC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target project to the current one"});this.private=Y.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target project to the current one"});this.relative=Y.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destination=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=v.resolve(this.context.cwd,M.toPortablePath(this.destination)),o=await fe.find(s,this.context.plugins,{useRc:!1,strict:!1}),{project:a,workspace:l}=await Ke.find(o,s);if(r.cwd===a.cwd)throw new me("Invalid destination; Can't link the project to itself");if(!l)throw new rt(a.cwd,s);let c=r.topLevelWorkspace,u=[];if(this.all){for(let f of a.workspaces)f.manifest.name&&(!f.manifest.private||this.private)&&u.push(f);if(u.length===0)throw new me("No workspace found to be linked in the target project")}else{if(!l.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be linked");if(l.manifest.private&&!this.private)throw new me("The target workspace is marked private - use the --private flag to link it anyway");u.push(l)}for(let f of u){let h=S.stringifyIdent(f.locator),p=this.relative?v.relative(r.cwd,f.cwd):f.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${p}`})}return(await Fe.start({configuration:e,stdout:this.context.stdout},async f=>{await r.install({cache:n,report:f})})).exitCode()}};BC.paths=[["link"]],BC.usage=ye.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var _ae=BC;var QC=class extends Be{constructor(){super(...arguments);this.args=Y.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};QC.paths=[["node"]],QC.usage=ye.Usage({description:"run node with the hook already setup",details:` - This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - - The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. - `,examples:[["Run a Node script","$0 node ./my-script.js"]]});var Xae=QC;var lAe=ie(require("os"));var rAe=ie(require("os"));var V4e="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Kc(t){let e=await Zt.get(V4e,{configuration:t});return Ii(e.toString())}var bC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{let n=await Kc(e);for(let s of Object.entries(n)){let[l,o]=s,a=o,{experimental:c}=a,u=qr(a,["experimental"]);let g=l;c&&(g+=" [experimental]"),i.reportJson(P({name:l,experimental:c},u)),i.reportInfo(null,g)}})).exitCode()}};bC.paths=[["plugin","list"]],bC.usage=ye.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var Zae=bC;var $ae=ie(Or()),vC=class extends Be{constructor(){super(...arguments);this.onlyIfNeeded=Y.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);if(e.get("yarnPath")&&this.onlyIfNeeded)return 0;let r=()=>{if(typeof Zr=="undefined")throw new me("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},i;if(this.version==="self")i=r();else if(this.version==="latest"||this.version==="berry"||this.version==="stable")i=`https://repo.yarnpkg.com/${await eAe(e,"stable")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="canary")i=`https://repo.yarnpkg.com/${await eAe(e,"canary")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="classic")i="https://nightly.yarnpkg.com/latest.js";else if(this.version.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.version))i=`file://${M.resolve(this.version)}`;else if(qt.satisfiesWithPrereleases(this.version,">=2.0.0"))i=`https://repo.yarnpkg.com/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else if(qt.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))i=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`;else if(qt.validRange(this.version))i=`https://repo.yarnpkg.com/${await _4e(e,this.version)}/packages/yarnpkg-cli/bin/yarn.js`;else throw new me(`Invalid version descriptor "${this.version}"`);return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async s=>{let o="file://",a;i.startsWith(o)?(s.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,i,ps.URL)}`),a=await T.readFilePromise(M.toPortablePath(i.slice(o.length)))):(s.reportInfo(z.UNNAMED,`Retrieving ${ue.pretty(e,i,ps.PATH)}`),a=await Zt.get(i,{configuration:e})),await XN(e,null,a,{report:s})})).exitCode()}};vC.paths=[["set","version"]],vC.usage=ye.Usage({description:"lock the Yarn version used by the project",details:"\n This command will download a specific release of Yarn directly from the Yarn GitHub repository, will store it inside your project, and will change the `yarnPath` settings from your project `.yarnrc.yml` file to point to the new file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Download the version used to invoke the command","$0 set version self"]]});var tAe=vC;async function _4e(t,e){let i=(await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(n=>qt.satisfiesWithPrereleases(n,e));if(i.length===0)throw new me(`No matching release found for range ${ue.pretty(t,e,ue.Type.RANGE)}.`);return i[0]}async function eAe(t,e){let r=await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new me(`Tag ${ue.pretty(t,e,ue.Type.RANGE)} not found`);return r.latest[e]}async function XN(t,e,r,{report:i}){var g;e===null&&await T.mktempPromise(async f=>{let h=v.join(f,"yarn.cjs");await T.writeFilePromise(h,r);let{stdout:p}=await hr.execvp(process.execPath,[M.fromPortablePath(h),"--version"],{cwd:f,env:_(P({},process.env),{YARN_IGNORE_PATH:"1"})});if(e=p.trim(),!$ae.default.valid(e))throw new Error(`Invalid semver version. ${ue.pretty(t,"yarn --version",ue.Type.CODE)} returned: -${e}`)});let n=(g=t.projectCwd)!=null?g:t.startingCwd,s=v.resolve(n,".yarn/releases"),o=v.resolve(s,`yarn-${e}.cjs`),a=v.relative(t.startingCwd,o),l=v.relative(n,o),c=t.get("yarnPath"),u=c===null||c.startsWith(`${s}/`);if(i.reportInfo(z.UNNAMED,`Saving the new release in ${ue.pretty(t,a,"magenta")}`),await T.removePromise(v.dirname(o)),await T.mkdirPromise(v.dirname(o),{recursive:!0}),await T.writeFilePromise(o,r,{mode:493}),u){await fe.updateConfiguration(n,{yarnPath:l});let f=await Ze.tryFind(n)||new Ze;e&&de.isTaggedYarnVersion(e)&&(f.packageManager=`yarn@${e}`);let h={};f.exportTo(h);let p=v.join(n,Ze.fileName),d=`${JSON.stringify(h,null,f.indent)} -`;await T.changeFilePromise(p,d,{automaticNewlines:!0})}}var X4e=/^[0-9]+$/;function iAe(t){return X4e.test(t)?`pull/${t}/head`:t}var Z4e=({repository:t,branch:e},r)=>[["git","init",M.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin",iAe(e)],["git","reset","--hard","FETCH_HEAD"]],$4e=({branch:t})=>[["git","fetch","origin",iAe(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],eze=({plugins:t,noMinify:e},r)=>[["yarn","build:cli",...new Array().concat(...t.map(i=>["--plugin",v.resolve(r,i)])),...e?["--no-minify"]:[],"|"]],SC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=Y.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=Y.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,rAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{await $N(this,{configuration:e,report:s,target:i}),s.reportSeparator(),s.reportInfo(z.UNNAMED,"Building a fresh bundle"),s.reportSeparator(),await xC(eze(this,i),{configuration:e,context:this.context,target:i}),s.reportSeparator();let o=v.resolve(i,"packages/yarnpkg-cli/bundles/yarn.js"),a=await T.readFilePromise(o);await XN(e,"sources",a,{report:s}),this.skipPlugins||await tze(this,{project:r,report:s,target:i})})).exitCode()}};SC.paths=[["set","version","from","sources"]],SC.usage=ye.Usage({description:"build Yarn from master",details:` - This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. - - By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. - `,examples:[["Build Yarn from master","$0 set version from sources"]]});var nAe=SC;async function xC(t,{configuration:e,context:r,target:i}){for(let[n,...s]of t){let o=s[s.length-1]==="|";if(o&&s.pop(),o)await hr.pipevp(n,s,{cwd:i,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${ue.pretty(e,` $ ${[n,...s].join(" ")}`,"grey")} -`);try{await hr.execvp(n,s,{cwd:i,strict:!0})}catch(a){throw r.stdout.write(a.stdout||a.stack),a}}}}async function $N(t,{configuration:e,report:r,target:i}){let n=!1;if(!t.force&&T.existsSync(v.join(i,".git"))){r.reportInfo(z.UNNAMED,"Fetching the latest commits"),r.reportSeparator();try{await xC($4e(t),{configuration:e,context:t.context,target:i}),n=!0}catch(s){r.reportSeparator(),r.reportWarning(z.UNNAMED,"Repository update failed; we'll try to regenerate it")}}n||(r.reportInfo(z.UNNAMED,"Cloning the remote repository"),r.reportSeparator(),await T.removePromise(i),await T.mkdirPromise(i,{recursive:!0}),await xC(Z4e(t,i),{configuration:e,context:t.context,target:i}))}async function tze(t,{project:e,report:r,target:i}){let n=await Kc(e.configuration),s=new Set(Object.keys(n));for(let o of e.configuration.plugins.keys())!s.has(o)||await ZN(o,t,{project:e,report:r,target:i})}var sAe=ie(Or()),oAe=ie(require("url")),aAe=ie(require("vm"));var kC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,stdout:this.context.stdout},async i=>{let{project:n}=await Ke.find(e,this.context.cwd),s,o;if(this.name.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.name)){let a=v.resolve(this.context.cwd,M.toPortablePath(this.name));i.reportInfo(z.UNNAMED,`Reading ${ue.pretty(e,a,ue.Type.PATH)}`),s=v.relative(n.cwd,a),o=await T.readFilePromise(a)}else{let a;if(this.name.match(/^https?:/)){try{new oAe.URL(this.name)}catch{throw new nt(z.INVALID_PLUGIN_REFERENCE,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}s=this.name,a=this.name}else{let l=S.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(l.reference!=="unknown"&&!sAe.default.valid(l.reference))throw new nt(z.UNNAMED,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let c=S.stringifyIdent(l),u=await Kc(e);if(!Object.prototype.hasOwnProperty.call(u,c))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${c}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);s=c,a=u[c].url,l.reference!=="unknown"?a=a.replace(/\/master\//,`/${c}/${l.reference}/`):Zr!==null&&(a=a.replace(/\/master\//,`/@yarnpkg/cli/${Zr}/`))}i.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,a,"green")}`),o=await Zt.get(a,{configuration:e})}await eL(s,o,{project:n,report:i})})).exitCode()}};kC.paths=[["plugin","import"]],kC.usage=ye.Usage({category:"Plugin-related commands",description:"download a plugin",details:` - This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. - - Three types of plugin references are accepted: - - - If the plugin is stored within the Yarn repository, it can be referenced by name. - - Third-party plugins can be referenced directly through their public urls. - - Local plugins can be referenced by their path on the disk. - - Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). - `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});var AAe=kC;async function eL(t,e,{project:r,report:i}){let{configuration:n}=r,s={},o={exports:s};(0,aAe.runInNewContext)(e.toString(),{module:o,exports:s});let a=o.exports.name,l=`.yarn/plugins/${a}.cjs`,c=v.resolve(r.cwd,l);i.reportInfo(z.UNNAMED,`Saving the new plugin in ${ue.pretty(n,l,"magenta")}`),await T.mkdirPromise(v.dirname(c),{recursive:!0}),await T.writeFilePromise(c,e);let u={path:l,spec:t};await fe.updateConfiguration(r.cwd,g=>{let f=[],h=!1;for(let p of g.plugins||[]){let d=typeof p!="string"?p.path:p,m=v.resolve(r.cwd,M.toPortablePath(d)),{name:I}=de.dynamicRequire(m);I!==a?f.push(p):(f.push(u),h=!0)}return h||f.push(u),_(P({},g),{plugins:f})})}var rze=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],PC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,lAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let{project:s}=await Ke.find(e,this.context.cwd),o=S.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),a=S.stringifyIdent(o),l=await Kc(e);if(!Object.prototype.hasOwnProperty.call(l,a))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${a}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let c=a;await $N(this,{configuration:e,report:n,target:r}),await ZN(c,this,{project:s,report:n,target:r})})).exitCode()}};PC.paths=[["plugin","import","from","sources"]],PC.usage=ye.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` - This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. - - The plugins can be referenced by their short name if sourced from the official Yarn repository. - `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});var cAe=PC;async function ZN(t,{context:e,noMinify:r},{project:i,report:n,target:s}){let o=t.replace(/@yarnpkg\//,""),{configuration:a}=i;n.reportSeparator(),n.reportInfo(z.UNNAMED,`Building a fresh ${o}`),n.reportSeparator(),await xC(rze({pluginName:o,noMinify:r},s),{configuration:a,context:e,target:s}),n.reportSeparator();let l=v.resolve(s,`packages/${o}/bundles/${t}.js`),c=await T.readFilePromise(l);await eL(t,c,{project:i,report:n})}var DC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=this.name,o=S.parseIdent(s);if(!e.plugins.has(s))throw new me(`${S.prettyIdent(e,o)} isn't referenced by the current configuration`);let a=`.yarn/plugins/${s}.cjs`,l=v.resolve(r.cwd,a);T.existsSync(l)&&(n.reportInfo(z.UNNAMED,`Removing ${ue.pretty(e,a,ue.Type.PATH)}...`),await T.removePromise(l)),n.reportInfo(z.UNNAMED,"Updating the configuration..."),await fe.updateConfiguration(r.cwd,c=>{if(!Array.isArray(c.plugins))return c;let u=c.plugins.filter(g=>g.path!==a);return c.plugins.length===u.length?c:_(P({},c),{plugins:u})})})).exitCode()}};DC.paths=[["plugin","remove"]],DC.usage=ye.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` - This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. - - **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. - `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});var uAe=DC;var RC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{for(let n of e.plugins.keys()){let s=this.context.plugins.plugins.has(n),o=n;s&&(o+=" [builtin]"),i.reportJson({name:n,builtin:s}),i.reportInfo(null,`${o}`)}})).exitCode()}};RC.paths=[["plugin","runtime"]],RC.usage=ye.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` - This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. - `,examples:[["List the currently active plugins","$0 plugin runtime"]]});var gAe=RC;var FC=class extends Be{constructor(){super(...arguments);this.idents=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=new Set;for(let a of this.idents)s.add(S.parseIdent(a).identHash);if(await r.restoreInstallState({restoreResolutions:!1}),await r.resolveEverything({cache:n,report:new ei}),s.size>0)for(let a of r.storedPackages.values())s.has(a.identHash)&&r.storedBuildState.delete(a.locatorHash);else r.storedBuildState.clear();return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async a=>{await r.install({cache:n,report:a})})).exitCode()}};FC.paths=[["rebuild"]],FC.usage=ye.Usage({description:"rebuild the project's native packages",details:` - This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. - - Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). - - By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. - `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});var fAe=FC;var tL=ie(Nn());Ss();var NC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=this.all?r.workspaces:[i],o=[vr.REGULAR,vr.DEVELOPMENT,vr.PEER],a=[],l=!1,c=[];for(let h of this.patterns){let p=!1,d=S.parseIdent(h);for(let m of s){let I=[...m.manifest.peerDependenciesMeta.keys()];for(let B of(0,tL.default)(I,h))m.manifest.peerDependenciesMeta.delete(B),l=!0,p=!0;for(let B of o){let b=m.manifest.getForScope(B),R=[...b.values()].map(H=>S.stringifyIdent(H));for(let H of(0,tL.default)(R,S.stringifyIdent(d))){let{identHash:L}=S.parseIdent(H),K=b.get(L);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");m.manifest[B].delete(L),c.push([m,B,K]),l=!0,p=!0}}}p||a.push(h)}let u=a.length>1?"Patterns":"Pattern",g=a.length>1?"don't":"doesn't",f=this.all?"any":"this";if(a.length>0)throw new me(`${u} ${ue.prettyList(e,a,ps.CODE)} ${g} match any packages referenced by ${f} workspace`);return l?(await e.triggerMultipleHooks(p=>p.afterWorkspaceDependencyRemoval,c),(await Fe.start({configuration:e,stdout:this.context.stdout},async p=>{await r.install({cache:n,report:p,mode:this.mode})})).exitCode()):0}};NC.paths=[["remove"]],NC.usage=ye.Usage({description:"remove dependencies from the project",details:` - This command will remove the packages matching the specified patterns from the current workspace. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - - This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. - `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});var hAe=NC;var pAe=ie(require("util")),z0=class extends Be{async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{let o=i.manifest.scripts,a=de.sortMap(o.keys(),u=>u),l={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2},c=a.reduce((u,g)=>Math.max(u,g.length),0);for(let[u,g]of o.entries())s.reportInfo(null,`${u.padEnd(c," ")} ${(0,pAe.inspect)(g,l)}`)})).exitCode()}};z0.paths=[["run"]];var dAe=z0;var LC=class extends Be{constructor(){super(...arguments);this.inspect=Y.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=Y.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=Y.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=Y.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.silent=Y.Boolean("--silent",{hidden:!0});this.scriptName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i,locator:n}=await Ke.find(e,this.context.cwd);await r.restoreInstallState();let s=this.topLevel?r.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await Kt.hasPackageScript(s,this.scriptName,{project:r}))return await Kt.executePackageScript(s,this.scriptName,this.args,{project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let o=await Kt.getPackageAccessibleBinaries(s,{project:r});if(o.get(this.scriptName)){let l=[];return this.inspect&&(typeof this.inspect=="string"?l.push(`--inspect=${this.inspect}`):l.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?l.push(`--inspect-brk=${this.inspectBrk}`):l.push("--inspect-brk")),await Kt.executePackageAccessibleBinary(s,this.scriptName,this.args,{cwd:this.context.cwd,project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:l,packageAccessibleBinaries:o})}if(!this.topLevel&&!this.binariesOnly&&i&&this.scriptName.includes(":")){let c=(await Promise.all(r.workspaces.map(async u=>u.manifest.scripts.has(this.scriptName)?u:null))).filter(u=>u!==null);if(c.length===1)return await Kt.executeWorkspaceScript(c[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}).`);{if(this.scriptName==="global")throw new me("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let l=[this.scriptName].concat(this.args);for(let[c,u]of Yg)for(let g of u)if(l.length>=g.length&&JSON.stringify(l.slice(0,g.length))===JSON.stringify(g))throw new me(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${c} plugin. You can install it with "yarn plugin import ${c}".`);throw new me(`Couldn't find a script named "${this.scriptName}".`)}}};LC.paths=[["run"]],LC.usage=ye.Usage({description:"run a script defined in the package.json",details:` - This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: - - - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. - - - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. - - - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. - - Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). - `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});var CAe=LC;var TC=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=Y.String();this.resolution=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(await r.restoreInstallState({restoreResolutions:!1}),!i)throw new rt(r.cwd,this.context.cwd);let s=S.parseDescriptor(this.descriptor,!0),o=S.makeDescriptor(s,this.resolution);return r.storedDescriptors.set(s.descriptorHash,s),r.storedDescriptors.set(o.descriptorHash,o),r.resolutionAliases.set(s.descriptorHash,o.descriptorHash),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};TC.paths=[["set","resolution"]],TC.usage=ye.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});var mAe=TC;var EAe=ie(Nn()),MC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=r.topLevelWorkspace,o=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:l,reference:c}of s.manifest.resolutions)c.startsWith("portal:")&&o.add(l.descriptor.fullName);if(this.leadingArguments.length>0)for(let l of this.leadingArguments){let c=v.resolve(this.context.cwd,M.toPortablePath(l));if(de.isPathLike(l)){let u=await fe.find(c,this.context.plugins,{useRc:!1,strict:!1}),{project:g,workspace:f}=await Ke.find(u,c);if(!f)throw new rt(g.cwd,c);if(this.all){for(let h of g.workspaces)h.manifest.name&&o.add(S.stringifyIdent(h.locator));if(o.size===0)throw new me("No workspace found to be unlinked in the target project")}else{if(!f.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be unlinked");o.add(S.stringifyIdent(f.locator))}}else{let u=[...s.manifest.resolutions.map(({pattern:g})=>g.descriptor.fullName)];for(let g of(0,EAe.default)(u,l))o.add(g)}}return s.manifest.resolutions=s.manifest.resolutions.filter(({pattern:l})=>!o.has(l.descriptor.fullName)),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};MC.paths=[["unlink"]],MC.usage=ye.Usage({description:"disconnect the local project from another one",details:` - This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. - `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});var IAe=MC;var yAe=ie(aC()),rL=ie(Nn());Ss();var uf=class extends Be{constructor(){super(...arguments);this.interactive=Y.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=[...r.storedDescriptors.values()],o=s.map(u=>S.stringifyIdent(u)),a=new Set;for(let u of this.patterns){if(S.parseDescriptor(u).range!=="unknown")throw new me("Ranges aren't allowed when using --recursive");for(let g of(0,rL.default)(o,u)){let f=S.parseIdent(g);a.add(f.identHash)}}let l=s.filter(u=>a.has(u.identHash));for(let u of l)r.storedDescriptors.delete(u.descriptorHash),r.storedResolutions.delete(u.descriptorHash);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{await r.install({cache:n,report:u})})).exitCode()}async executeUpClassic(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=s?[Fr.KEEP,Fr.REUSE,Fr.PROJECT,Fr.LATEST]:[Fr.PROJECT,Fr.LATEST],l=[],c=[];for(let m of this.patterns){let I=!1,B=S.parseDescriptor(m);for(let b of r.workspaces)for(let R of[vr.REGULAR,vr.DEVELOPMENT]){let L=[...b.manifest.getForScope(R).values()].map(K=>S.stringifyIdent(K));for(let K of(0,rL.default)(L,S.stringifyIdent(B))){let J=S.parseIdent(K),ne=b.manifest[R].get(J.identHash);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");let q=S.makeDescriptor(J,B.range);l.push(Promise.resolve().then(async()=>[b,R,ne,await lC(q,{project:r,workspace:b,cache:n,target:R,modifier:o,strategies:a})])),I=!0}}I||c.push(m)}if(c.length>1)throw new me(`Patterns ${ue.prettyList(e,c,ps.CODE)} don't match any packages referenced by any workspace`);if(c.length>0)throw new me(`Pattern ${ue.prettyList(e,c,ps.CODE)} doesn't match any packages referenced by any workspace`);let u=await Promise.all(l),g=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[,,I,{suggestions:B,rejections:b}]of u){let R=B.filter(H=>H.descriptor!==null);if(R.length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");let L=this.cli.error(H);r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range - -${L}`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range (note: network resolution has been disabled) - -${L}`)}else R.length>1&&!s&&m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(g.hasErrors())return g.exitCode();let f=!1,h=[];for(let[m,I,,{suggestions:B}]of u){let b,R=B.filter(J=>J.descriptor!==null),H=R[0].descriptor,L=R.every(J=>S.areDescriptorsEqual(J.descriptor,H));R.length===1||L?b=H:(f=!0,{answer:b}=await(0,yAe.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${S.prettyWorkspace(e,m)} \u276F ${I}?`,choices:B.map(({descriptor:J,name:ne,reason:q})=>J?{name:ne,hint:q,descriptor:J}:{name:ne,hint:q,disabled:!0}),onCancel:()=>process.exit(130),result(J){return this.find(J,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let K=m.manifest[I].get(b.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: This descriptor should have a matching entry");if(K.descriptorHash!==b.descriptorHash)m.manifest[I].set(b.identHash,b),h.push([m,I,K,b]);else{let J=e.makeResolver(),ne={project:r,resolver:J},q=J.bindDescriptor(K,m.anchoredLocator,ne);r.forgetResolution(q)}}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),f&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,stdout:this.context.stdout},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};uf.paths=[["up"]],uf.usage=ye.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),uf.schema=[pv("recursive",Bl.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];var wAe=uf;var OC=class extends Be{constructor(){super(...arguments);this.recursive=Y.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=Y.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=S.parseIdent(this.package).identHash,s=this.recursive?nze(r,n,{configuration:e,peers:this.peers}):ize(r,n,{configuration:e,peers:this.peers});Hs.emitTree(s,{configuration:e,stdout:this.context.stdout,json:this.json,separators:1})}};OC.paths=[["why"]],OC.usage=ye.Usage({description:"display the reason why a package is needed",details:` - This command prints the exact reasons why a package appears in the dependency tree. - - If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. - `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});var BAe=OC;function ize(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.storedPackages.values(),a=>S.stringifyLocator(a)),s={},o={children:s};for(let a of n){let l={},c=null;for(let u of a.dependencies.values()){if(!i&&a.peerDependencies.has(u.identHash))continue;let g=t.storedResolutions.get(u.descriptorHash);if(!g)throw new Error("Assertion failed: The resolution should have been registered");let f=t.storedPackages.get(g);if(!f)throw new Error("Assertion failed: The package should have been registered");if(f.identHash!==e)continue;if(c===null){let p=S.stringifyLocator(a);s[p]={value:[a,ue.Type.LOCATOR],children:l}}let h=S.stringifyLocator(f);l[h]={value:[{descriptor:u,locator:f},ue.Type.DEPENDENT]}}}return o}function nze(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.workspaces,f=>S.stringifyLocator(f.anchoredLocator)),s=new Set,o=new Set,a=f=>{if(s.has(f.locatorHash))return o.has(f.locatorHash);if(s.add(f.locatorHash),f.identHash===e)return o.add(f.locatorHash),!0;let h=!1;f.identHash===e&&(h=!0);for(let p of f.dependencies.values()){if(!i&&f.peerDependencies.has(p.identHash))continue;let d=t.storedResolutions.get(p.descriptorHash);if(!d)throw new Error("Assertion failed: The resolution should have been registered");let m=t.storedPackages.get(d);if(!m)throw new Error("Assertion failed: The package should have been registered");a(m)&&(h=!0)}return h&&o.add(f.locatorHash),h};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");a(h)}let l=new Set,c={},u={children:c},g=(f,h,p)=>{if(!o.has(f.locatorHash))return;let d=p!==null?ue.tuple(ue.Type.DEPENDENT,{locator:f,descriptor:p}):ue.tuple(ue.Type.LOCATOR,f),m={},I={value:d,children:m},B=S.stringifyLocator(f);if(h[B]=I,!l.has(f.locatorHash)&&(l.add(f.locatorHash),!(p!==null&&t.tryWorkspaceByLocator(f))))for(let b of f.dependencies.values()){if(!i&&f.peerDependencies.has(b.identHash))continue;let R=t.storedResolutions.get(b.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let H=t.storedPackages.get(R);if(!H)throw new Error("Assertion failed: The package should have been registered");g(H,m,b)}};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");g(h,c,null)}return u}var fL={};it(fL,{default:()=>wze,gitUtils:()=>Uc});var Uc={};it(Uc,{TreeishProtocols:()=>vn,clone:()=>cL,fetchBase:()=>jAe,fetchChangedFiles:()=>YAe,fetchChangedWorkspaces:()=>Ize,fetchRoot:()=>GAe,isGitUrl:()=>ff,lsRemote:()=>HAe,normalizeLocator:()=>AL,normalizeRepoUrl:()=>KC,resolveUrl:()=>lL,splitRepoUrl:()=>UC});var oL=ie(OAe()),gf=ie(require("querystring")),aL=ie(Or()),KAe=ie(require("url"));function UAe(){return _(P({},process.env),{GIT_SSH_COMMAND:"ssh -o BatchMode=yes"})}var Eze=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],vn;(function(n){n.Commit="commit",n.Head="head",n.Tag="tag",n.Semver="semver"})(vn||(vn={}));function ff(t){return t?Eze.some(e=>!!t.match(e)):!1}function UC(t){t=KC(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:vn.Head,request:"HEAD"},extra:{}};let r=t.slice(0,e),i=t.slice(e+1);if(i.match(/^[a-z]+=/)){let n=gf.default.parse(i);for(let[l,c]of Object.entries(n))if(typeof c!="string")throw new Error(`Assertion failed: The ${l} parameter must be a literal string`);let s=Object.values(vn).find(l=>Object.prototype.hasOwnProperty.call(n,l)),o,a;typeof s!="undefined"?(o=s,a=n[s]):(o=vn.Head,a="HEAD");for(let l of Object.values(vn))delete n[l];return{repo:r,treeish:{protocol:o,request:a},extra:n}}else{let n=i.indexOf(":"),s,o;return n===-1?(s=null,o=i):(s=i.slice(0,n),o=i.slice(n+1)),{repo:r,treeish:{protocol:s,request:o},extra:{}}}}function KC(t,{git:e=!1}={}){var r;if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){t=t.replace(/^git\+([^:]+):/,"$1:");let i;try{i=KAe.default.parse(t)}catch{i=null}i&&i.protocol==="ssh:"&&((r=i.path)==null?void 0:r.startsWith("/:"))&&(t=t.replace(/^ssh:\/\//,""))}return t}function AL(t){return S.makeLocator(t,KC(t.reference))}async function HAe(t,e){let r=KC(t,{git:!0});if(!Zt.getNetworkSettings(`https://${(0,oL.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Error(`Request to '${r}' has been blocked because of your configuration settings`);let n;try{n=await hr.execvp("git",["ls-remote",r],{cwd:e.startingCwd,env:UAe(),strict:!0})}catch(l){throw l.message=`Listing the refs for ${t} failed`,l}let s=new Map,o=/^([a-f0-9]{40})\t([^\n]+)/gm,a;for(;(a=o.exec(n.stdout))!==null;)s.set(a[2],a[1]);return s}async function lL(t,e){let{repo:r,treeish:{protocol:i,request:n},extra:s}=UC(t),o=await HAe(r,e),a=(c,u)=>{switch(c){case vn.Commit:{if(!u.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return gf.default.stringify(_(P({},s),{commit:u}))}case vn.Head:{let g=o.get(u==="HEAD"?u:`refs/heads/${u}`);if(typeof g=="undefined")throw new Error(`Unknown head ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Tag:{let g=o.get(`refs/tags/${u}`);if(typeof g=="undefined")throw new Error(`Unknown tag ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Semver:{let g=qt.validRange(u);if(!g)throw new Error(`Invalid range ("${u}")`);let f=new Map([...o.entries()].filter(([p])=>p.startsWith("refs/tags/")).map(([p,d])=>[aL.default.parse(p.slice(10)),d]).filter(p=>p[0]!==null)),h=aL.default.maxSatisfying([...f.keys()],g);if(h===null)throw new Error(`No matching range ("${u}")`);return gf.default.stringify(_(P({},s),{commit:f.get(h)}))}case null:{let g;if((g=l(vn.Commit,u))!==null||(g=l(vn.Tag,u))!==null||(g=l(vn.Head,u))!==null)return g;throw u.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${c}")`)}},l=(c,u)=>{try{return a(c,u)}catch(g){return null}};return`${r}#${a(i,n)}`}async function cL(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:i,request:n}}=UC(t);if(i!=="commit")throw new Error("Invalid treeish protocol when cloning");let s=KC(r,{git:!0});if(Zt.getNetworkSettings(`https://${(0,oL.default)(s).resource}`,{configuration:e}).enableNetwork===!1)throw new Error(`Request to '${s}' has been blocked because of your configuration settings`);let o=await T.mktempPromise(),a={cwd:o,env:UAe(),strict:!0};try{await hr.execvp("git",["clone","-c core.autocrlf=false",s,M.fromPortablePath(o)],a),await hr.execvp("git",["checkout",`${n}`],a)}catch(l){throw l.message=`Repository clone failed: ${l.message}`,l}return o})}async function GAe(t){let e=null,r,i=t;do r=i,await T.existsPromise(v.join(r,".git"))&&(e=r),i=v.dirname(r);while(e===null&&i!==r);return e}async function jAe(t,{baseRefs:e}){if(e.length===0)throw new me("Can't run this command with zero base refs specified.");let r=[];for(let a of e){let{code:l}=await hr.execvp("git",["merge-base",a,"HEAD"],{cwd:t});l===0&&r.push(a)}if(r.length===0)throw new me(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:i}=await hr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),n=i.trim(),{stdout:s}=await hr.execvp("git",["show","--quiet","--pretty=format:%s",n],{cwd:t,strict:!0}),o=s.trim();return{hash:n,title:o}}async function YAe(t,{base:e,project:r}){let i=de.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:n}=await hr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),s=n.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),{stdout:o}=await hr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),a=o.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),l=[...new Set([...s,...a].sort())];return i?l.filter(c=>!v.relative(r.cwd,c).match(i)):l}async function Ize({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new me("This command can only be run from within a Yarn project");let r=[v.resolve(e.cwd,e.configuration.get("cacheFolder")),v.resolve(e.cwd,e.configuration.get("installStatePath")),v.resolve(e.cwd,e.configuration.get("lockfileFilename")),v.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(o=>o.populateYarnPaths,e,o=>{o!=null&&r.push(o)});let i=await GAe(e.configuration.projectCwd);if(i==null)throw new me("This command can only be run on Git repositories");let n=await jAe(i,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),s=await YAe(i,{base:n.hash,project:e});return new Set(de.mapAndFilter(s,o=>{let a=e.tryWorkspaceByFilePath(o);return a===null?de.mapAndFilter.skip:r.some(l=>o.startsWith(l))?de.mapAndFilter.skip:a}))}var uL=class{supports(e,r){return ff(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,n=AL(e),s=new Map(r.checksums);s.set(n.locatorHash,i);let o=_(P({},r),{checksums:s}),a=await this.downloadHosted(n,o);if(a!==null)return a;let[l,c,u]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(n,o),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:l,releaseFs:c,prefixPath:S.getIdentVendorPath(e),checksum:u}}async downloadHosted(e,r){return r.project.configuration.reduceHook(i=>i.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let i=await cL(e.reference,r.project.configuration),n=UC(e.reference),s=v.join(i,"package.tgz");await Kt.prepareExternalProject(i,s,{configuration:r.project.configuration,report:r.report,workspace:n.extra.workspace,locator:e});let o=await T.readFilePromise(s);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}))}};var gL=class{supportsDescriptor(e,r){return ff(e.range)}supportsLocator(e,r){return ff(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=await lL(e.range,i.project.configuration);return[S.makeLocator(e,n)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var yze={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:ge.STRING,isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:ge.STRING,default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:ge.NUMBER,default:2}},fetchers:[uL],resolvers:[gL]};var wze=yze;var HC=class extends Be{constructor(){super(...arguments);this.since=Y.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async n=>{let s=this.since?await Uc.fetchChangedWorkspaces({ref:this.since,project:r}):r.workspaces,o=new Set(s);if(this.recursive)for(let a of[...s].map(l=>l.getRecursiveWorkspaceDependents()))for(let l of a)o.add(l);for(let a of o){let{manifest:l}=a,c;if(this.verbose){let u=new Set,g=new Set;for(let f of Ze.hardDependencies)for(let[h,p]of l.getForScope(f)){let d=r.tryWorkspaceByDescriptor(p);d===null?r.workspacesByIdent.has(h)&&g.add(p):u.add(d)}c={workspaceDependencies:Array.from(u).map(f=>f.relativeCwd),mismatchedWorkspaceDependencies:Array.from(g).map(f=>S.stringifyDescriptor(f))}}n.reportInfo(null,`${a.relativeCwd}`),n.reportJson(P({location:a.relativeCwd,name:l.name?S.stringifyIdent(l.name):null},c))}})).exitCode()}};HC.paths=[["workspaces","list"]],HC.usage=ye.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});var qAe=HC;var GC=class extends Be{constructor(){super(...arguments);this.workspaceName=Y.String();this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=r.workspaces,s=new Map(n.map(a=>{let l=S.convertToIdent(a.locator);return[S.stringifyIdent(l),a]})),o=s.get(this.workspaceName);if(o===void 0){let a=Array.from(s.keys()).sort();throw new me(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: - - ${a.join(` - - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:o.cwd})}};GC.paths=[["workspace"]],GC.usage=ye.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` - This command will run a given sub-command on a single workspace. - `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var JAe=GC;var Bze={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:ge.BOOLEAN,default:WAe.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:ge.STRING,values:["^","~",""],default:Lo.CARET}},commands:[soe,aoe,wae,Nae,mAe,nAe,tAe,qAe,Uae,Hae,Gae,jae,ioe,noe,Lae,Mae,Yae,qae,Wae,zae,_ae,IAe,Xae,cAe,AAe,uAe,Zae,gAe,fAe,hAe,dAe,CAe,wAe,BAe,JAe]},Qze=Bze;var mL={};it(mL,{default:()=>vze});var Me={optional:!0},zAe=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Me}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Me,["postcss-jsx"]:Me,["postcss-less"]:Me,["postcss-markdown"]:Me,["postcss-scss"]:Me}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Me}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Me}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@*",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Me,"vue-template-compiler":Me}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Me,"utf-8-validate":Me}}],["react-portal@*",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@*",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@*",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me,"vuetify-loader":Me}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Me}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Me}}],["consolidate@*",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Me,tinyliquid:Me,"liquid-node":Me,jade:Me,"then-jade":Me,dust:Me,"dustjs-helpers":Me,"dustjs-linkedin":Me,swig:Me,"swig-templates":Me,"razor-tmpl":Me,atpl:Me,liquor:Me,twig:Me,ejs:Me,eco:Me,jazz:Me,jqtpl:Me,hamljs:Me,hamlet:Me,whiskers:Me,"haml-coffee":Me,"hogan.js":Me,templayed:Me,handlebars:Me,underscore:Me,lodash:Me,pug:Me,"then-pug":Me,qejs:Me,walrus:Me,mustache:Me,just:Me,ect:Me,mote:Me,toffee:Me,dot:Me,"bracket-template":Me,ractive:Me,nunjucks:Me,htmling:Me,"babel-core":Me,plates:Me,"react-dom":Me,react:Me,"arc-templates":Me,vash:Me,slm:Me,marko:Me,teacup:Me,"coffee-script":Me,squirrelly:Me,twing:Me}}],["vue-loader@<=16.3.1",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"}}],["scss-parser@*",{dependencies:{lodash:"^4.17.21"}}],["query-ast@*",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@*",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@*",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@*",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@*",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Me}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Me}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Me,"webpack-command":Me}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Me}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Me}}]];var pL;function VAe(){return typeof pL=="undefined"&&(pL=require("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),pL}var dL;function _Ae(){return typeof dL=="undefined"&&(dL=require("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),dL}var CL;function XAe(){return typeof CL=="undefined"&&(CL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),CL}var ZAe=new Map([[S.makeIdent(null,"fsevents").identHash,VAe],[S.makeIdent(null,"resolve").identHash,_Ae],[S.makeIdent(null,"typescript").identHash,XAe]]),bze={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,i]of zAe)e(S.parseDescriptor(r,!0),i)},getBuiltinPatch:async(t,e)=>{var s;let r="compat/";if(!e.startsWith(r))return;let i=S.parseIdent(e.slice(r.length)),n=(s=ZAe.get(i.identHash))==null?void 0:s();return typeof n!="undefined"?n:null},reduceDependency:async(t,e,r,i)=>typeof ZAe.get(t.identHash)=="undefined"?t:S.makeDescriptor(t,S.makeRange({protocol:"patch:",source:S.stringifyDescriptor(t),selector:`~builtin`,params:null}))}},vze=bze;var EL={};it(EL,{default:()=>xze});var V0=class extends Be{constructor(){super(...arguments);this.pkg=Y.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){let e=[];this.pkg&&e.push("--package",this.pkg),this.quiet&&e.push("--quiet");let r=S.parseIdent(this.command),i=S.makeIdent(r.scope,`create-${r.name}`);return this.cli.run(["dlx",...e,S.stringifyIdent(i),...this.args])}};V0.paths=[["create"]];var $Ae=V0;var jC=class extends Be{constructor(){super(...arguments);this.packages=Y.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){return fe.telemetry=null,await T.mktempPromise(async e=>{var p;let r=v.join(e,`dlx-${process.pid}`);await T.mkdirPromise(r),await T.writeFilePromise(v.join(r,"package.json"),`{} -`),await T.writeFilePromise(v.join(r,"yarn.lock"),"");let i=v.join(r,".yarnrc.yml"),n=await fe.findProjectCwd(this.context.cwd,wt.lockfile),s=!(await fe.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),o=n!==null?v.join(n,".yarnrc.yml"):null;o!==null&&T.existsSync(o)?(await T.copyFilePromise(o,i),await fe.updateConfiguration(r,d=>{let m=_(P({},d),{enableGlobalCache:s,enableTelemetry:!1});return Array.isArray(d.plugins)&&(m.plugins=d.plugins.map(I=>{let B=typeof I=="string"?I:I.path,b=M.isAbsolute(B)?B:M.resolve(M.fromPortablePath(n),B);return typeof I=="string"?b:{path:b,spec:I.spec}})),m})):await T.writeFilePromise(i,`enableGlobalCache: ${s} -enableTelemetry: false -`);let a=(p=this.packages)!=null?p:[this.command],l=S.parseDescriptor(this.command).name,c=await this.cli.run(["add","--",...a],{cwd:r,quiet:this.quiet});if(c!==0)return c;this.quiet||this.context.stdout.write(` -`);let u=await fe.find(r,this.context.plugins),{project:g,workspace:f}=await Ke.find(u,r);if(f===null)throw new rt(g.cwd,r);await g.restoreInstallState();let h=await Kt.getWorkspaceAccessibleBinaries(f);return h.has(l)===!1&&h.size===1&&typeof this.packages=="undefined"&&(l=Array.from(h)[0][0]),await Kt.executeWorkspaceAccessibleBinary(f,l,this.args,{packageAccessibleBinaries:h,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};jC.paths=[["dlx"]],jC.usage=ye.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var ele=jC;var Sze={commands:[$Ae,ele]},xze=Sze;var xL={};it(xL,{default:()=>Dze,fileUtils:()=>IL});var hf=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,YC=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Nr="file:";var IL={};it(IL,{makeArchiveFromLocator:()=>_0,makeBufferFromLocator:()=>BL,makeLocator:()=>wL,makeSpec:()=>tle,parseSpec:()=>yL});function yL(t){let{params:e,selector:r}=S.parseRange(t),i=M.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?S.parseLocator(e.locator):null,path:i}}function tle({parentLocator:t,path:e,folderHash:r,protocol:i}){let n=t!==null?{locator:S.stringifyLocator(t)}:{},s=typeof r!="undefined"?{hash:r}:{};return S.makeRange({protocol:i,source:e,selector:e,params:P(P({},s),n)})}function wL(t,{parentLocator:e,path:r,folderHash:i,protocol:n}){return S.makeLocator(t,tle({parentLocator:e,path:r,folderHash:i,protocol:n}))}async function _0(t,{protocol:e,fetchOptions:r,inMemory:i=!1}){let{parentLocator:n,path:s}=S.parseFileStyleRange(t.reference,{protocol:e}),o=v.isAbsolute(s)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(n,r),a=o.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,o.localPath)}:o;o!==a&&o.releaseFs&&o.releaseFs();let l=a.packageFs,c=v.join(a.prefixPath,s);return await de.releaseAfterUseAsync(async()=>await Ai.makeArchiveFromDirectory(c,{baseFs:l,prefixPath:S.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:i}),a.releaseFs)}async function BL(t,{protocol:e,fetchOptions:r}){return(await _0(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var QL=class{supports(e,r){return!!e.reference.startsWith(Nr)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async fetchFromDisk(e,r){return _0(e,{protocol:Nr,fetchOptions:r})}};var kze=2,bL=class{supportsDescriptor(e,r){return e.range.match(hf)?!0:!!e.range.startsWith(Nr)}supportsLocator(e,r){return!!e.reference.startsWith(Nr)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:n,parentLocator:s}=yL(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let o=await BL(S.makeLocator(e,S.makeRange({protocol:Nr,source:n,selector:n,params:{locator:S.stringifyLocator(s)}})),{protocol:Nr,fetchOptions:i.fetchOptions}),a=mn.makeHash(`${kze}`,o).slice(0,6);return[wL(e,{parentLocator:s,path:n,folderHash:a,protocol:Nr})]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var vL=class{supports(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromDisk(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath)}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.join(o.prefixPath,n),c=await a.readFilePromise(l);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(c,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}),o.releaseFs)}};var SL=class{supportsDescriptor(e,r){return YC.test(e.range)?!!(e.range.startsWith(Nr)||hf.test(e.range)):!1}supportsLocator(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range;return n.startsWith(Nr)&&(n=n.slice(Nr.length)),[S.makeLocator(e,`${Nr}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var Pze={fetchers:[vL,QL],resolvers:[SL,bL]},Dze=Pze;var PL={};it(PL,{default:()=>Nze});var rle=ie(require("querystring")),ile=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function nle(t){return t?ile.some(e=>!!t.match(e)):!1}function sle(t){let e;for(let a of ile)if(e=t.match(a),e)break;if(!e)throw new Error(Rze(t));let[,r,i,n,s="master"]=e,{commit:o}=rle.default.parse(s);return s=o||s.replace(/[^:]*:/,""),{auth:r,username:i,reponame:n,treeish:s}}function Rze(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var kL=class{supports(e,r){return!!nle(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await T.mktempPromise(async n=>{let s=new Ft(n);await Ai.extractArchiveTo(i,s,{stripComponents:1});let o=Uc.splitRepoUrl(e.reference),a=v.join(n,"package.tgz");await Kt.prepareExternalProject(n,a,{configuration:r.project.configuration,report:r.report,workspace:o.extra.workspace,locator:e});let l=await T.readFilePromise(a);return await Ai.convertToZip(l,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:i,username:n,reponame:s,treeish:o}=sle(e.reference);return`https://${i?`${i}@`:""}github.com/${n}/${s}/archive/${o}.tar.gz`}};var Fze={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let i=new kL;if(!i.supports(e,r))return null;try{return await i.fetch(e,r)}catch(n){return null}}}},Nze=Fze;var FL={};it(FL,{default:()=>Tze});var qC=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,JC=/^https?:/;var DL=class{supports(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(e.reference,{configuration:r.project.configuration});return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var RL=class{supportsDescriptor(e,r){return qC.test(e.range)?!!JC.test(e.range):!1}supportsLocator(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[S.convertDescriptorToLocator(e)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var Lze={fetchers:[DL],resolvers:[RL]},Tze=Lze;var ML={};it(ML,{default:()=>M5e});var Rle=ie(Dle()),TL=ie(require("util")),WC=class extends Be{constructor(){super(...arguments);this.private=Y.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=Y.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=Y.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.usev2=Y.Boolean("-2",!1,{hidden:!0});this.yes=Y.Boolean("-y,--yes",{hidden:!0});this.assumeFreshProject=Y.Boolean("--assume-fresh-project",!1,{hidden:!0})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return r!==null?await this.executeProxy(e,r):await this.executeRegular(e)}async executeProxy(e,r){if(e.projectCwd!==null&&e.projectCwd!==this.context.cwd)throw new me("Cannot use the --install flag from within a project subdirectory");T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=v.join(this.context.cwd,e.get("lockfileFilename"));T.existsSync(i)||await T.writeFilePromise(i,"");let n=await this.cli.run(["set","version",r],{quiet:!0});if(n!==0)return n;let s=[];return this.private&&s.push("-p"),this.workspace&&s.push("-w"),this.yes&&s.push("-y"),await T.mktempPromise(async o=>{let{code:a}=await hr.pipevp("yarn",["init",...s],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Kt.makeScriptEnv({binFolder:o})});return a})}async executeRegular(e){var l;let r=null;try{r=(await Ke.find(e,this.context.cwd)).project}catch{r=null}T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=await Ze.tryFind(this.context.cwd)||new Ze,n=Object.fromEntries(e.get("initFields").entries());i.load(n),i.name=(l=i.name)!=null?l:S.makeIdent(e.get("initScope"),v.basename(this.context.cwd)),i.packageManager=Zr&&de.isTaggedYarnVersion(Zr)?`yarn@${Zr}`:null,typeof i.raw.private=="undefined"&&(this.private||this.workspace&&i.workspaceDefinitions.length===0)&&(i.private=!0),this.workspace&&i.workspaceDefinitions.length===0&&(await T.mkdirPromise(v.join(this.context.cwd,"packages"),{recursive:!0}),i.workspaceDefinitions=[{pattern:"packages/*"}]);let s={};i.exportTo(s),TL.inspect.styles.name="cyan",this.context.stdout.write(`${(0,TL.inspect)(s,{depth:Infinity,colors:!0,compact:!1})} -`);let o=v.join(this.context.cwd,Ze.fileName);await T.changeFilePromise(o,`${JSON.stringify(s,null,2)} -`,{automaticNewlines:!0});let a=v.join(this.context.cwd,"README.md");if(T.existsSync(a)||await T.writeFilePromise(a,`# ${S.stringifyIdent(i.name)} -`),!r||r.cwd===this.context.cwd){let c=v.join(this.context.cwd,wt.lockfile);T.existsSync(c)||await T.writeFilePromise(c,"");let g=["/.yarn/*","!/.yarn/patches","!/.yarn/plugins","!/.yarn/releases","!/.yarn/sdks","","# Swap the comments on the following lines if you don't wish to use zero-installs","# Documentation here: https://yarnpkg.com/features/zero-installs","!/.yarn/cache","#/.pnp.*"].map(m=>`${m} -`).join(""),f=v.join(this.context.cwd,".gitignore");T.existsSync(f)||await T.writeFilePromise(f,g);let h={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};(0,Rle.default)(h,e.get("initEditorConfig"));let p=`root = true -`;for(let[m,I]of Object.entries(h)){p+=` -[${m}] -`;for(let[B,b]of Object.entries(I))p+=`${B.replace(/[A-Z]/g,H=>`_${H.toLowerCase()}`)} = ${b} -`}let d=v.join(this.context.cwd,".editorconfig");T.existsSync(d)||await T.writeFilePromise(d,p),T.existsSync(v.join(this.context.cwd,".git"))||await hr.execvp("git",["init"],{cwd:this.context.cwd})}}};WC.paths=[["init"]],WC.usage=ye.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var Fle=WC;var T5e={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:ge.STRING,default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}}},commands:[Fle]},M5e=T5e;var GL={};it(GL,{default:()=>K5e});var Ua="portal:",Ha="link:";var OL=class{supports(e,r){return!!e.reference.startsWith(Ua)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot}}};var KL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ua)}supportsLocator(e,r){return!!e.reference.startsWith(Ua)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ua.length);return[S.makeLocator(e,`${Ua}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:n.getConditions(),dependencies:new Map([...n.dependencies]),peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var UL=class{supports(e,r){return!!e.reference.startsWith(Ha)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0}}};var HL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ha)}supportsLocator(e,r){return!!e.reference.startsWith(Ha)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ha.length);return[S.makeLocator(e,`${Ha}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){return _(P({},e),{version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map})}};var O5e={fetchers:[UL,OL],resolvers:[HL,KL]},K5e=O5e;var mT={};it(mT,{default:()=>Y6e});var Ga;(function(i){i[i.YES=0]="YES",i[i.NO=1]="NO",i[i.DEPENDS=2]="DEPENDS"})(Ga||(Ga={}));var jL=(t,e)=>`${t}@${e}`,Nle=(t,e)=>{let r=e.indexOf("#"),i=r>=0?e.substring(r+1):e;return jL(t,i)},qs;(function(s){s[s.NONE=-1]="NONE",s[s.PERF=0]="PERF",s[s.CHECK=1]="CHECK",s[s.REASONS=2]="REASONS",s[s.INTENSIVE_CHECK=9]="INTENSIVE_CHECK"})(qs||(qs={}));var Tle=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),i=e.check||r>=9,n=e.hoistingLimits||new Map,s={check:i,debugLevel:r,hoistingLimits:n,fastLookupPossible:!0},o;s.debugLevel>=0&&(o=Date.now());let a=U5e(t,s),l=!1,c=0;do l=YL(a,[a],new Set([a.locator]),new Map,s).anotherRoundNeeded,s.fastLookupPossible=!1,c++;while(l);if(s.debugLevel>=0&&console.log(`hoist time: ${Date.now()-o}ms, rounds: ${c}`),s.debugLevel>=1){let u=zC(a);if(YL(a,[a],new Set([a.locator]),new Map,s).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: -${u}, next tree: -${zC(a)}`);let f=Lle(a);if(f)throw new Error(`${f}, after hoisting finished: -${zC(a)}`)}return s.debugLevel>=2&&console.log(zC(a)),H5e(a)},G5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=s=>{if(!i.has(s)){i.add(s);for(let o of s.hoistedDependencies.values())r.set(o.name,o);for(let o of s.dependencies.values())s.peerNames.has(o.name)||n(o)}};return n(e),r},j5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=new Set,s=(o,a)=>{if(i.has(o))return;i.add(o);for(let c of o.hoistedDependencies.values())if(!a.has(c.name)){let u;for(let g of t)u=g.dependencies.get(c.name),u&&r.set(u.name,u)}let l=new Set;for(let c of o.dependencies.values())l.add(c.name);for(let c of o.dependencies.values())o.peerNames.has(c.name)||s(c,l)};return s(e,n),r},Mle=(t,e)=>{if(e.decoupled)return e;let{name:r,references:i,ident:n,locator:s,dependencies:o,originalDependencies:a,hoistedDependencies:l,peerNames:c,reasons:u,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:p,hoistedTo:d}=e,m={name:r,references:new Set(i),ident:n,locator:s,dependencies:new Map(o),originalDependencies:new Map(a),hoistedDependencies:new Map(l),peerNames:new Set(c),reasons:new Map(u),decoupled:!0,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:new Map(p),hoistedTo:new Map(d)},I=m.dependencies.get(r);return I&&I.ident==m.ident&&m.dependencies.set(r,m),t.dependencies.set(m.name,m),m},Y5e=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let n of t.dependencies.values())t.peerNames.has(n.name)||r.set(n.name,[n.ident]);let i=Array.from(e.keys());i.sort((n,s)=>{let o=e.get(n),a=e.get(s);return a.hoistPriority!==o.hoistPriority?a.hoistPriority-o.hoistPriority:a.peerDependents.size!==o.peerDependents.size?a.peerDependents.size-o.peerDependents.size:a.dependents.size-o.dependents.size});for(let n of i){let s=n.substring(0,n.indexOf("@",1)),o=n.substring(s.length+1);if(!t.peerNames.has(s)){let a=r.get(s);a||(a=[],r.set(s,a)),a.indexOf(o)<0&&a.push(o)}}return r},qL=t=>{let e=new Set,r=(i,n=new Set)=>{if(!n.has(i)){n.add(i);for(let s of i.peerNames)if(!t.peerNames.has(s)){let o=t.dependencies.get(s);o&&!e.has(o)&&r(o,n)}e.add(i)}};for(let i of t.dependencies.values())t.peerNames.has(i.name)||r(i);return e},YL=(t,e,r,i,n,s=new Set)=>{let o=e[e.length-1];if(s.has(o))return{anotherRoundNeeded:!1,isGraphChanged:!1};s.add(o);let a=J5e(o),l=Y5e(o,a),c=t==o?new Map:n.fastLookupPossible?G5e(e):j5e(e),u,g=!1,f=!1,h=new Map(Array.from(l.entries()).map(([d,m])=>[d,m[0]])),p=new Map;do{let d=q5e(t,e,r,c,h,l,i,p,n);d.isGraphChanged&&(f=!0),d.anotherRoundNeeded&&(g=!0),u=!1;for(let[m,I]of l)I.length>1&&!o.dependencies.has(m)&&(h.delete(m),I.shift(),h.set(m,I[0]),u=!0)}while(u);for(let d of o.dependencies.values())if(!o.peerNames.has(d.name)&&!r.has(d.locator)){r.add(d.locator);let m=YL(t,[...e,d],r,p,n);m.isGraphChanged&&(f=!0),m.anotherRoundNeeded&&(g=!0),r.delete(d.locator)}return{anotherRoundNeeded:g,isGraphChanged:f}},W5e=(t,e,r,i,n,s,o,a,{outputReason:l,fastLookupPossible:c})=>{let u,g=null,f=new Set;l&&(u=`${Array.from(e).map(m=>wi(m)).join("\u2192")}`);let h=r[r.length-1],d=!(i.ident===h.ident);if(l&&!d&&(g="- self-reference"),d&&(d=!i.isWorkspace,l&&!d&&(g="- workspace")),d&&(d=!h.isWorkspace||h.hoistedFrom.has(i.name)||e.size===1,l&&!d&&(g=h.reasons.get(i.name))),d&&(d=!t.peerNames.has(i.name),l&&!d&&(g=`- cannot shadow peer: ${wi(t.originalDependencies.get(i.name).locator)} at ${u}`)),d){let m=!1,I=n.get(i.name);if(m=!I||I.ident===i.ident,l&&!m&&(g=`- filled by: ${wi(I.locator)} at ${u}`),m)for(let B=r.length-1;B>=1;B--){let R=r[B].dependencies.get(i.name);if(R&&R.ident!==i.ident){m=!1;let H=a.get(h);H||(H=new Set,a.set(h,H)),H.add(i.name),l&&(g=`- filled by ${wi(R.locator)} at ${r.slice(0,B).map(L=>wi(L.locator)).join("\u2192")}`);break}}d=m}if(d&&(d=s.get(i.name)===i.ident,l&&!d&&(g=`- filled by: ${wi(o.get(i.name)[0])} at ${u}`)),d){let m=!0,I=new Set(i.peerNames);for(let B=r.length-1;B>=1;B--){let b=r[B];for(let R of I){if(b.peerNames.has(R)&&b.originalDependencies.has(R))continue;let H=b.dependencies.get(R);H&&t.dependencies.get(R)!==H&&(B===r.length-1?f.add(H):(f=null,m=!1,l&&(g=`- peer dependency ${wi(H.locator)} from parent ${wi(b.locator)} was not hoisted to ${u}`))),I.delete(R)}if(!m)break}d=m}if(d&&!c)for(let m of i.hoistedDependencies.values()){let I=n.get(m.name);if(!I||m.ident!==I.ident){d=!1,l&&(g=`- previously hoisted dependency mismatch, needed: ${wi(m.locator)}, available: ${wi(I==null?void 0:I.locator)}`);break}}return f!==null&&f.size>0?{isHoistable:2,dependsOn:f,reason:g}:{isHoistable:d?0:1,reason:g}},q5e=(t,e,r,i,n,s,o,a,l)=>{let c=e[e.length-1],u=new Set,g=!1,f=!1,h=(m,I,B,b)=>{if(u.has(B))return;let R=[...I,B.locator],H=new Map,L=new Map;for(let q of qL(B)){let A=W5e(c,r,[c,...m,B],q,i,n,s,a,{outputReason:l.debugLevel>=2,fastLookupPossible:l.fastLookupPossible});if(L.set(q,A),A.isHoistable===2)for(let V of A.dependsOn){let W=H.get(V.name)||new Set;W.add(q.name),H.set(V.name,W)}}let K=new Set,J=(q,A,V)=>{if(!K.has(q)){K.add(q),L.set(q,{isHoistable:1,reason:V});for(let W of H.get(q.name)||[])J(B.dependencies.get(W),A,l.debugLevel>=2?`- peer dependency ${wi(q.locator)} from parent ${wi(B.locator)} was not hoisted`:"")}};for(let[q,A]of L)A.isHoistable===1&&J(q,A,A.reason);for(let q of L.keys())if(!K.has(q)){f=!0;let A=o.get(B);A&&A.has(q.name)&&(g=!0),B.dependencies.delete(q.name),B.hoistedDependencies.set(q.name,q),B.reasons.delete(q.name);let V=c.dependencies.get(q.name);if(l.debugLevel>=2){let W=Array.from(I).concat([B.locator]).map(F=>wi(F)).join("\u2192"),X=c.hoistedFrom.get(q.name);X||(X=[],c.hoistedFrom.set(q.name,X)),X.push(W),B.hoistedTo.set(q.name,Array.from(e).map(F=>wi(F.locator)).join("\u2192"))}if(!V)c.ident!==q.ident&&(c.dependencies.set(q.name,q),b.add(q));else for(let W of q.references)V.references.add(W)}if(l.check){let q=Lle(t);if(q)throw new Error(`${q}, after hoisting dependencies of ${[c,...m,B].map(A=>wi(A.locator)).join("\u2192")}: -${zC(t)}`)}let ne=qL(B);for(let q of ne)if(K.has(q)){let A=L.get(q);if((n.get(q.name)===q.ident||!B.reasons.has(q.name))&&A.isHoistable!==0&&B.reasons.set(q.name,A.reason),!q.isHoistBorder&&R.indexOf(q.locator)<0){u.add(B);let W=Mle(B,q);h([...m,B],[...I,B.locator],W,d),u.delete(B)}}},p,d=new Set(qL(c));do{p=d,d=new Set;for(let m of p){if(m.locator===c.locator||m.isHoistBorder)continue;let I=Mle(c,m);h([],Array.from(r),I,d)}}while(d.size>0);return{anotherRoundNeeded:g,isGraphChanged:f}},Lle=t=>{let e=[],r=new Set,i=new Set,n=(s,o,a)=>{if(r.has(s)||(r.add(s),i.has(s)))return;let l=new Map(o);for(let c of s.dependencies.values())s.peerNames.has(c.name)||l.set(c.name,c);for(let c of s.originalDependencies.values()){let u=l.get(c.name),g=()=>`${Array.from(i).concat([s]).map(f=>wi(f.locator)).join("\u2192")}`;if(s.peerNames.has(c.name)){let f=o.get(c.name);(f!==u||!f||f.ident!==c.ident)&&e.push(`${g()} - broken peer promise: expected ${c.ident} but found ${f&&f.ident}`)}else{let f=a.hoistedFrom.get(s.name),h=s.hoistedTo.get(c.name),p=`${f?` hoisted from ${f.join(", ")}`:""}`,d=`${h?` hoisted to ${h}`:""}`,m=`${g()}${p}`;u?u.ident!==c.ident&&e.push(`${m} - broken require promise for ${c.name}${d}: expected ${c.ident}, but found: ${u.ident}`):e.push(`${m} - broken require promise: no required dependency ${c.name}${d} found`)}}i.add(s);for(let c of s.dependencies.values())s.peerNames.has(c.name)||n(c,l,s);i.delete(s)};return n(t,t.dependencies,t),e.join(` -`)},U5e=(t,e)=>{let{identName:r,name:i,reference:n,peerNames:s}=t,o={name:i,references:new Set([n]),locator:jL(r,n),ident:Nle(r,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(s),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,isWorkspace:!0,hoistedFrom:new Map,hoistedTo:new Map},a=new Map([[t,o]]),l=(c,u)=>{let g=a.get(c),f=!!g;if(!g){let{name:h,identName:p,reference:d,peerNames:m,hoistPriority:I,isWorkspace:B}=c,b=e.hoistingLimits.get(u.locator);g={name:h,references:new Set([d]),locator:jL(p,d),ident:Nle(p,d),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(m),reasons:new Map,decoupled:!0,isHoistBorder:b?b.has(h):!1,hoistPriority:I||0,isWorkspace:B||!1,hoistedFrom:new Map,hoistedTo:new Map},a.set(c,g)}if(u.dependencies.set(c.name,g),u.originalDependencies.set(c.name,g),f){let h=new Set,p=d=>{if(!h.has(d)){h.add(d),d.decoupled=!1;for(let m of d.dependencies.values())d.peerNames.has(m.name)||p(m)}};p(g)}else for(let h of c.dependencies)l(h,g)};for(let c of t.dependencies)l(c,o);return o},JL=t=>t.substring(0,t.indexOf("@",1)),H5e=t=>{let e={name:t.name,identName:JL(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),i=(n,s,o)=>{let a=r.has(n),l;if(s===n)l=o;else{let{name:c,references:u,locator:g}=n;l={name:c,identName:JL(g),references:u,dependencies:new Set}}if(o.dependencies.add(l),!a){r.add(n);for(let c of n.dependencies.values())n.peerNames.has(c.name)||i(c,n,l);r.delete(n)}};for(let n of t.dependencies.values())i(n,t,e);return e},J5e=t=>{let e=new Map,r=new Set([t]),i=o=>`${o.name}@${o.ident}`,n=o=>{let a=i(o),l=e.get(a);return l||(l={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(a,l)),l},s=(o,a)=>{let l=!!r.has(a);if(n(a).dependents.add(o.ident),!l){r.add(a);for(let u of a.dependencies.values()){let g=n(u);g.hoistPriority=Math.max(g.hoistPriority,u.hoistPriority),a.peerNames.has(u.name)?g.peerDependents.add(a.ident):s(a,u)}}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||s(t,o);return e},wi=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let i=t.substring(e+1);if(i==="workspace:.")return".";if(i){let n=(i.indexOf("#")>0?i.split("#")[1]:i).replace("npm:","");return i.startsWith("virtual")&&(r=`v:${r}`),n.startsWith("workspace")&&(r=`w:${r}`,n=""),`${r}${n?`@${n}`:""}`}else return`${r}`},Ole=5e4,zC=t=>{let e=0,r=(n,s,o="")=>{if(e>Ole||s.has(n))return"";e++;let a=Array.from(n.dependencies.values()).sort((c,u)=>c.name.localeCompare(u.name)),l="";s.add(n);for(let c=0;c":"")+(f!==u.name?`a:${u.name}:`:"")+wi(u.locator)+(g?` ${g}`:"")+(u!==n&&h.length>0?`, hoisted from: ${h.join(", ")}`:"")} -`,l+=r(u,s,`${o}${cOle?` -Tree is too large, part of the tree has been dunped -`:"")};var Js;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Js||(Js={}));var Sn;(function(i){i.WORKSPACES="workspaces",i.DEPENDENCIES="dependencies",i.NONE="none"})(Sn||(Sn={}));var Kle="node_modules",Hc="$wsroot$";var VC=(t,e)=>{let{packageTree:r,hoistingLimits:i,errors:n,preserveSymlinksRequired:s}=z5e(t,e),o=null;if(n.length===0){let a=Tle(r,{hoistingLimits:i});o=V5e(t,a,e)}return{tree:o,errors:n,preserveSymlinksRequired:s}},ms=t=>`${t.name}@${t.reference}`,WL=t=>{let e=new Map;for(let[r,i]of t.entries())if(!i.dirList){let n=e.get(i.locator);n||(n={target:i.target,linkType:i.linkType,locations:[],aliases:i.aliases},e.set(i.locator,n)),n.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((i,n)=>{let s=i.split(v.delimiter).length,o=n.split(v.delimiter).length;return s!==o?o-s:n.localeCompare(i)});return e},Ule=(t,e)=>{let r=S.isVirtualLocator(t)?S.devirtualizeLocator(t):t,i=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e;return S.areLocatorsEqual(r,i)},zL=(t,e,r,i)=>{if(t.linkType!==Js.SOFT)return!1;let n=M.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return v.contains(i,n)===null},_5e=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let i=M.toPortablePath(e.packageLocation.slice(0,-1)),n=new Map,s={children:new Map},o=t.getDependencyTreeRoots(),a=new Map,l=new Set,c=(f,h)=>{let p=ms(f);if(l.has(p))return;l.add(p);let d=t.getPackageInformation(f);if(d){let m=h?ms(h):"";if(ms(f)!==m&&d.linkType===Js.SOFT&&!zL(d,f,t,i)){let I=Hle(d,f,t);(!a.get(I)||f.reference.startsWith("workspace:"))&&a.set(I,f)}for(let[I,B]of d.packageDependencies)B!==null&&(d.packagePeers.has(I)||c(t.getLocator(I,B),f))}};for(let f of o)c(f,null);let u=i.split(v.sep);for(let f of a.values()){let h=t.getPackageInformation(f),d=M.toPortablePath(h.packageLocation.slice(0,-1)).split(v.sep).slice(u.length),m=s;for(let I of d){let B=m.children.get(I);B||(B={children:new Map},m.children.set(I,B)),m=B}m.workspaceLocator=f}let g=(f,h)=>{if(f.workspaceLocator){let p=ms(h),d=n.get(p);d||(d=new Set,n.set(p,d)),d.add(f.workspaceLocator)}for(let p of f.children.values())g(p,f.workspaceLocator||h)};for(let f of s.children.values())g(f,s.workspaceLocator);return n},z5e=(t,e)=>{let r=[],i=!1,n=new Map,s=_5e(t),o=t.getPackageInformation(t.topLevel);if(o===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let a=t.findPackageLocator(o.packageLocation);if(a===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let l=M.toPortablePath(o.packageLocation.slice(0,-1)),c={name:a.name,identName:a.name,reference:a.reference,peerNames:o.packagePeers,dependencies:new Set,isWorkspace:!0},u=new Map,g=(h,p)=>`${ms(p)}:${h}`,f=(h,p,d,m,I,B,b,R)=>{var X,F;let H=g(h,d),L=u.get(H),K=!!L;!K&&d.name===a.name&&d.reference===a.reference&&(L=c,u.set(H,c));let J=zL(p,d,t,l);if(!L){let D=p.linkType===Js.SOFT&&d.name.endsWith(Hc);L={name:h,identName:d.name,reference:d.reference,dependencies:new Set,peerNames:D?new Set:p.packagePeers,isWorkspace:D},u.set(H,L)}let ne;if(J?ne=2:I.linkType===Js.SOFT?ne=1:ne=0,L.hoistPriority=Math.max(L.hoistPriority||0,ne),R&&!J){let D=ms({name:m.identName,reference:m.reference}),he=n.get(D)||new Set;n.set(D,he),he.add(L.name)}let q=new Map(p.packageDependencies);if(e.project){let D=e.project.workspacesByCwd.get(M.toPortablePath(p.packageLocation.slice(0,-1)));if(D){let he=new Set([...Array.from(D.manifest.peerDependencies.values(),pe=>S.stringifyIdent(pe)),...Array.from(D.manifest.peerDependenciesMeta.keys())]);for(let pe of he)q.has(pe)||(q.set(pe,B.get(pe)||null),L.peerNames.add(pe))}}let A=ms({name:d.name.replace(Hc,""),reference:d.reference}),V=s.get(A);if(V)for(let D of V)q.set(`${D.name}${Hc}`,D.reference);(p!==I||p.linkType!==Js.SOFT||!e.selfReferencesByCwd||e.selfReferencesByCwd.get(b))&&m.dependencies.add(L);let W=d!==a&&p.linkType===Js.SOFT&&!d.name.endsWith(Hc)&&!J;if(!K&&!W){let D=new Map;for(let[he,pe]of q)if(pe!==null){let Ne=t.getLocator(he,pe),Pe=t.getLocator(he.replace(Hc,""),pe),qe=t.getPackageInformation(Pe);if(qe===null)throw new Error("Assertion failed: Expected the package to have been registered");let re=zL(qe,Ne,t,l);if(e.validateExternalSoftLinks&&e.project&&re){qe.packageDependencies.size>0&&(i=!0);for(let[De,$]of qe.packageDependencies)if($!==null){let G=S.parseLocator(Array.isArray($)?`${$[0]}@${$[1]}`:`${De}@${$}`);if(ms(G)!==ms(Ne)){let Ce=q.get(De);if(Ce){let ee=S.parseLocator(Array.isArray(Ce)?`${Ce[0]}@${Ce[1]}`:`${De}@${Ce}`);Ule(ee,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with parent dependency ${S.prettyLocator(e.project.configuration,ee)}`})}else{let ee=D.get(De);if(ee){let Ue=ee.target,Oe=S.parseLocator(Array.isArray(Ue)?`${Ue[0]}@${Ue[1]}`:`${De}@${Ue}`);Ule(Oe,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with dependency ${S.prettyLocator(e.project.configuration,Oe)} from sibling portal ${S.prettyIdent(e.project.configuration,S.parseIdent(ee.portal.name))}`})}else D.set(De,{target:G.reference,portal:Ne})}}}}let se=(X=e.hoistingLimitsByCwd)==null?void 0:X.get(b),be=re?b:v.relative(l,M.toPortablePath(qe.packageLocation))||Se.dot,ae=(F=e.hoistingLimitsByCwd)==null?void 0:F.get(be),Ae=se===Sn.DEPENDENCIES||ae===Sn.DEPENDENCIES||ae===Sn.WORKSPACES;f(ms(Ne)===ms(d)?h:he,qe,Ne,L,p,q,be,Ae)}}};return f(a.name,o,a,c,o,o.packageDependencies,Se.dot,!1),{packageTree:c,hoistingLimits:n,errors:r,preserveSymlinksRequired:i}};function Hle(t,e,r){let i=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return M.toPortablePath(i||t.packageLocation)}function X5e(t,e,r){let i=e.getLocator(t.name.replace(Hc,""),t.reference),n=e.getPackageInformation(i);if(n===null)throw new Error("Assertion failed: Expected the package to be registered");let s,o;return r.pnpifyFs?(o=M.toPortablePath(n.packageLocation),s=Js.SOFT):(o=Hle(n,t,e),s=n.linkType),{linkType:s,target:o}}var V5e=(t,e,r)=>{let i=new Map,n=(u,g,f)=>{let{linkType:h,target:p}=X5e(u,t,r);return{locator:ms(u),nodePath:g,target:p,linkType:h,aliases:f}},s=u=>{let[g,f]=u.split("/");return f?{scope:kr(g),name:kr(f)}:{scope:null,name:kr(g)}},o=new Set,a=(u,g,f)=>{if(!o.has(u)){o.add(u);for(let h of u.dependencies){if(h===u)continue;let p=Array.from(h.references).sort(),d={name:h.identName,reference:p[0]},{name:m,scope:I}=s(h.name),B=I?[I,m]:[m],b=v.join(g,Kle),R=v.join(b,...B),H=`${f}/${d.name}`,L=n(d,f,p.slice(1)),K=!1;if(L.linkType===Js.SOFT&&r.project){let J=r.project.workspacesByCwd.get(L.target.slice(0,-1));K=!!(J&&!J.manifest.name)}if(!h.name.endsWith(Hc)&&!K){let J=i.get(R);if(J){if(J.dirList)throw new Error(`Assertion failed: ${R} cannot merge dir node with leaf node`);{let V=S.parseLocator(J.locator),W=S.parseLocator(L.locator);if(J.linkType!==L.linkType)throw new Error(`Assertion failed: ${R} cannot merge nodes with different link types ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/${S.stringifyLocator(W)}`);if(V.identHash!==W.identHash)throw new Error(`Assertion failed: ${R} cannot merge nodes with different idents ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/s${S.stringifyLocator(W)}`);L.aliases=[...L.aliases,...J.aliases,S.parseLocator(J.locator).reference]}}i.set(R,L);let ne=R.split("/"),q=ne.indexOf(Kle),A=ne.length-1;for(;q>=0&&A>q;){let V=M.toPortablePath(ne.slice(0,A).join(v.sep)),W=kr(ne[A]),X=i.get(V);if(!X)i.set(V,{dirList:new Set([W])});else if(X.dirList){if(X.dirList.has(W))break;X.dirList.add(W)}A--}}a(h,L.linkType===Js.SOFT?L.target:R,H)}}},l=n({name:e.name,reference:Array.from(e.references)[0]},"",[]),c=l.target;return i.set(c,l),a(e,c,""),i};var oT={};it(oT,{PnpInstaller:()=>Cf,PnpLinker:()=>jc,default:()=>m6e,getPnpPath:()=>qA,jsInstallUtils:()=>Ws,pnpUtils:()=>nT,quotePathIfNeeded:()=>uce});var lce=ie(Or()),cce=ie(require("url"));var Gle;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Gle||(Gle={}));var Ht;(function(f){f.DEFAULT="DEFAULT",f.TOP_LEVEL="TOP_LEVEL",f.FALLBACK_EXCLUSION_LIST="FALLBACK_EXCLUSION_LIST",f.FALLBACK_EXCLUSION_ENTRIES="FALLBACK_EXCLUSION_ENTRIES",f.FALLBACK_EXCLUSION_DATA="FALLBACK_EXCLUSION_DATA",f.PACKAGE_REGISTRY_DATA="PACKAGE_REGISTRY_DATA",f.PACKAGE_REGISTRY_ENTRIES="PACKAGE_REGISTRY_ENTRIES",f.PACKAGE_STORE_DATA="PACKAGE_STORE_DATA",f.PACKAGE_STORE_ENTRIES="PACKAGE_STORE_ENTRIES",f.PACKAGE_INFORMATION_DATA="PACKAGE_INFORMATION_DATA",f.PACKAGE_DEPENDENCIES="PACKAGE_DEPENDENCIES",f.PACKAGE_DEPENDENCY="PACKAGE_DEPENDENCY"})(Ht||(Ht={}));var jle={[Ht.DEFAULT]:{collapsed:!1,next:{["*"]:Ht.DEFAULT}},[Ht.TOP_LEVEL]:{collapsed:!1,next:{fallbackExclusionList:Ht.FALLBACK_EXCLUSION_LIST,packageRegistryData:Ht.PACKAGE_REGISTRY_DATA,["*"]:Ht.DEFAULT}},[Ht.FALLBACK_EXCLUSION_LIST]:{collapsed:!1,next:{["*"]:Ht.FALLBACK_EXCLUSION_ENTRIES}},[Ht.FALLBACK_EXCLUSION_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.FALLBACK_EXCLUSION_DATA}},[Ht.FALLBACK_EXCLUSION_DATA]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}},[Ht.PACKAGE_REGISTRY_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_REGISTRY_ENTRIES}},[Ht.PACKAGE_REGISTRY_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_STORE_DATA}},[Ht.PACKAGE_STORE_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_STORE_ENTRIES}},[Ht.PACKAGE_STORE_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_INFORMATION_DATA}},[Ht.PACKAGE_INFORMATION_DATA]:{collapsed:!1,next:{packageDependencies:Ht.PACKAGE_DEPENDENCIES,["*"]:Ht.DEFAULT}},[Ht.PACKAGE_DEPENDENCIES]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_DEPENDENCY}},[Ht.PACKAGE_DEPENDENCY]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}}};function Z5e(t,e,r){let i="";i+="[";for(let n=0,s=t.length;ns(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function r6e(t){let e=new Map,r=_C(t.fallbackExclusionList||[],[({name:i,reference:n})=>i,({name:i,reference:n})=>n]);for(let{name:i,reference:n}of r){let s=e.get(i);typeof s=="undefined"&&e.set(i,s=new Set),s.add(n)}return Array.from(e).map(([i,n])=>[i,Array.from(n)])}function i6e(t){return _C(t.fallbackPool||[],([e])=>e)}function n6e(t){let e=[];for(let[r,i]of _C(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){let n=[];e.push([r,n]);for(let[s,{packageLocation:o,packageDependencies:a,packagePeers:l,linkType:c,discardFromLookup:u}]of _C(i,([g])=>g===null?"0":`1${g}`)){let g=[];r!==null&&s!==null&&!a.has(r)&&g.push([r,s]);for(let[p,d]of _C(a.entries(),([m])=>m))g.push([p,d]);let f=l&&l.size>0?Array.from(l):void 0,h=u||void 0;n.push([s,{packageLocation:o,packageDependencies:g,packagePeers:f,linkType:c,discardFromLookup:h}])}}return e}function XC(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:r6e(t),fallbackPool:i6e(t),packageRegistryData:n6e(t)}}var zle=ie(Wle());function Vle(t,e){return[t?`${t} -`:"",`/* eslint-disable */ - -`,`try { -`,` Object.freeze({}).detectStrictMode = true; -`,`} catch (error) { -`," throw new Error(`The whole PnP file got strict-mode-ified, which is known to break (Emscripten libraries aren't strict mode). This usually happens when the file goes through Babel.`);\n",`} -`,` -`,`var __non_webpack_module__ = module; -`,` -`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,e.replace(/^/gm," "),`} -`,` -`,(0,zle.default)()].join("")}function s6e(t){return JSON.stringify(t,null,2)}function o6e(t){return[`return hydrateRuntimeState(${qle(t)}, {basePath: basePath || __dirname}); -`].join("")}function a6e(t){return[`var path = require('path'); -`,`var dataLocation = path.resolve(__dirname, ${JSON.stringify(t)}); -`,`return hydrateRuntimeState(require(dataLocation), {basePath: basePath || path.dirname(dataLocation)}); -`].join("")}function _le(t){let e=XC(t),r=o6e(e);return Vle(t.shebang,r)}function Xle(t){let e=XC(t),r=a6e(t.dataLocation),i=Vle(t.shebang,r);return{dataFile:s6e(e),loaderFile:i}}var tce=ie(require("fs")),u6e=ie(require("path")),rce=ie(require("util"));function _L(t,{basePath:e}){let r=M.toPortablePath(e),i=v.resolve(r),n=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,s=new Map,o=new Map(t.packageRegistryData.map(([g,f])=>[g,new Map(f.map(([h,p])=>{var b;if(g===null!=(h===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let d=(b=p.discardFromLookup)!=null?b:!1,m={name:g,reference:h},I=s.get(p.packageLocation);I?(I.discardFromLookup=I.discardFromLookup&&d,d||(I.locator=m)):s.set(p.packageLocation,{locator:m,discardFromLookup:d});let B=null;return[h,{packageDependencies:new Map(p.packageDependencies),packagePeers:new Set(p.packagePeers),linkType:p.linkType,discardFromLookup:d,get packageLocation(){return B||(B=v.join(i,p.packageLocation))}}]}))])),a=new Map(t.fallbackExclusionList.map(([g,f])=>[g,new Set(f)])),l=new Map(t.fallbackPool),c=t.dependencyTreeRoots,u=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:c,enableTopLevelFallback:u,fallbackExclusionList:a,fallbackPool:l,ignorePattern:n,packageLocatorsByLocations:s,packageRegistry:o}}var df=ie(require("module")),ece=ie($le()),ZL=ie(require("util"));var ur;(function(l){l.API_ERROR="API_ERROR",l.BUILTIN_NODE_RESOLUTION_FAILED="BUILTIN_NODE_RESOLUTION_FAILED",l.MISSING_DEPENDENCY="MISSING_DEPENDENCY",l.MISSING_PEER_DEPENDENCY="MISSING_PEER_DEPENDENCY",l.QUALIFIED_PATH_RESOLUTION_FAILED="QUALIFIED_PATH_RESOLUTION_FAILED",l.INTERNAL="INTERNAL",l.UNDECLARED_DEPENDENCY="UNDECLARED_DEPENDENCY",l.UNSUPPORTED="UNSUPPORTED"})(ur||(ur={}));var c6e=new Set([ur.BUILTIN_NODE_RESOLUTION_FAILED,ur.MISSING_DEPENDENCY,ur.MISSING_PEER_DEPENDENCY,ur.QUALIFIED_PATH_RESOLUTION_FAILED,ur.UNDECLARED_DEPENDENCY]);function ui(t,e,r={}){let i=c6e.has(t)?"MODULE_NOT_FOUND":t,n={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:_(P({},n),{value:i}),pnpCode:_(P({},n),{value:t}),data:_(P({},n),{value:r})})}function YA(t){return M.normalize(M.fromPortablePath(t))}function $L(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,i=Number(process.env.PNP_DEBUG_LEVEL),n=new Set(df.Module.builtinModules||Object.keys(process.binding("natives"))),s=re=>n.has(re)||re.startsWith("node:"),o=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,a=/^(\/|\.{1,2}(\/|$))/,l=/\/$/,c=/^\.{0,2}\//,u={name:null,reference:null},g=[],f=new Set;if(t.enableTopLevelFallback===!0&&g.push(u),e.compatibilityMode!==!1)for(let re of["react-scripts","gatsby"]){let se=t.packageRegistry.get(re);if(se)for(let be of se.keys()){if(be===null)throw new Error("Assertion failed: This reference shouldn't be null");g.push({name:re,reference:be})}}let{ignorePattern:h,packageRegistry:p,packageLocatorsByLocations:d}=t;function m(re,se){return{fn:re,args:se,error:null,result:null}}function I(re){var De,$,G,Ce,ee,Ue;let se=(G=($=(De=process.stderr)==null?void 0:De.hasColors)==null?void 0:$.call(De))!=null?G:process.stdout.isTTY,be=(Oe,vt)=>`[${Oe}m${vt}`,ae=re.error;console.error(ae?be("31;1",`\u2716 ${(Ce=re.error)==null?void 0:Ce.message.replace(/\n.*/s,"")}`):be("33;1","\u203C Resolution")),re.args.length>0&&console.error();for(let Oe of re.args)console.error(` ${be("37;1","In \u2190")} ${(0,ZL.inspect)(Oe,{colors:se,compact:!0})}`);re.result&&(console.error(),console.error(` ${be("37;1","Out \u2192")} ${(0,ZL.inspect)(re.result,{colors:se,compact:!0})}`));let Ae=(Ue=(ee=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:ee.slice(2))!=null?Ue:[];if(Ae.length>0){console.error();for(let Oe of Ae)console.error(` ${be("38;5;244",Oe)}`)}console.error()}function B(re,se){if(e.allowDebug===!1)return se;if(Number.isFinite(i)){if(i>=2)return(...be)=>{let ae=m(re,be);try{return ae.result=se(...be)}catch(Ae){throw ae.error=Ae}finally{I(ae)}};if(i>=1)return(...be)=>{try{return se(...be)}catch(ae){let Ae=m(re,be);throw Ae.error=ae,I(Ae),ae}}}return se}function b(re){let se=W(re);if(!se)throw ui(ur.INTERNAL,"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return se}function R(re){if(re.name===null)return!0;for(let se of t.dependencyTreeRoots)if(se.name===re.name&&se.reference===re.reference)return!0;return!1}let H=new Set(["default","node","require"]);function L(re,se=H){let be=D(v.join(re,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(be===null)throw ui(ur.INTERNAL,`The locator that owns the "${re}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ae}=b(be),Ae=v.join(ae,wt.manifest);if(!e.fakeFs.existsSync(Ae))return null;let De=JSON.parse(e.fakeFs.readFileSync(Ae,"utf8")),$=v.contains(ae,re);if($===null)throw ui(ur.INTERNAL,"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");c.test($)||($=`./${$}`);let G=(0,ece.resolve)(De,v.normalize($),{conditions:se,unsafe:!0});return typeof G=="string"?v.join(ae,G):null}function K(re,se,{extensions:be}){let ae;try{se.push(re),ae=e.fakeFs.statSync(re)}catch(Ae){}if(ae&&!ae.isDirectory())return e.fakeFs.realpathSync(re);if(ae&&ae.isDirectory()){let Ae;try{Ae=JSON.parse(e.fakeFs.readFileSync(v.join(re,wt.manifest),"utf8"))}catch($){}let De;if(Ae&&Ae.main&&(De=v.resolve(re,Ae.main)),De&&De!==re){let $=K(De,se,{extensions:be});if($!==null)return $}}for(let Ae=0,De=be.length;Ae{let G=JSON.stringify($.name);if(ae.has(G))return;ae.add(G);let Ce=X($);for(let ee of Ce)if(b(ee).packagePeers.has(re))Ae(ee);else{let Oe=be.get(ee.name);typeof Oe=="undefined"&&be.set(ee.name,Oe=new Set),Oe.add(ee.reference)}};Ae(se);let De=[];for(let $ of[...be.keys()].sort())for(let G of[...be.get($)].sort())De.push({name:$,reference:G});return De}function D(re,{resolveIgnored:se=!1,includeDiscardFromLookup:be=!1}={}){if(q(re)&&!se)return null;let ae=v.relative(t.basePath,re);ae.match(a)||(ae=`./${ae}`),ae.endsWith("/")||(ae=`${ae}/`);do{let Ae=d.get(ae);if(typeof Ae=="undefined"||Ae.discardFromLookup&&!be){ae=ae.substring(0,ae.lastIndexOf("/",ae.length-2)+1);continue}return Ae.locator}while(ae!=="");return null}function he(re,se,{considerBuiltins:be=!0}={}){if(re==="pnpapi")return M.toPortablePath(e.pnpapiResolution);if(be&&s(re))return null;let ae=YA(re),Ae=se&&YA(se);if(se&&q(se)&&(!v.isAbsolute(re)||D(re)===null)){let G=ne(re,se);if(G===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) - -Require request: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(G)}let De,$=re.match(o);if($){if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let[,G,Ce]=$,ee=D(se);if(!ee){let yr=ne(re,se);if(yr===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). - -Require path: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(yr)}let Oe=b(ee).packageDependencies.get(G),vt=null;if(Oe==null&&ee.name!==null){let yr=t.fallbackExclusionList.get(ee.name);if(!yr||!yr.has(ee.reference)){for(let Qi=0,Go=g.length;QiR(Ki))?dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr}):dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) - -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr})}else Oe===void 0&&(!be&&s(re)?R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in ${ee.name}'s dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}):R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}));if(Oe==null){if(vt===null||dt===null)throw dt||new Error("Assertion failed: Expected an error to have been set");Oe=vt;let yr=dt.message.replace(/\n.*/g,"");dt.message=yr,!f.has(yr)&&i!==0&&(f.add(yr),process.emitWarning(dt))}let ri=Array.isArray(Oe)?{name:Oe[0],reference:Oe[1]}:{name:G,reference:Oe},ii=b(ri);if(!ii.packageLocation)throw ui(ur.MISSING_DEPENDENCY,`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. - -Required package: ${ri.name}@${ri.reference}${ri.name!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,dependencyLocator:Object.assign({},ri)});let an=ii.packageLocation;Ce?De=v.join(an,Ce):De=an}else if(v.isAbsolute(re))De=v.normalize(re);else{if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let G=v.resolve(se);se.match(l)?De=v.normalize(v.join(G,re)):De=v.normalize(v.join(v.dirname(G),re))}return v.normalize(De)}function pe(re,se,be=H){if(a.test(re))return se;let ae=L(se,be);return ae?v.normalize(ae):se}function Ne(re,{extensions:se=Object.keys(df.Module._extensions)}={}){let be=[],ae=K(re,be,{extensions:se});if(ae)return v.normalize(ae);{let Ae=YA(re),De=D(re);if(De){let{packageLocation:$}=b(De);if(!e.fakeFs.existsSync($)){let G=$.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`${G} - -Missing package: ${De.name}@${De.reference} -Expected package location: ${YA($)} -`,{unqualifiedPath:Ae})}}throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`Qualified path resolution failed - none of those files can be found on the disk. - -Source path: ${Ae} -${be.map($=>`Not found: ${YA($)} -`).join("")}`,{unqualifiedPath:Ae})}}function Pe(re,se,{considerBuiltins:be,extensions:ae,conditions:Ae}={}){let De=he(re,se,{considerBuiltins:be});if(re==="pnpapi")return De;if(De===null)return null;let $=()=>se!==null?q(se):!1,G=(!be||!s(re))&&!$()?pe(re,De,Ae):De;try{return Ne(G,{extensions:ae})}catch(Ce){throw Ce.pnpCode==="QUALIFIED_PATH_RESOLUTION_FAILED"&&Object.assign(Ce.data,{request:YA(re),issuer:se&&YA(se)}),Ce}}function qe(re){let se=v.normalize(re),be=Pr.resolveVirtual(se);return be!==se?be:null}return{VERSIONS:A,topLevel:V,getLocator:(re,se)=>Array.isArray(se)?{name:se[0],reference:se[1]}:{name:re,reference:se},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let re=[];for(let[se,be]of p)for(let ae of be.keys())se!==null&&ae!==null&&re.push({name:se,reference:ae});return re},getPackageInformation:re=>{let se=W(re);if(se===null)return null;let be=M.fromPortablePath(se.packageLocation);return _(P({},se),{packageLocation:be})},findPackageLocator:re=>D(M.toPortablePath(re)),resolveToUnqualified:B("resolveToUnqualified",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=he(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveUnqualified:B("resolveUnqualified",(re,se)=>M.fromPortablePath(Ne(M.toPortablePath(re),se))),resolveRequest:B("resolveRequest",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=Pe(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveVirtual:B("resolveVirtual",re=>{let se=qe(M.toPortablePath(re));return se!==null?M.fromPortablePath(se):null})}}var ISt=(0,rce.promisify)(tce.readFile);var ice=(t,e,r)=>{let i=XC(t),n=_L(i,{basePath:e}),s=M.join(e,wt.pnpCjs);return $L(n,{fakeFs:r,pnpapiResolution:s})};var tT=ie(sce());var Ws={};it(Ws,{checkAndReportManifestCompatibility:()=>oce,extractBuildScripts:()=>Z0,getExtractHint:()=>rT,hasBindingGyp:()=>iT});function oce(t,e,{configuration:r,report:i}){return S.isPackageCompatible(t,{os:[process.platform],cpu:[process.arch]})?!0:(i==null||i.reportWarningOnce(z.INCOMPATIBLE_ARCHITECTURE,`${S.prettyLocator(r,t)} The ${process.platform}-${process.arch} architecture is incompatible with this module, ${e} skipped.`),!1)}function Z0(t,e,r,{configuration:i,report:n}){let s=[];for(let a of["preinstall","install","postinstall"])e.manifest.scripts.has(a)&&s.push([Gn.SCRIPT,a]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&s.push([Gn.SHELLCODE,"node-gyp rebuild"]),s.length===0?[]:t.linkType!==gt.HARD?(n==null||n.reportWarningOnce(z.SOFT_LINK_BUILD,`${S.prettyLocator(i,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):r&&r.built===!1?(n==null||n.reportInfoOnce(z.BUILD_DISABLED,`${S.prettyLocator(i,t)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!i.get("enableScripts")&&!r.built?(n==null||n.reportWarningOnce(z.DISABLED_BUILD_SCRIPTS,`${S.prettyLocator(i,t)} lists build scripts, but all build scripts have been disabled.`),[]):oce(t,"build",{configuration:i,report:n})?s:[]}var g6e=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function rT(t){return t.packageFs.getExtractHint({relevantExtensions:g6e})}function iT(t){let e=v.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var nT={};it(nT,{getUnpluggedPath:()=>ZC});function ZC(t,{configuration:e}){return v.resolve(e.get("pnpUnpluggedFolder"),S.slugifyLocator(t))}var f6e=new Set([S.makeIdent(null,"nan").identHash,S.makeIdent(null,"node-gyp").identHash,S.makeIdent(null,"node-pre-gyp").identHash,S.makeIdent(null,"node-addon-api").identHash,S.makeIdent(null,"fsevents").identHash]),jc=class{constructor(){this.mode="strict";this.pnpCache=new Map}supportsPackage(e,r){return!(r.project.configuration.get("nodeLinker")!=="pnp"||r.project.configuration.get("pnpMode")!==this.mode)}async findPackageLocation(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})),s={name:S.stringifyIdent(e),reference:e.reference},o=n.getPackageInformation(s);if(!o)throw new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return M.toPortablePath(o.packageLocation)}async findPackageLocator(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))return null;let s=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})).findPackageLocator(M.fromPortablePath(e));return s?S.makeLocator(S.parseIdent(s.name),s.reference):null}makeInstaller(e){return new Cf(e)}},Cf=class{constructor(e){this.opts=e;this.mode="strict";this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}getCustomDataKey(){return JSON.stringify({name:"PnpInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,r){let i=S.stringifyIdent(e),n=e.reference,s=!!this.opts.project.tryWorkspaceByLocator(e),o=S.isVirtualLocator(e),a=e.peerDependencies.size>0&&!o,l=!a&&!s,c=!a&&e.linkType!==gt.SOFT,u,g;if(l||c){let B=o?S.devirtualizeLocator(e):e;u=this.customData.store.get(B.locatorHash),typeof u=="undefined"&&(u=await h6e(r),e.linkType===gt.HARD&&this.customData.store.set(B.locatorHash,u)),u.manifest.type==="module"&&(this.isESMLoaderRequired=!0),g=this.opts.project.getDependencyMeta(B,e.version)}let f=l?Z0(e,u,g,{configuration:this.opts.project.configuration,report:this.opts.report}):[],h=c?await this.unplugPackageIfNeeded(e,u,r,g):r.packageFs;if(v.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let p=v.resolve(h.getRealPath(),r.prefixPath),d=sT(this.opts.project.cwd,p),m=new Map,I=new Set;if(o){for(let B of e.peerDependencies.values())m.set(S.stringifyIdent(B),null),I.add(S.stringifyIdent(B));if(!s){let B=S.devirtualizeLocator(e);this.virtualTemplates.set(B.locatorHash,{location:sT(this.opts.project.cwd,Pr.resolveVirtual(p)),locator:B})}}return de.getMapWithDefault(this.packageRegistry,i).set(n,{packageLocation:d,packageDependencies:m,packagePeers:I,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:p,buildDirective:f.length>0?f:null}}async attachInternalDependencies(e,r){let i=this.getPackageInformation(e);for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){for(let i of r)this.getDiskInformation(i).packageDependencies.set(S.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=qA(this.opts.project);if(T.existsSync(e.cjsLegacy)&&(this.opts.report.reportWarning(z.UNNAMED,`Removing the old ${ue.pretty(this.opts.project.configuration,wt.pnpJs,ue.Type.PATH)} file. You might need to manually update existing references to reference the new ${ue.pretty(this.opts.project.configuration,wt.pnpCjs,ue.Type.PATH)} file. If you use Editor SDKs, you'll have to rerun ${ue.pretty(this.opts.project.configuration,"yarn sdks",ue.Type.CODE)}.`),await T.removePromise(e.cjsLegacy)),this.isEsmEnabled()||await T.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await T.removePromise(e.cjs),await T.removePromise(this.opts.project.configuration.get("pnpDataPath")),await T.removePromise(e.esmLoader);return}for(let{locator:u,location:g}of this.virtualTemplates.values())de.getMapWithDefault(this.packageRegistry,S.stringifyIdent(u)).set(u.reference,{packageLocation:g,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),i=this.opts.project.workspaces.map(({anchoredLocator:u})=>({name:S.stringifyIdent(u),reference:u.reference})),n=r!=="none",s=[],o=new Map,a=de.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),l=this.packageRegistry,c=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let u of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(u)&&s.push({name:S.stringifyIdent(u),reference:u.reference});return await this.finalizeInstallWithPnp({dependencyTreeRoots:i,enableTopLevelFallback:n,fallbackExclusionList:s,fallbackPool:o,ignorePattern:a,packageRegistry:l,shebang:c}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=qA(this.opts.project),i=this.opts.project.configuration.get("pnpDataPath"),n=await this.locateNodeModules(e.ignorePattern);if(n.length>0){this.opts.report.reportWarning(z.DANGEROUS_NODE_MODULES,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let o of n)await T.removePromise(o)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let o=_le(e);await T.changeFilePromise(r.cjs,o,{automaticNewlines:!0,mode:493}),await T.removePromise(i)}else{let o=v.relative(v.dirname(r.cjs),i),{dataFile:a,loaderFile:l}=Xle(_(P({},e),{dataLocation:o}));await T.changeFilePromise(r.cjs,l,{automaticNewlines:!0,mode:493}),await T.changeFilePromise(i,a,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(z.UNNAMED,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await T.changeFilePromise(r.esmLoader,(0,tT.default)(),{automaticNewlines:!0,mode:420}));let s=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await T.removePromise(s);else for(let o of await T.readdirPromise(s)){let a=v.resolve(s,o);this.unpluggedPaths.has(a)||await T.removePromise(a)}}async locateNodeModules(e){let r=[],i=e?new RegExp(e):null;for(let n of this.opts.project.workspaces){let s=v.join(n.cwd,"node_modules");if(i&&i.test(v.relative(this.opts.project.cwd,n.cwd))||!T.existsSync(s))continue;let o=await T.readdirPromise(s,{withFileTypes:!0}),a=o.filter(l=>!l.isDirectory()||l.name===".bin"||!l.name.startsWith("."));if(a.length===o.length)r.push(s);else for(let l of a)r.push(v.join(s,l.name))}return r}async unplugPackageIfNeeded(e,r,i,n){return this.shouldBeUnplugged(e,r,n)?this.unplugPackage(e,i):i.packageFs}shouldBeUnplugged(e,r,i){return typeof i.unplugged!="undefined"?i.unplugged:f6e.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(Z0(e,r,i,{configuration:this.opts.project.configuration}).length>0||r.misc.extractHint)}async unplugPackage(e,r){let i=ZC(e,{configuration:this.opts.project.configuration});if(this.opts.project.disabledLocators.has(e.locatorHash))return new Xo(i,{baseFs:r.packageFs,pathUtils:v});this.unpluggedPaths.add(i);let n=v.join(i,r.prefixPath,".ready");return await T.existsPromise(n)?new Ft(i):(this.opts.project.storedBuildState.delete(e.locatorHash),await T.mkdirPromise(i,{recursive:!0}),await T.copyPromise(i,Se.dot,{baseFs:r.packageFs,overwrite:!1}),await T.writeFilePromise(n,""),new Ft(i))}getPackageInformation(e){let r=S.stringifyIdent(e),i=e.reference,n=this.packageRegistry.get(r);if(!n)throw new Error(`Assertion failed: The package information store should have been available (for ${S.prettyIdent(this.opts.project.configuration,e)})`);let s=n.get(i);if(!s)throw new Error(`Assertion failed: The package information should have been available (for ${S.prettyLocator(this.opts.project.configuration,e)})`);return s}getDiskInformation(e){let r=de.getMapWithDefault(this.packageRegistry,"@@disk"),i=sT(this.opts.project.cwd,e);return de.getFactoryWithDefault(r,i,()=>({packageLocation:i,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1}))}};function sT(t,e){let r=v.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function h6e(t){var i;let e=(i=await Ze.tryFind(t.prefixPath,{baseFs:t.packageFs}))!=null?i:new Ze,r=new Set(["preinstall","install","postinstall"]);for(let n of e.scripts.keys())r.has(n)||e.scripts.delete(n);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:rT(t),hasBindingGyp:iT(t)}}}var ace=ie(Nn());var $C=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);if(e.get("nodeLinker")!=="pnp")throw new me("This command can only be used if the `nodeLinker` option is set to `pnp`");await r.restoreInstallState();let s=new Set(this.patterns),o=this.patterns.map(f=>{let h=S.parseDescriptor(f),p=h.range!=="unknown"?h:S.makeDescriptor(h,"*");if(!qt.validRange(p.range))throw new me(`The range of the descriptor patterns must be a valid semver range (${S.prettyDescriptor(e,p)})`);return d=>{let m=S.stringifyIdent(d);return!ace.default.isMatch(m,S.stringifyIdent(p))||d.version&&!qt.satisfiesWithPrereleases(d.version,p.range)?!1:(s.delete(f),!0)}}),a=()=>{let f=[];for(let h of r.storedPackages.values())!r.tryWorkspaceByLocator(h)&&!S.isVirtualLocator(h)&&o.some(p=>p(h))&&f.push(h);return f},l=f=>{let h=new Set,p=[],d=(m,I)=>{if(!h.has(m.locatorHash)&&(h.add(m.locatorHash),!r.tryWorkspaceByLocator(m)&&o.some(B=>B(m))&&p.push(m),!(I>0&&!this.recursive)))for(let B of m.dependencies.values()){let b=r.storedResolutions.get(B.descriptorHash);if(!b)throw new Error("Assertion failed: The resolution should have been registered");let R=r.storedPackages.get(b);if(!R)throw new Error("Assertion failed: The package should have been registered");d(R,I+1)}};for(let m of f){let I=r.storedPackages.get(m.anchoredLocator.locatorHash);if(!I)throw new Error("Assertion failed: The package should have been registered");d(I,0)}return p},c,u;if(this.all&&this.recursive?(c=a(),u="the project"):this.all?(c=l(r.workspaces),u="any workspace"):(c=l([i]),u="this workspace"),s.size>1)throw new me(`Patterns ${ue.prettyList(e,s,ue.Type.CODE)} don't match any packages referenced by ${u}`);if(s.size>0)throw new me(`Pattern ${ue.prettyList(e,s,ue.Type.CODE)} doesn't match any packages referenced by ${u}`);return c=de.sortMap(c,f=>S.stringifyLocator(f)),(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async f=>{var h;for(let p of c){let d=(h=p.version)!=null?h:"unknown",m=r.topLevelWorkspace.manifest.ensureDependencyMeta(S.makeDescriptor(p,d));m.unplugged=!0,f.reportInfo(z.UNNAMED,`Will unpack ${S.prettyLocator(e,p)} to ${ue.pretty(e,ZC(p,{configuration:e}),ue.Type.PATH)}`),f.reportJson({locator:S.stringifyLocator(p),version:d})}await r.topLevelWorkspace.persistManifest(),f.reportSeparator(),await r.install({cache:n,report:f})})).exitCode()}};$C.paths=[["unplug"]],$C.usage=ye.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var Ace=$C;var qA=t=>({cjs:v.join(t.cwd,wt.pnpCjs),cjsLegacy:v.join(t.cwd,wt.pnpJs),esmLoader:v.join(t.cwd,".pnp.loader.mjs")}),uce=t=>/\s/.test(t)?JSON.stringify(t):t;async function p6e(t,e,r){let i=qA(t),n=`--require ${uce(M.fromPortablePath(i.cjs))}`;if(T.existsSync(i.esmLoader)&&(n=`${n} --experimental-loader ${(0,cce.pathToFileURL)(M.fromPortablePath(i.esmLoader)).href}`),i.cjs.includes(" ")&&lce.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(T.existsSync(i.cjs)){let s=e.NODE_OPTIONS||"",o=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;s=s.replace(o," ").replace(a," ").trim(),s=s?`${n} ${s}`:n,e.NODE_OPTIONS=s}}async function d6e(t,e){let r=qA(t);e(r.cjs),e(r.esmLoader),e(t.configuration.get("pnpDataPath")),e(t.configuration.get("pnpUnpluggedFolder"))}var C6e={hooks:{populateYarnPaths:d6e,setupScriptEnvironment:p6e},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:ge.STRING,default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:ge.STRING,default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:ge.STRING,default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:ge.STRING,default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:ge.BOOLEAN,default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:ge.BOOLEAN,default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:ge.STRING,default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:ge.ABSOLUTE_PATH,default:"./.yarn/unplugged"},pnpDataPath:{description:"Path of the file where the PnP data (used by the loader) must be written",type:ge.ABSOLUTE_PATH,default:"./.pnp.data.json"}},linkers:[jc],commands:[Ace]},m6e=C6e;var Cce=ie(dce());var uT=ie(require("crypto")),mce=ie(require("fs")),Ece=1,gi="node_modules",gT=".bin",Ice=".yarn-state.yml",Bi;(function(i){i.CLASSIC="classic",i.HARDLINKS_LOCAL="hardlinks-local",i.HARDLINKS_GLOBAL="hardlinks-global"})(Bi||(Bi={}));var fT=class{constructor(){this.installStateCache=new Map}supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="node-modules"}async findPackageLocation(e,r){let i=r.project.tryWorkspaceByLocator(e);if(i)return i.cwd;let n=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(n===null)throw new me("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let s=n.locatorMap.get(S.stringifyLocator(e));if(!s){let a=new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw a.code="LOCATOR_NOT_INSTALLED",a}let o=r.project.configuration.startingCwd;return s.locations.find(a=>v.contains(o,a))||s.locations[0]}async findPackageLocator(e,r){let i=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(i===null)return null;let{locationRoot:n,segments:s}=$0(v.resolve(e),{skipPrefix:r.project.cwd}),o=i.locationTree.get(n);if(!o)return null;let a=o.locator;for(let l of s){if(o=o.children.get(l),!o)break;a=o.locator||a}return S.parseLocator(a)}makeInstaller(e){return new yce(e)}},yce=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}getCustomDataKey(){return JSON.stringify({name:"NodeModulesInstaller",version:1})}attachCustomData(e){this.customData=e}async installPackage(e,r){var u;let i=v.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.customData.store.get(e.locatorHash);if(typeof n=="undefined"&&(n=await L6e(e,r),e.linkType===gt.HARD&&this.customData.store.set(e.locatorHash,n)),!Ws.checkAndReportManifestCompatibility(e,"link",{configuration:this.opts.project.configuration,report:this.opts.report}))return{packageLocation:null,buildDirective:null};let s=new Map,o=new Set;s.has(S.stringifyIdent(e))||s.set(S.stringifyIdent(e),e.reference);let a=e;if(S.isVirtualLocator(e)){a=S.devirtualizeLocator(e);for(let g of e.peerDependencies.values())s.set(S.stringifyIdent(g),null),o.add(S.stringifyIdent(g))}let l={packageLocation:`${M.fromPortablePath(i)}/`,packageDependencies:s,packagePeers:o,linkType:e.linkType,discardFromLookup:(u=r.discardFromLookup)!=null?u:!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:n,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:l});let c=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(a.locatorHash,c),{packageLocation:i,buildDirective:null}}async attachInternalDependencies(e,r){let i=this.localStore.get(e.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected information object to have been registered");for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.pnpNode.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),r=await hT(this.opts.project),i=this.opts.project.configuration.get("nmMode");(r===null||i!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:i});let n=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmHoistingLimits");try{h=de.validateEnum(Sn,(d=(p=f.manifest.installConfig)==null?void 0:p.hoistingLimits)!=null?d:h)}catch(m){let I=S.prettyWorkspace(this.opts.project.configuration,f);this.opts.report.reportWarning(z.INVALID_MANIFEST,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(Sn).join(", ")}, using default: "${h}"`)}return[f.relativeCwd,h]})),s=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmSelfReferences");return h=(d=(p=f.manifest.installConfig)==null?void 0:p.selfReferences)!=null?d:h,[f.relativeCwd,h]})),o={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(f,h)=>Array.isArray(h)?{name:h[0],reference:h[1]}:{name:f,reference:h},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(f=>{let h=f.anchoredLocator;return{name:S.stringifyIdent(f.locator),reference:h.reference}}),getPackageInformation:f=>{let h=f.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:S.makeLocator(S.parseIdent(f.name),f.reference),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the package reference to have been registered");return p.pnpNode},findPackageLocator:f=>{let h=this.opts.project.tryWorkspaceByCwd(M.toPortablePath(f));if(h!==null){let p=h.anchoredLocator;return{name:S.stringifyIdent(p),reference:p.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:f=>M.fromPortablePath(Pr.resolveVirtual(M.toPortablePath(f)))},{tree:a,errors:l,preserveSymlinksRequired:c}=VC(o,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:n,project:this.opts.project,selfReferencesByCwd:s});if(!a){for(let{messageName:f,text:h}of l)this.opts.report.reportError(f,h);return}let u=WL(a);await T6e(r,u,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async f=>{let h=S.parseLocator(f),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the slot to exist");return p.customPackageData.manifest}});let g=[];for(let[f,h]of u.entries()){if(wce(f))continue;let p=S.parseLocator(f),d=this.localStore.get(p.locatorHash);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(d.pkg))continue;let m=Ws.extractBuildScripts(d.pkg,d.customPackageData,d.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});m.length!==0&&g.push({buildLocations:h.locations,locatorHash:p.locatorHash,buildDirective:m})}return c&&this.opts.report.reportWarning(z.NM_PRESERVE_SYMLINKS_REQUIRED,`The application uses portals and that's why ${ue.pretty(this.opts.project.configuration,"--preserve-symlinks",ue.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:g}}};async function L6e(t,e){var n;let r=(n=await Ze.tryFind(e.prefixPath,{baseFs:e.packageFs}))!=null?n:new Ze,i=new Set(["preinstall","install","postinstall"]);for(let s of r.scripts.keys())i.has(s)||r.scripts.delete(s);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{extractHint:Ws.getExtractHint(e),hasBindingGyp:Ws.hasBindingGyp(e)}}}async function M6e(t,e,r,i){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will -`,n+=`# cause your node_modules installation to become invalidated. -`,n+=` -`,n+=`__metadata: -`,n+=` version: ${Ece} -`,n+=` nmMode: ${i.value} -`;let s=Array.from(e.keys()).sort(),o=S.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let c of s){let u=e.get(c);n+=` -`,n+=`${JSON.stringify(c)}: -`,n+=` locations: -`;for(let g of u.locations){let f=v.contains(t.cwd,g);if(f===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` - ${JSON.stringify(f)} -`}if(u.aliases.length>0){n+=` aliases: -`;for(let g of u.aliases)n+=` - ${JSON.stringify(g)} -`}if(c===o&&r.size>0){n+=` bin: -`;for(let[g,f]of r){let h=v.contains(t.cwd,g);if(h===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` ${JSON.stringify(h)}: -`;for(let[p,d]of f){let m=v.relative(v.join(g,gi),d);n+=` ${JSON.stringify(p)}: ${JSON.stringify(m)} -`}}}}let a=t.cwd,l=v.join(a,gi,Ice);await T.changeFilePromise(l,n,{automaticNewlines:!0})}async function hT(t,{unrollAliases:e=!1}={}){let r=t.cwd,i=v.join(r,gi,Ice);if(!T.existsSync(i))return null;let n=Ii(await T.readFilePromise(i,"utf8"));if(n.__metadata.version>Ece)return null;let s=n.__metadata.nmMode||Bi.CLASSIC,o=new Map,a=new Map;delete n.__metadata;for(let[l,c]of Object.entries(n)){let u=c.locations.map(f=>v.join(r,f)),g=c.bin;if(g)for(let[f,h]of Object.entries(g)){let p=v.join(r,M.toPortablePath(f)),d=de.getMapWithDefault(a,p);for(let[m,I]of Object.entries(h))d.set(kr(m),M.toPortablePath([p,gi,I].join(v.delimiter)))}if(o.set(l,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:c.aliases||[]}),e&&c.aliases)for(let f of c.aliases){let{scope:h,name:p}=S.parseLocator(l),d=S.makeLocator(S.makeIdent(h,p),f),m=S.stringifyLocator(d);o.set(m,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:[]})}}return{locatorMap:o,binSymlinks:a,locationTree:Bce(o,{skipPrefix:t.cwd}),nmMode:s}}var Ef=async(t,e)=>{if(t.split(v.sep).indexOf(gi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop&&(await T.lstatPromise(t)).isSymbolicLink()){await T.unlinkPromise(t);return}let r=await T.readdirPromise(t,{withFileTypes:!0});for(let i of r){let n=v.join(t,kr(i.name));i.isDirectory()?(i.name!==gi||e&&e.innerLoop)&&await Ef(n,{innerLoop:!0,contentsOnly:!1}):await T.unlinkPromise(n)}e.contentsOnly||await T.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},Qce=4,$0=(t,{skipPrefix:e})=>{let r=v.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let i=r.split(v.sep).filter(l=>l!==""),n=i.indexOf(gi),s=i.slice(0,n).join(v.sep),o=v.join(e,s),a=i.slice(n);return{locationRoot:o,segments:a}},Bce=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let i=()=>({children:new Map,linkType:gt.HARD});for(let[n,s]of t.entries()){if(s.linkType===gt.SOFT&&v.contains(e,s.target)!==null){let a=de.getFactoryWithDefault(r,s.target,i);a.locator=n,a.linkType=s.linkType}for(let o of s.locations){let{locationRoot:a,segments:l}=$0(o,{skipPrefix:e}),c=de.getFactoryWithDefault(r,a,i);for(let u=0;u{let r;try{process.platform==="win32"&&(r=await T.lstatPromise(t))}catch(i){}process.platform=="win32"&&(!r||r.isDirectory())?await T.symlinkPromise(t,e,"junction"):await T.symlinkPromise(v.relative(v.dirname(e),t),e)};async function bce(t,e,r){let i=v.join(t,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));try{await T.writeFilePromise(i,r);try{await T.linkPromise(i,e)}catch(n){}}finally{await T.unlinkPromise(i)}}async function O6e({srcPath:t,dstPath:e,srcMode:r,globalHardlinksStore:i,baseFs:n,nmMode:s,digest:o}){if(s.value===Bi.HARDLINKS_GLOBAL&&i&&o){let l=v.join(i,o.substring(0,2),`${o.substring(2)}.dat`),c;try{if(await mn.checksumFile(l,{baseFs:T,algorithm:"sha1"})!==o){let g=v.join(i,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));await T.renamePromise(l,g);let f=await n.readFilePromise(t);await T.writeFilePromise(g,f);try{await T.linkPromise(g,l),await T.unlinkPromise(g)}catch(h){}}await T.linkPromise(l,e),c=!0}catch(u){c=!1}if(!c){let u=await n.readFilePromise(t);await bce(i,l,u);try{await T.linkPromise(l,e)}catch(g){g&&g.code&&g.code=="EXDEV"&&(s.value=Bi.HARDLINKS_LOCAL,await n.copyFilePromise(t,e))}}}else await n.copyFilePromise(t,e);let a=r&511;a!==420&&await T.chmodPromise(e,a)}var JA;(function(i){i.FILE="file",i.DIRECTORY="directory",i.SYMLINK="symlink"})(JA||(JA={}));var K6e=async(t,e,{baseFs:r,globalHardlinksStore:i,nmMode:n,packageChecksum:s})=>{await T.mkdirPromise(t,{recursive:!0});let o=async(l=Se.dot)=>{let c=v.join(e,l),u=await r.readdirPromise(c,{withFileTypes:!0}),g=new Map;for(let f of u){let h=v.join(l,f.name),p,d=v.join(c,f.name);if(f.isFile()){if(p={kind:JA.FILE,mode:(await r.lstatPromise(d)).mode},n.value===Bi.HARDLINKS_GLOBAL){let m=await mn.checksumFile(d,{baseFs:r,algorithm:"sha1"});p.digest=m}}else if(f.isDirectory())p={kind:JA.DIRECTORY};else if(f.isSymbolicLink())p={kind:JA.SYMLINK,symlinkTo:await r.readlinkPromise(d)};else throw new Error(`Unsupported file type (file: ${d}, mode: 0o${await r.statSync(d).mode.toString(8).padStart(6,"0")})`);if(g.set(h,p),f.isDirectory()&&h!==gi){let m=await o(h);for(let[I,B]of m)g.set(I,B)}}return g},a;if(n.value===Bi.HARDLINKS_GLOBAL&&i&&s){let l=v.join(i,s.substring(0,2),`${s.substring(2)}.json`);try{a=new Map(Object.entries(JSON.parse(await T.readFilePromise(l,"utf8"))))}catch(c){a=await o(),await bce(i,l,Buffer.from(JSON.stringify(Object.fromEntries(a))))}}else a=await o();for(let[l,c]of a){let u=v.join(e,l),g=v.join(t,l);c.kind===JA.DIRECTORY?await T.mkdirPromise(g,{recursive:!0}):c.kind===JA.FILE?await O6e({srcPath:u,dstPath:g,srcMode:c.mode,digest:c.digest,nmMode:n,baseFs:r,globalHardlinksStore:i}):c.kind===JA.SYMLINK&&await pT(v.resolve(v.dirname(g),c.symlinkTo),g)}};function U6e(t,e){let r=new Map([...t]),i=new Map([...e]);for(let[n,s]of t){let o=v.join(n,gi);if(!T.existsSync(o)){s.children.delete(gi);for(let a of i.keys())v.contains(o,a)!==null&&i.delete(a)}}return{locationTree:r,binSymlinks:i}}function wce(t){let e=S.parseDescriptor(t);return S.isVirtualDescriptor(e)&&(e=S.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function H6e(t,e,r,{loadManifest:i}){let n=new Map;for(let[a,{locations:l}]of t){let c=wce(a)?null:await i(a,l[0]),u=new Map;if(c)for(let[g,f]of c.bin){let h=v.join(l[0],f);f!==""&&T.existsSync(h)&&u.set(g,f)}n.set(a,u)}let s=new Map,o=(a,l,c)=>{let u=new Map,g=v.contains(r,a);if(c.locator&&g!==null){let f=n.get(c.locator);for(let[h,p]of f){let d=v.join(a,M.toPortablePath(p));u.set(kr(h),d)}for(let[h,p]of c.children){let d=v.join(a,h),m=o(d,d,p);m.size>0&&s.set(a,new Map([...s.get(a)||new Map,...m]))}}else for(let[f,h]of c.children){let p=o(v.join(a,f),l,h);for(let[d,m]of p)u.set(d,m)}return u};for(let[a,l]of e){let c=o(a,a,l);c.size>0&&s.set(a,new Map([...s.get(a)||new Map,...c]))}return s}var vce=(t,e)=>{if(!t||!e)return t===e;let r=S.parseLocator(t);S.isVirtualLocator(r)&&(r=S.devirtualizeLocator(r));let i=S.parseLocator(e);return S.isVirtualLocator(i)&&(i=S.devirtualizeLocator(i)),S.areLocatorsEqual(r,i)};function dT(t){return v.join(t.get("globalFolder"),"store")}async function T6e(t,e,{baseFs:r,project:i,report:n,loadManifest:s,realLocatorChecksums:o}){let a=v.join(i.cwd,gi),{locationTree:l,binSymlinks:c}=U6e(t.locationTree,t.binSymlinks),u=Bce(e,{skipPrefix:i.cwd}),g=[],f=async({srcDir:L,dstDir:K,linkType:J,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})=>{let V=(async()=>{try{J===gt.SOFT?(await T.mkdirPromise(v.dirname(K),{recursive:!0}),await pT(v.resolve(L),K)):await K6e(K,L,{baseFs:r,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})}catch(W){throw W.message=`While persisting ${L} -> ${K} ${W.message}`,W}finally{B.tick()}})().then(()=>g.splice(g.indexOf(V),1));g.push(V),g.length>Qce&&await Promise.race(g)},h=async(L,K,J)=>{let ne=(async()=>{let q=async(A,V,W)=>{try{W.innerLoop||await T.mkdirPromise(V,{recursive:!0});let X=await T.readdirPromise(A,{withFileTypes:!0});for(let F of X){if(!W.innerLoop&&F.name===gT)continue;let D=v.join(A,F.name),he=v.join(V,F.name);F.isDirectory()?(F.name!==gi||W&&W.innerLoop)&&(await T.mkdirPromise(he,{recursive:!0}),await q(D,he,_(P({},W),{innerLoop:!0}))):H.value===Bi.HARDLINKS_LOCAL||H.value===Bi.HARDLINKS_GLOBAL?await T.linkPromise(D,he):await T.copyFilePromise(D,he,mce.default.constants.COPYFILE_FICLONE)}}catch(X){throw W.innerLoop||(X.message=`While cloning ${A} -> ${V} ${X.message}`),X}finally{W.innerLoop||B.tick()}};await q(L,K,J)})().then(()=>g.splice(g.indexOf(ne),1));g.push(ne),g.length>Qce&&await Promise.race(g)},p=async(L,K,J)=>{if(!J)K.children.has(gi)&&await Ef(v.join(L,gi),{contentsOnly:!1}),await Ef(L,{contentsOnly:L===a});else for(let[ne,q]of K.children){let A=J.children.get(ne);await p(v.join(L,ne),q,A)}};for(let[L,K]of l){let J=u.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await p(v.join(L,ne),q,A)}}let d=async(L,K,J)=>{if(!J)K.children.has(gi)&&await Ef(v.join(L,gi),{contentsOnly:!0}),await Ef(L,{contentsOnly:K.linkType===gt.HARD});else{vce(K.locator,J.locator)||await Ef(L,{contentsOnly:K.linkType===gt.HARD});for(let[ne,q]of K.children){let A=J.children.get(ne);await d(v.join(L,ne),q,A)}}};for(let[L,K]of u){let J=l.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await d(v.join(L,ne),q,A)}}let m=new Map,I=[];for(let[L,{locations:K}]of t.locatorMap.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=u.get(ne),V=ne;if(A){for(let W of q)if(V=v.join(V,W),A=A.children.get(W),!A)break;if(A){let W=vce(A.locator,L),X=e.get(A.locator),F=X.target,D=V,he=X.linkType;if(W)m.has(F)||m.set(F,D);else if(F!==D){let pe=S.parseLocator(A.locator);S.isVirtualLocator(pe)&&(pe=S.devirtualizeLocator(pe)),I.push({srcDir:F,dstDir:D,linkType:he,realLocatorHash:pe.locatorHash})}}}}for(let[L,{locations:K}]of e.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=l.get(ne),V=u.get(ne),W=ne,X=e.get(L),F=S.parseLocator(L);S.isVirtualLocator(F)&&(F=S.devirtualizeLocator(F));let D=F.locatorHash,he=X.target,pe=J;if(he===pe)continue;let Ne=X.linkType;for(let Pe of q)V=V.children.get(Pe);if(!A)I.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});else for(let Pe of q)if(W=v.join(W,Pe),A=A.children.get(Pe),!A){I.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});break}}let B=Xi.progressViaCounter(I.length),b=n.reportProgress(B),R=i.configuration.get("nmMode"),H={value:R};try{let L=H.value===Bi.HARDLINKS_GLOBAL?`${dT(i.configuration)}/v1`:null;if(L&&!await T.existsPromise(L)){await T.mkdirpPromise(L);for(let J=0;J<256;J++)await T.mkdirPromise(v.join(L,J.toString(16).padStart(2,"0")))}for(let J of I)(J.linkType===gt.SOFT||!m.has(J.srcDir))&&(m.set(J.srcDir,J.dstDir),await f(_(P({},J),{globalHardlinksStore:L,nmMode:H,packageChecksum:o.get(J.realLocatorHash)||null})));await Promise.all(g),g.length=0;for(let J of I){let ne=m.get(J.srcDir);J.linkType!==gt.SOFT&&J.dstDir!==ne&&await h(ne,J.dstDir,{nmMode:H})}await Promise.all(g),await T.mkdirPromise(a,{recursive:!0});let K=await H6e(e,u,i.cwd,{loadManifest:s});await G6e(c,K,i.cwd),await M6e(i,e,K,H),R==Bi.HARDLINKS_GLOBAL&&H.value==Bi.HARDLINKS_LOCAL&&n.reportWarningOnce(z.NM_HARDLINKS_MODE_DOWNGRADED,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{b.stop()}}async function G6e(t,e,r){for(let i of t.keys()){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);if(!e.has(i)){let n=v.join(i,gi,gT);await T.removePromise(n)}}for(let[i,n]of e){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);let s=v.join(i,gi,gT),o=t.get(i)||new Map;await T.mkdirPromise(s,{recursive:!0});for(let a of o.keys())n.has(a)||(await T.removePromise(v.join(s,a)),process.platform==="win32"&&await T.removePromise(v.join(s,kr(`${a}.cmd`))));for(let[a,l]of n){let c=o.get(a),u=v.join(s,a);c!==l&&(process.platform==="win32"?await(0,Cce.default)(M.fromPortablePath(l),M.fromPortablePath(u),{createPwshFile:!1}):(await T.removePromise(u),await pT(l,u),v.contains(r,await T.realpathPromise(l))!==null&&await T.chmodPromise(l,493)))}}}var CT=class extends jc{constructor(){super(...arguments);this.mode="loose"}makeInstaller(e){return new Sce(e)}},Sce=class extends Cf{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(e){let r=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),i=ice(e,this.opts.project.cwd,r),{tree:n,errors:s}=VC(i,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:u,text:g}of s)this.opts.report.reportError(u,g);return}let o=new Map;e.fallbackPool=o;let a=(u,g)=>{let f=S.parseLocator(g.locator),h=S.stringifyIdent(f);h===u?o.set(u,f.reference):o.set(u,[h,f.reference])},l=v.join(this.opts.project.cwd,wt.nodeModules),c=n.get(l);if(typeof c!="undefined"){if("target"in c)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let u of c.dirList){let g=v.join(l,u),f=n.get(g);if(typeof f=="undefined")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in f)a(u,f);else for(let h of f.dirList){let p=v.join(g,h),d=n.get(p);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in d)a(`${u}/${h}`,d);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var j6e={hooks:{cleanGlobalArtifacts:async t=>{let e=dT(t);await T.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:ge.STRING,values:[Sn.WORKSPACES,Sn.DEPENDENCIES,Sn.NONE],default:Sn.NONE},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:ge.STRING,values:[Bi.CLASSIC,Bi.HARDLINKS_LOCAL,Bi.HARDLINKS_GLOBAL],default:Bi.CLASSIC},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:ge.BOOLEAN,default:!0}},linkers:[fT,CT]},Y6e=j6e;var yM={};it(yM,{default:()=>Z7e,npmConfigUtils:()=>gr,npmHttpUtils:()=>Lt,npmPublishUtils:()=>Rf});var Rce=ie(Or());var ir="npm:";var Lt={};it(Lt,{AuthType:()=>jn,customPackageError:()=>W6e,del:()=>_6e,get:()=>zs,getIdentUrl:()=>zA,handleInvalidAuthenticationError:()=>WA,post:()=>z6e,put:()=>V6e});var Pce=ie(aC()),Dce=ie(require("url"));var gr={};it(gr,{RegistryType:()=>ja,getAuditRegistry:()=>q6e,getAuthConfiguration:()=>IT,getDefaultRegistry:()=>eQ,getPublishRegistry:()=>xce,getRegistryConfiguration:()=>kce,getScopeConfiguration:()=>ET,getScopeRegistry:()=>Ya,normalizeRegistry:()=>To});var ja;(function(i){i.AUDIT_REGISTRY="npmAuditRegistry",i.FETCH_REGISTRY="npmRegistryServer",i.PUBLISH_REGISTRY="npmPublishRegistry"})(ja||(ja={}));function To(t){return t.replace(/\/$/,"")}function q6e(t,{configuration:e}){let r=e.get(ja.AUDIT_REGISTRY);return r!==null?To(r):xce(t,{configuration:e})}function xce(t,{configuration:e}){var r;return((r=t.publishConfig)==null?void 0:r.registry)?To(t.publishConfig.registry):t.name?Ya(t.name.scope,{configuration:e,type:ja.PUBLISH_REGISTRY}):eQ({configuration:e,type:ja.PUBLISH_REGISTRY})}function Ya(t,{configuration:e,type:r=ja.FETCH_REGISTRY}){let i=ET(t,{configuration:e});if(i===null)return eQ({configuration:e,type:r});let n=i.get(r);return n===null?eQ({configuration:e,type:r}):To(n)}function eQ({configuration:t,type:e=ja.FETCH_REGISTRY}){let r=t.get(e);return To(r!==null?r:t.get(ja.FETCH_REGISTRY))}function kce(t,{configuration:e}){let r=e.get("npmRegistries"),i=To(t),n=r.get(i);if(typeof n!="undefined")return n;let s=r.get(i.replace(/^[a-z]+:/,""));return typeof s!="undefined"?s:null}function ET(t,{configuration:e}){if(t===null)return null;let i=e.get("npmScopes").get(t);return i||null}function IT(t,{configuration:e,ident:r}){let i=r&&ET(r.scope,{configuration:e});return(i==null?void 0:i.get("npmAuthIdent"))||(i==null?void 0:i.get("npmAuthToken"))?i:kce(t,{configuration:e})||e}var jn;(function(n){n[n.NO_AUTH=0]="NO_AUTH",n[n.BEST_EFFORT=1]="BEST_EFFORT",n[n.CONFIGURATION=2]="CONFIGURATION",n[n.ALWAYS_AUTH=3]="ALWAYS_AUTH"})(jn||(jn={}));async function WA(t,{attemptedAs:e,registry:r,headers:i,configuration:n}){var s,o;if(((s=t.originalError)==null?void 0:s.name)==="HTTPError"&&((o=t.originalError)==null?void 0:o.response.statusCode)===401)throw new nt(z.AUTHENTICATION_INVALID,`Invalid authentication (${typeof e!="string"?`as ${await J6e(r,i,{configuration:n})}`:`attempted as ${e}`})`)}function W6e(t){var e;return((e=t.response)==null?void 0:e.statusCode)===404?"Package not found":null}function zA(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}async function zs(t,a){var l=a,{configuration:e,headers:r,ident:i,authType:n,registry:s}=l,o=qr(l,["configuration","headers","ident","authType","registry"]);if(i&&typeof s=="undefined"&&(s=Ya(i.scope,{configuration:e})),i&&i.scope&&typeof n=="undefined"&&(n=1),typeof s!="string")throw new Error("Assertion failed: The registry should be a string");let c=await tQ(s,{authType:n,configuration:e,ident:i});c&&(r=_(P({},r),{authorization:c}));try{return await Zt.get(t.charAt(0)==="/"?`${s}${t}`:t,P({configuration:e,headers:r},o))}catch(u){throw await WA(u,{registry:s,configuration:e,headers:r}),u}}async function z6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.post(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.post(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function V6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.put(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.put(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function _6e(t,l){var c=l,{attemptedAs:e,configuration:r,headers:i,ident:n,authType:s=3,registry:o}=c,a=qr(c,["attemptedAs","configuration","headers","ident","authType","registry"]);if(n&&typeof o=="undefined"&&(o=Ya(n.scope,{configuration:r})),typeof o!="string")throw new Error("Assertion failed: The registry should be a string");let u=await tQ(o,{authType:s,configuration:r,ident:n});u&&(i=_(P({},i),{authorization:u}));try{return await Zt.del(o+t,P({configuration:r,headers:i},a))}catch(g){if(!wT(g))throw await WA(g,{attemptedAs:e,registry:o,configuration:r,headers:i}),g;let f=await yT(),h=P(P({},i),BT(f));try{return await Zt.del(`${o}${t}`,P({configuration:r,headers:h},a))}catch(p){throw await WA(p,{attemptedAs:e,registry:o,configuration:r,headers:i}),p}}}async function tQ(t,{authType:e=2,configuration:r,ident:i}){let n=IT(t,{configuration:r,ident:i}),s=X6e(n,e);if(!s)return null;let o=await r.reduceHook(a=>a.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:i});if(o)return o;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let a=n.get("npmAuthIdent");return a.includes(":")?`Basic ${Buffer.from(a).toString("base64")}`:`Basic ${a}`}if(s&&e!==1)throw new nt(z.AUTHENTICATION_NOT_FOUND,"No authentication configured for request");return null}function X6e(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function J6e(t,e,{configuration:r}){var i;if(typeof e=="undefined"||typeof e.authorization=="undefined")return"an anonymous user";try{return(i=(await Zt.get(new Dce.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username)!=null?i:"an unknown user"}catch{return"an unknown user"}}async function yT(){if(process.env.TEST_ENV)return process.env.TEST_NPM_2FA_TOKEN||"";let{otp:t}=await(0,Pce.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return t}function wT(t){var e,r;if(((e=t.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((r=t.originalError)==null?void 0:r.response.headers["www-authenticate"].split(/,\s*/).map(n=>n.toLowerCase())).includes("otp")}catch(i){return!1}}function BT(t){return{["npm-otp"]:t}}var QT=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i,params:n}=S.parseRange(e.reference);return!(!Rce.default.valid(i)||n===null||typeof n.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let{params:i}=S.parseRange(e.reference);if(i===null||typeof i.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let n=await zs(i.__archiveUrl,{configuration:r.project.configuration,ident:e});return await Ai.convertToZip(n,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var bT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!S.tryParseDescriptor(e.range.slice(ir.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){let i=S.parseDescriptor(e.range.slice(ir.length),!0);return r.resolver.getResolutionDependencies(i,r)}async getCandidates(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return await i.resolver.getCandidates(n,r,i)}async getSatisfying(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return i.resolver.getSatisfying(n,r,i)}resolve(e,r){throw new Error("Unreachable")}};var vT=ie(Or()),Fce=ie(require("url"));var Vs=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let i=new Fce.URL(e.reference);return!(!vT.default.valid(i.pathname)||i.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i;try{i=await zs(Vs.getLocatorUrl(e),{configuration:r.project.configuration,ident:e})}catch(n){i=await zs(Vs.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:r.project.configuration,ident:e})}return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:i}){let n=Ya(e.scope,{configuration:i}),s=Vs.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),n=n.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===n+s||r===n+s.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=vT.default.clean(e.reference.slice(ir.length));if(r===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");return`${zA(e)}/-/${e.name}-${r}.tgz`}};var ST=ie(Or());var rQ=S.makeIdent(null,"node-gyp"),Z6e=/\b(node-gyp|prebuild-install)\b/,xT=class{supportsDescriptor(e,r){return e.range.startsWith(ir)?!!qt.validRange(e.range.slice(ir.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i}=S.parseRange(e.reference);return!!ST.default.valid(i)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);let s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0}),o=de.mapAndFilter(Object.keys(s.versions),c=>{try{let u=new qt.SemVer(c);if(n.test(u))return u}catch{}return de.mapAndFilter.skip}),a=o.filter(c=>!s.versions[c.raw].deprecated),l=a.length>0?a:o;return l.sort((c,u)=>-c.compare(u)),l.map(c=>{let u=S.makeLocator(e,`${ir}${c.raw}`),g=s.versions[c.raw].dist.tarball;return Vs.isConventionalTarballUrl(u,g,{configuration:i.project.configuration})?u:S.bindLocator(u,{__archiveUrl:g})})}async getSatisfying(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);return de.mapAndFilter(r,s=>{try{let{selector:o}=S.parseRange(s,{requireProtocol:ir}),a=new qt.SemVer(o);if(n.test(a))return{reference:s,version:a}}catch{}return de.mapAndFilter.skip}).sort((s,o)=>-s.version.compare(o.version)).map(({reference:s})=>S.makeLocator(e,s))}async resolve(e,r){let{selector:i}=S.parseRange(e.reference),n=ST.default.clean(i);if(n===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");let s=await zs(zA(e),{configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(s.versions,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return reference "${n}"`);let o=new Ze;if(o.load(s.versions[n]),!o.dependencies.has(rQ.identHash)&&!o.peerDependencies.has(rQ.identHash)){for(let a of o.scripts.values())if(a.match(Z6e)){o.dependencies.set(rQ.identHash,S.makeDescriptor(rQ,"latest")),r.report.reportWarningOnce(z.NODE_GYP_INJECTED,`${S.prettyLocator(r.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}return typeof o.raw.deprecated=="string"&&r.report.reportWarningOnce(z.DEPRECATED_PACKAGE,`${S.prettyLocator(r.project.configuration,e)} is deprecated: ${o.raw.deprecated}`),_(P({},e),{version:n,languageName:"node",linkType:gt.HARD,conditions:o.getConditions(),dependencies:o.dependencies,peerDependencies:o.peerDependencies,dependenciesMeta:o.dependenciesMeta,peerDependenciesMeta:o.peerDependenciesMeta,bin:o.bin})}};var kT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!Rg.test(e.range.slice(ir.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(ir.length),s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"dist-tags"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data - missing "dist-tags" field');let o=s["dist-tags"];if(!Object.prototype.hasOwnProperty.call(o,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return tag "${n}"`);let a=o[n],l=S.makeLocator(e,`${ir}${a}`),c=s.versions[a].dist.tarball;return Vs.isConventionalTarballUrl(l,c,{configuration:i.project.configuration})?[l]:[S.bindLocator(l,{__archiveUrl:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Unreachable")}};var Rf={};it(Rf,{getGitHead:()=>_7e,makePublishBody:()=>V7e});var CM={};it(CM,{default:()=>D7e,packUtils:()=>za});var za={};it(za,{genPackList:()=>QQ,genPackStream:()=>dM,genPackageManifest:()=>age,hasPackScripts:()=>hM,prepareForPack:()=>pM});var fM=ie(Nn()),sge=ie(nge()),oge=ie(require("zlib")),I7e=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],y7e=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function hM(t){return!!(Kt.hasWorkspaceScript(t,"prepack")||Kt.hasWorkspaceScript(t,"postpack"))}async function pM(t,{report:e},r){await Kt.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let i=v.join(t.cwd,Ze.fileName);await T.existsPromise(i)&&await t.manifest.loadFile(i,{baseFs:T}),await r()}finally{await Kt.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function dM(t,e){var s,o;typeof e=="undefined"&&(e=await QQ(t));let r=new Set;for(let a of(o=(s=t.manifest.publishConfig)==null?void 0:s.executableFiles)!=null?o:new Set)r.add(v.normalize(a));for(let a of t.manifest.bin.values())r.add(v.normalize(a));let i=sge.default.pack();process.nextTick(async()=>{for(let a of e){let l=v.normalize(a),c=v.resolve(t.cwd,l),u=v.join("package",l),g=await T.lstatPromise(c),f={name:u,mtime:new Date(mr.SAFE_TIME*1e3)},h=r.has(l)?493:420,p,d,m=new Promise((B,b)=>{p=B,d=b}),I=B=>{B?d(B):p()};if(g.isFile()){let B;l==="package.json"?B=Buffer.from(JSON.stringify(await age(t),null,2)):B=await T.readFilePromise(c),i.entry(_(P({},f),{mode:h,type:"file"}),B,I)}else g.isSymbolicLink()?i.entry(_(P({},f),{mode:h,type:"symlink",linkname:await T.readlinkPromise(c)}),I):I(new Error(`Unsupported file type ${g.mode} for ${M.fromPortablePath(l)}`));await m}i.finalize()});let n=(0,oge.createGzip)();return i.pipe(n),n}async function age(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function QQ(t){var g,f,h,p,d,m,I,B;let e=t.project,r=e.configuration,i={accept:[],reject:[]};for(let b of y7e)i.reject.push(b);for(let b of I7e)i.accept.push(b);i.reject.push(r.get("rcFilename"));let n=b=>{if(b===null||!b.startsWith(`${t.cwd}/`))return;let R=v.relative(t.cwd,b),H=v.resolve(Se.root,R);i.reject.push(H)};n(v.resolve(e.cwd,r.get("lockfileFilename"))),n(r.get("cacheFolder")),n(r.get("globalFolder")),n(r.get("installStatePath")),n(r.get("virtualFolder")),n(r.get("yarnPath")),await r.triggerHook(b=>b.populateYarnPaths,e,b=>{n(b)});for(let b of e.workspaces){let R=v.relative(t.cwd,b.cwd);R!==""&&!R.match(/^(\.\.)?\//)&&i.reject.push(`/${R}`)}let s={accept:[],reject:[]},o=(f=(g=t.manifest.publishConfig)==null?void 0:g.main)!=null?f:t.manifest.main,a=(p=(h=t.manifest.publishConfig)==null?void 0:h.module)!=null?p:t.manifest.module,l=(m=(d=t.manifest.publishConfig)==null?void 0:d.browser)!=null?m:t.manifest.browser,c=(B=(I=t.manifest.publishConfig)==null?void 0:I.bin)!=null?B:t.manifest.bin;o!=null&&s.accept.push(v.resolve(Se.root,o)),a!=null&&s.accept.push(v.resolve(Se.root,a)),typeof l=="string"&&s.accept.push(v.resolve(Se.root,l));for(let b of c.values())s.accept.push(v.resolve(Se.root,b));if(l instanceof Map)for(let[b,R]of l.entries())s.accept.push(v.resolve(Se.root,b)),typeof R=="string"&&s.accept.push(v.resolve(Se.root,R));let u=t.manifest.files!==null;if(u){s.reject.push("/*");for(let b of t.manifest.files)Age(s.accept,b,{cwd:Se.root})}return await w7e(t.cwd,{hasExplicitFileList:u,globalList:i,ignoreList:s})}async function w7e(t,{hasExplicitFileList:e,globalList:r,ignoreList:i}){let n=[],s=new Zo(t),o=[[Se.root,[i]]];for(;o.length>0;){let[a,l]=o.pop(),c=await s.lstatPromise(a);if(!cge(a,{globalList:r,ignoreLists:c.isDirectory()?null:l}))if(c.isDirectory()){let u=await s.readdirPromise(a),g=!1,f=!1;if(!e||a!==Se.root)for(let d of u)g=g||d===".gitignore",f=f||d===".npmignore";let h=f?await lge(s,a,".npmignore"):g?await lge(s,a,".gitignore"):null,p=h!==null?[h].concat(l):l;cge(a,{globalList:r,ignoreLists:l})&&(p=[...l,{accept:[],reject:["**/*"]}]);for(let d of u)o.push([v.resolve(a,d),p])}else(c.isFile()||c.isSymbolicLink())&&n.push(v.relative(Se.root,a))}return n.sort()}async function lge(t,e,r){let i={accept:[],reject:[]},n=await t.readFilePromise(v.join(e,r),"utf8");for(let s of n.split(/\n/g))Age(i.reject,s,{cwd:e});return i}function B7e(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=v.resolve(e,t)),r&&(t=`!${t}`),t}function Age(t,e,{cwd:r}){let i=e.trim();i===""||i[0]==="#"||t.push(B7e(i,{cwd:r}))}function cge(t,{globalList:e,ignoreLists:r}){if(bQ(t,e.accept))return!1;if(bQ(t,e.reject))return!0;if(r!==null)for(let i of r){if(bQ(t,i.accept))return!1;if(bQ(t,i.reject))return!0}return!1}function bQ(t,e){let r=e,i=[];for(let n=0;n{await pM(i,{report:l},async()=>{l.reportJson({base:M.fromPortablePath(i.cwd)});let c=await QQ(i);for(let u of c)l.reportInfo(null,M.fromPortablePath(u)),l.reportJson({location:M.fromPortablePath(u)});if(!this.dryRun){let u=await dM(i,c),g=T.createWriteStream(s);u.pipe(g),await new Promise(f=>{g.on("finish",f)})}}),this.dryRun||(l.reportInfo(z.UNNAMED,`Package archive generated in ${ue.pretty(e,s,ue.Type.PATH)}`),l.reportJson({output:M.fromPortablePath(s)}))})).exitCode()}};fm.paths=[["pack"]],fm.usage=ye.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});var gge=fm;function Q7e(t,{workspace:e}){let r=t.replace("%s",b7e(e)).replace("%v",v7e(e));return M.toPortablePath(r)}function b7e(t){return t.manifest.name!==null?S.slugifyIdent(t.manifest.name):"package"}function v7e(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var S7e=["dependencies","devDependencies","peerDependencies"],x7e="workspace:",k7e=(t,e)=>{var i,n;e.publishConfig&&(e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of S7e)for(let o of t.manifest.getForScope(s).values()){let a=r.tryWorkspaceByDescriptor(o),l=S.parseRange(o.range);if(l.protocol===x7e)if(a===null){if(r.tryWorkspaceByIdent(o)===null)throw new nt(z.WORKSPACE_NOT_FOUND,`${S.prettyDescriptor(r.configuration,o)}: No local workspace found for this range`)}else{let c;S.areDescriptorsEqual(o,a.anchoredDescriptor)||l.selector==="*"?c=(i=a.manifest.version)!=null?i:"0.0.0":l.selector==="~"||l.selector==="^"?c=`${l.selector}${(n=a.manifest.version)!=null?n:"0.0.0"}`:c=l.selector,e[s][S.stringifyIdent(o)]=c}}},P7e={hooks:{beforeWorkspacePacking:k7e},commands:[gge]},D7e=P7e;var yge=ie(require("crypto")),wge=ie(Ige()),Bge=ie(require("url"));async function V7e(t,e,{access:r,tag:i,registry:n,gitHead:s}){let o=t.project.configuration,a=t.manifest.name,l=t.manifest.version,c=S.stringifyIdent(a),u=(0,yge.createHash)("sha1").update(e).digest("hex"),g=wge.default.fromData(e).toString();typeof r=="undefined"&&(t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?r=t.manifest.publishConfig.access:o.get("npmPublishAccess")!==null?r=o.get("npmPublishAccess"):a.scope?r="restricted":r="public");let f=await za.genPackageManifest(t),h=`${c}-${l}.tgz`,p=new Bge.URL(`${To(n)}/${c}/-/${h}`);return{_id:c,_attachments:{[h]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:c,access:r,["dist-tags"]:{[i]:l},versions:{[l]:_(P({},f),{_id:`${c}@${l}`,name:c,version:l,gitHead:s,dist:{shasum:u,integrity:g,tarball:p.toString()}})}}}async function _7e(t){try{let{stdout:e}=await hr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}var wM={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.BOOLEAN,default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:ge.SECRET,default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:ge.SECRET,default:null}},Qge={npmAuditRegistry:{description:"Registry to query for audit reports",type:ge.STRING,default:null},npmPublishRegistry:{description:"Registry to push packages to",type:ge.STRING,default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.STRING,default:"https://registry.yarnpkg.com"}},X7e={configuration:_(P(P({},wM),Qge),{npmScopes:{description:"Settings per package scope",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:P(P({},wM),Qge)}},npmRegistries:{description:"Settings per registry",type:ge.MAP,normalizeKeys:To,valueDefinition:{description:"",type:ge.SHAPE,properties:P({},wM)}}}),fetchers:[QT,Vs],resolvers:[bT,xT,kT]},Z7e=X7e;var vM={};it(vM,{default:()=>a_e});Ss();var Ho;(function(i){i.All="all",i.Production="production",i.Development="development"})(Ho||(Ho={}));var Xs;(function(s){s.Info="info",s.Low="low",s.Moderate="moderate",s.High="high",s.Critical="critical"})(Xs||(Xs={}));var vQ=[Xs.Info,Xs.Low,Xs.Moderate,Xs.High,Xs.Critical];function bge(t,e){let r=[],i=new Set,n=o=>{i.has(o)||(i.add(o),r.push(o))};for(let o of e)n(o);let s=new Set;for(;r.length>0;){let o=r.shift(),a=t.storedResolutions.get(o);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let l=t.storedPackages.get(a);if(!!l){s.add(o);for(let c of l.dependencies.values())n(c.descriptorHash)}}return s}function $7e(t,e){return new Set([...t].filter(r=>!e.has(r)))}function e_e(t,e,{all:r}){let i=r?t.workspaces:[e],n=i.map(f=>f.manifest),s=new Set(n.map(f=>[...f.dependencies].map(([h,p])=>h)).flat()),o=new Set(n.map(f=>[...f.devDependencies].map(([h,p])=>h)).flat()),a=i.map(f=>[...f.dependencies.values()]).flat(),l=a.filter(f=>s.has(f.identHash)).map(f=>f.descriptorHash),c=a.filter(f=>o.has(f.identHash)).map(f=>f.descriptorHash),u=bge(t,l),g=bge(t,c);return $7e(g,u)}function vge(t){let e={};for(let r of t)e[S.stringifyIdent(r)]=S.parseRange(r.range).selector;return e}function Sge(t){if(typeof t=="undefined")return new Set;let e=vQ.indexOf(t),r=vQ.slice(e);return new Set(r)}function t_e(t,e){let r=Sge(e),i={};for(let n of r)i[n]=t[n];return i}function xge(t,e){var i;let r=t_e(t,e);for(let n of Object.keys(r))if((i=r[n])!=null?i:0>0)return!0;return!1}function kge(t,e){var s;let r={},i={children:r},n=Object.values(t.advisories);if(e!=null){let o=Sge(e);n=n.filter(a=>o.has(a.severity))}for(let o of de.sortMap(n,a=>a.module_name))r[o.module_name]={label:o.module_name,value:ue.tuple(ue.Type.RANGE,o.findings.map(a=>a.version).join(", ")),children:{Issue:{label:"Issue",value:ue.tuple(ue.Type.NO_HINT,o.title)},URL:{label:"URL",value:ue.tuple(ue.Type.URL,o.url)},Severity:{label:"Severity",value:ue.tuple(ue.Type.NO_HINT,o.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ue.tuple(ue.Type.RANGE,o.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ue.tuple(ue.Type.RANGE,o.patched_versions)},Via:{label:"Via",value:ue.tuple(ue.Type.NO_HINT,Array.from(new Set(o.findings.map(a=>a.paths).flat().map(a=>a.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ue.tuple(ue.Type.NO_HINT,(s=o.recommendation)==null?void 0:s.replace(/\n/g," "))}}};return i}function Pge(t,e,{all:r,environment:i}){let n=r?t.workspaces:[e],s=[Ho.All,Ho.Production].includes(i),o=[];if(s)for(let c of n)for(let u of c.manifest.dependencies.values())o.push(u);let a=[Ho.All,Ho.Development].includes(i),l=[];if(a)for(let c of n)for(let u of c.manifest.devDependencies.values())l.push(u);return vge([...o,...l].filter(c=>S.parseRange(c.range).protocol===null))}function Dge(t,e,{all:r}){var s;let i=e_e(t,e,{all:r}),n={};for(let o of t.storedPackages.values())n[S.stringifyIdent(o)]={version:(s=o.version)!=null?s:"0.0.0",integrity:o.identHash,requires:vge(o.dependencies.values()),dev:i.has(S.convertLocatorToDescriptor(o).descriptorHash)};return n}var dm=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=Y.String("--environment",Ho.All,{description:"Which environments to cover",validator:Yi(Ho)});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=Y.String("--severity",Xs.Info,{description:"Minimal severity requested for packages to be displayed",validator:Yi(Xs)})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=Pge(r,i,{all:this.all,environment:this.environment}),s=Dge(r,i,{all:this.all});if(!this.recursive)for(let f of Object.keys(s))Object.prototype.hasOwnProperty.call(n,f)?s[f].requires={}:delete s[f];let o={requires:n,dependencies:s},a=gr.getAuditRegistry(i.manifest,{configuration:e}),l,c=await Fa.start({configuration:e,stdout:this.context.stdout},async()=>{l=await Lt.post("/-/npm/v1/security/audits/quick",o,{authType:Lt.AuthType.BEST_EFFORT,configuration:e,jsonResponse:!0,registry:a})});if(c.hasErrors())return c.exitCode();let u=xge(l.metadata.vulnerabilities,this.severity);return!this.json&&u?(Hs.emitTree(kge(l,this.severity),{configuration:e,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async f=>{f.reportJson(l),u||f.reportInfo(z.EXCEPTION,"No audit suggestions")})).exitCode()}};dm.paths=[["npm","audit"]],dm.usage=ye.Usage({description:"perform a vulnerability audit against the installed packages",details:` - This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). - - For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. - - Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${vQ.map(e=>`\`${e}\``).join(", ")}. - - If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. - - To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why \` to get more information as to who depends on them. - `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"]]});var Rge=dm;var BM=ie(Or()),QM=ie(require("util")),Cm=class extends Be{constructor(){super(...arguments);this.fields=Y.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.fields!="undefined"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],s=!1,o=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async a=>{for(let l of this.packages){let c;if(l==="."){let b=r.topLevelWorkspace;if(!b.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(b.cwd,wt.manifest))}`);c=S.makeDescriptor(b.manifest.name,"unknown")}else c=S.parseDescriptor(l);let u=Lt.getIdentUrl(c),g=bM(await Lt.get(u,{configuration:e,ident:c,jsonResponse:!0,customErrorMessage:Lt.customPackageError})),f=Object.keys(g.versions).sort(BM.default.compareLoose),p=g["dist-tags"].latest||f[f.length-1],d=qt.validRange(c.range);if(d){let b=BM.default.maxSatisfying(f,d);b!==null?p=b:(a.reportWarning(z.UNNAMED,`Unmet range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0)}else c.range!=="unknown"&&(a.reportWarning(z.UNNAMED,`Invalid range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0);let m=g.versions[p],I=_(P(P({},g),m),{version:p,versions:f}),B;if(i!==null){B={};for(let b of i){let R=I[b];if(typeof R!="undefined")B[b]=R;else{a.reportWarning(z.EXCEPTION,`The '${b}' field doesn't exist inside ${S.prettyIdent(e,c)}'s informations`),s=!0;continue}}}else this.json||(delete I.dist,delete I.readme,delete I.users),B=I;a.reportJson(B),this.json||n.push(B)}});QM.inspect.styles.name="cyan";for(let a of n)(a!==n[0]||s)&&this.context.stdout.write(` -`),this.context.stdout.write(`${(0,QM.inspect)(a,{depth:Infinity,colors:!0,compact:!1})} -`);return o.exitCode()}};Cm.paths=[["npm","info"]],Cm.usage=ye.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command will fetch information about a package from the npm registry, and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package informations.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react 16.12.0","yarn npm info react@16.12.0"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});var Fge=Cm;function bM(t){if(Array.isArray(t)){let e=[];for(let r of t)r=bM(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let i=bM(t[r]);i&&(e[r]=i)}return e}else return t||null}var Nge=ie(aC()),mm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=await i_e({registry:r,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),o=`/-/user/org.couchdb.user:${encodeURIComponent(s.name)}`,a=await Lt.put(o,s,{attemptedAs:s.name,configuration:e,registry:r,jsonResponse:!0,authType:Lt.AuthType.NO_AUTH});return await r_e(r,a.token,{configuration:e,scope:this.scope}),n.reportInfo(z.UNNAMED,"Successfully logged in")})).exitCode()}};mm.paths=[["npm","login"]],mm.usage=ye.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});var Lge=mm;async function SQ({scope:t,publish:e,configuration:r,cwd:i}){return t&&e?gr.getScopeRegistry(t,{configuration:r,type:gr.RegistryType.PUBLISH_REGISTRY}):t?gr.getScopeRegistry(t,{configuration:r}):e?gr.getPublishRegistry((await rf(r,i)).manifest,{configuration:r}):gr.getDefaultRegistry({configuration:r})}async function r_e(t,e,{configuration:r,scope:i}){let n=o=>a=>{let l=de.isIndexableObject(a)?a:{},c=l[o],u=de.isIndexableObject(c)?c:{};return _(P({},l),{[o]:_(P({},u),{npmAuthToken:e})})},s=i?{npmScopes:n(i)}:{npmRegistries:n(t)};return await fe.updateHomeConfiguration(s)}async function i_e({registry:t,report:e,stdin:r,stdout:i}){if(process.env.TEST_ENV)return{name:process.env.TEST_NPM_USER||"",password:process.env.TEST_NPM_PASSWORD||""};e.reportInfo(z.UNNAMED,`Logging in to ${t}`);let n=!1;t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(e.reportInfo(z.UNNAMED,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),e.reportSeparator();let{username:s,password:o}=await(0,Nge.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i}]);return e.reportSeparator(),{name:s,password:o}}var Ff=new Set(["npmAuthIdent","npmAuthToken"]),Em=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=Y.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=async()=>{var l;let n=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),s=await fe.find(this.context.cwd,this.context.plugins),o=S.makeIdent((l=this.scope)!=null?l:null,"pkg");return!gr.getAuthConfiguration(n,{configuration:s,ident:o}).get("npmAuthToken")};return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{if(this.all&&(await n_e(),n.reportInfo(z.UNNAMED,"Successfully logged out from everything")),this.scope){await Tge("npmScopes",this.scope),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${this.scope}`):n.reportWarning(z.UNNAMED,"Scope authentication settings removed, but some other ones settings still apply to it");return}let s=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish});await Tge("npmRegistries",s),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${s}`):n.reportWarning(z.UNNAMED,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};Em.paths=[["npm","logout"]],Em.usage=ye.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});var Mge=Em;function s_e(t,e){let r=t[e];if(!de.isIndexableObject(r))return!1;let i=new Set(Object.keys(r));if([...Ff].every(s=>!i.has(s)))return!1;for(let s of Ff)i.delete(s);if(i.size===0)return t[e]=void 0,!0;let n=P({},r);for(let s of Ff)delete n[s];return t[e]=n,!0}async function n_e(){let t=e=>{let r=!1,i=de.isIndexableObject(e)?P({},e):{};i.npmAuthToken&&(delete i.npmAuthToken,r=!0);for(let n of Object.keys(i))s_e(i,n)&&(r=!0);if(Object.keys(i).length!==0)return r?i:e};return await fe.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function Tge(t,e){return await fe.updateHomeConfiguration({[t]:r=>{let i=de.isIndexableObject(r)?r:{};if(!Object.prototype.hasOwnProperty.call(i,e))return r;let n=i[e],s=de.isIndexableObject(n)?n:{},o=new Set(Object.keys(s));if([...Ff].every(l=>!o.has(l)))return r;for(let l of Ff)o.delete(l);if(o.size===0)return Object.keys(i).length===1?void 0:_(P({},i),{[e]:void 0});let a={};for(let l of Ff)a[l]=void 0;return _(P({},i),{[e]:P(P({},s),a)})}})}var Im=class extends Be{constructor(){super(...arguments);this.access=Y.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=Y.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=Y.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);if(i.manifest.private)throw new me("Private workspaces cannot be published");if(i.manifest.name===null||i.manifest.version===null)throw new me("Workspaces must have valid names and versions to be published on an external registry");await r.restoreInstallState();let n=i.manifest.name,s=i.manifest.version,o=gr.getPublishRegistry(i.manifest,{configuration:e});return(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{var c,u;if(this.tolerateRepublish)try{let g=await Lt.get(Lt.getIdentUrl(n),{configuration:e,registry:o,ident:n,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(g,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(g.versions,s)){l.reportWarning(z.UNNAMED,`Registry already knows about version ${s}; skipping.`);return}}catch(g){if(((u=(c=g.originalError)==null?void 0:c.response)==null?void 0:u.statusCode)!==404)throw g}await Kt.maybeExecuteWorkspaceLifecycleScript(i,"prepublish",{report:l}),await za.prepareForPack(i,{report:l},async()=>{let g=await za.genPackList(i);for(let m of g)l.reportInfo(null,m);let f=await za.genPackStream(i,g),h=await de.bufferStream(f),p=await Rf.getGitHead(i.cwd),d=await Rf.makePublishBody(i,h,{access:this.access,tag:this.tag,registry:o,gitHead:p});await Lt.put(Lt.getIdentUrl(n),d,{configuration:e,registry:o,ident:n,jsonResponse:!0})}),l.reportInfo(z.UNNAMED,"Package archive published")})).exitCode()}};Im.paths=[["npm","publish"]],Im.usage=ye.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});var Oge=Im;var Uge=ie(Or());var ym=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n;if(typeof this.package!="undefined")n=S.parseIdent(this.package);else{if(!i)throw new rt(r.cwd,this.context.cwd);if(!i.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(i.cwd,wt.manifest))}`);n=i.manifest.name}let s=await wm(n,e),a={children:de.sortMap(Object.entries(s),([l])=>l).map(([l,c])=>({value:ue.tuple(ue.Type.RESOLUTION,{descriptor:S.makeDescriptor(n,l),locator:S.makeLocator(n,c)})}))};return Hs.emitTree(a,{configuration:e,json:this.json,stdout:this.context.stdout})}};ym.paths=[["npm","tag","list"]],ym.usage=ye.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` - This command will list all tags of a package from the npm registry. - - If the package is not specified, Yarn will default to the current workspace. - `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});var Kge=ym;async function wm(t,e){let r=`/-/package${Lt.getIdentUrl(t)}/dist-tags`;return Lt.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Lt.customPackageError})}var Bm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseDescriptor(this.package,!0),s=n.range;if(!Uge.default.valid(s))throw new me(`The range ${ue.pretty(e,n.range,ue.Type.RANGE)} must be a valid semver version`);let o=gr.getPublishRegistry(i.manifest,{configuration:e}),a=ue.pretty(e,n,ue.Type.IDENT),l=ue.pretty(e,s,ue.Type.RANGE),c=ue.pretty(e,this.tag,ue.Type.CODE);return(await Fe.start({configuration:e,stdout:this.context.stdout},async g=>{let f=await wm(n,e);Object.prototype.hasOwnProperty.call(f,this.tag)&&f[this.tag]===s&&g.reportWarning(z.UNNAMED,`Tag ${c} is already set to version ${l}`);let h=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.put(h,s,{configuration:e,registry:o,ident:n,jsonRequest:!0,jsonResponse:!0}),g.reportInfo(z.UNNAMED,`Tag ${c} added to version ${l} of package ${a}`)})).exitCode()}};Bm.paths=[["npm","tag","add"]],Bm.usage=ye.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` - This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. - `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});var Hge=Bm;var Qm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){if(this.tag==="latest")throw new me("The 'latest' tag cannot be removed.");let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseIdent(this.package),s=gr.getPublishRegistry(i.manifest,{configuration:e}),o=ue.pretty(e,this.tag,ue.Type.CODE),a=ue.pretty(e,n,ue.Type.IDENT),l=await wm(n,e);if(!Object.prototype.hasOwnProperty.call(l,this.tag))throw new me(`${o} is not a tag of package ${a}`);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{let g=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.del(g,{configuration:e,registry:s,ident:n,jsonResponse:!0}),u.reportInfo(z.UNNAMED,`Tag ${o} removed from package ${a}`)})).exitCode()}};Qm.paths=[["npm","tag","remove"]],Qm.usage=ye.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` - This command will remove a tag from a package from the npm registry. - `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});var Gge=Qm;var bm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r;return this.scope&&this.publish?r=gr.getScopeRegistry(this.scope,{configuration:e,type:gr.RegistryType.PUBLISH_REGISTRY}):this.scope?r=gr.getScopeRegistry(this.scope,{configuration:e}):this.publish?r=gr.getPublishRegistry((await rf(e,this.context.cwd)).manifest,{configuration:e}):r=gr.getDefaultRegistry({configuration:e}),(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{var o,a;let s;try{s=await Lt.get("/-/whoami",{configuration:e,registry:r,authType:Lt.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?S.makeIdent(this.scope,""):void 0})}catch(l){if(((o=l.response)==null?void 0:o.statusCode)===401||((a=l.response)==null?void 0:a.statusCode)===403){n.reportError(z.AUTHENTICATION_INVALID,"Authentication failed - your credentials may have expired");return}else throw l}n.reportInfo(z.UNNAMED,s.username)})).exitCode()}};bm.paths=[["npm","whoami"]],bm.usage=ye.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var jge=bm;var o_e={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:ge.STRING,default:null}},commands:[Rge,Fge,Lge,Mge,Oge,Hge,Kge,Gge,jge]},a_e=o_e;var NM={};it(NM,{default:()=>B_e,patchUtils:()=>SM});var SM={};it(SM,{applyPatchFile:()=>PQ,diffFolders:()=>DM,extractPackageToDisk:()=>PM,extractPatchFlags:()=>Xge,isParentRequired:()=>kM,loadPatchFiles:()=>km,makeDescriptor:()=>I_e,makeLocator:()=>xM,parseDescriptor:()=>Sm,parseLocator:()=>xm,parsePatchFile:()=>kQ});var vm=class extends Error{constructor(e,r){super(`Cannot apply hunk #${e+1}`);this.hunk=r}};var A_e=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function Nf(t){return v.relative(Se.root,v.resolve(Se.root,M.toPortablePath(t)))}function l_e(t){let e=t.trim().match(A_e);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var c_e=420,u_e=493,Lr;(function(i){i.Context="context",i.Insertion="insertion",i.Deletion="deletion"})(Lr||(Lr={}));var Yge=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),g_e=t=>({header:l_e(t),parts:[]}),f_e={["@"]:"header",["-"]:Lr.Deletion,["+"]:Lr.Insertion,[" "]:Lr.Context,["\\"]:"pragma",undefined:Lr.Context};function p_e(t){let e=[],r=Yge(),i="parsing header",n=null,s=null;function o(){n&&(s&&(n.parts.push(s),s=null),r.hunks.push(n),n=null)}function a(){o(),e.push(r),r=Yge()}for(let l=0;l0?"patch":"mode change",B=null;switch(I){case"rename":{if(!u||!g)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:i,fromPath:Nf(u),toPath:Nf(g)}),B=g}break;case"file deletion":{let b=n||p;if(!b)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(l),hash:f})}break;case"file creation":{let b=s||d;if(!b)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(c),hash:h})}break;case"patch":case"mode change":B=d||s;break;default:de.assertNever(I);break}B&&o&&a&&o!==a&&e.push({type:"mode change",semverExclusivity:i,path:Nf(B),oldMode:xQ(o),newMode:xQ(a)}),B&&m&&m.length&&e.push({type:"patch",semverExclusivity:i,path:Nf(B),hunks:m,beforeHash:f,afterHash:h})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function xQ(t){let e=parseInt(t,8)&511;if(e!==c_e&&e!==u_e)throw new Error(`Unexpected file mode string: ${t}`);return e}function kQ(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),d_e(p_e(e))}function h_e(t){let e=0,r=0;for(let{type:i,lines:n}of t.parts)switch(i){case Lr.Context:r+=n.length,e+=n.length;break;case Lr.Deletion:e+=n.length;break;case Lr.Insertion:r+=n.length;break;default:de.assertNever(i);break}if(e!==t.header.original.length||r!==t.header.patched.length){let i=n=>n<0?n:`+${n}`;throw new Error(`hunk header integrity check failed (expected @@ ${i(t.header.original.length)} ${i(t.header.patched.length)} @@, got @@ ${i(e)} ${i(r)} @@)`)}}async function Lf(t,e,r){let i=await t.lstatPromise(e),n=await r();if(typeof n!="undefined"&&(e=n),t.lutimesPromise)await t.lutimesPromise(e,i.atime,i.mtime);else if(!i.isSymbolicLink())await t.utimesPromise(e,i.atime,i.mtime);else throw new Error("Cannot preserve the time values of a symlink")}async function PQ(t,{baseFs:e=new Wt,dryRun:r=!1,version:i=null}={}){for(let n of t)if(!(n.semverExclusivity!==null&&i!==null&&!qt.satisfiesWithPrereleases(i,n.semverExclusivity)))switch(n.type){case"file deletion":if(r){if(!e.existsSync(n.path))throw new Error(`Trying to delete a file that doesn't exist: ${n.path}`)}else await Lf(e,v.dirname(n.path),async()=>{await e.unlinkPromise(n.path)});break;case"rename":if(r){if(!e.existsSync(n.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${n.fromPath}`)}else await Lf(e,v.dirname(n.fromPath),async()=>{await Lf(e,v.dirname(n.toPath),async()=>{await Lf(e,n.fromPath,async()=>(await e.movePromise(n.fromPath,n.toPath),n.toPath))})});break;case"file creation":if(r){if(e.existsSync(n.path))throw new Error(`Trying to create a file that already exists: ${n.path}`)}else{let s=n.hunk?n.hunk.parts[0].lines.join(` -`)+(n.hunk.parts[0].noNewlineAtEndOfFile?"":` -`):"";await e.mkdirpPromise(v.dirname(n.path),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),await e.writeFilePromise(n.path,s,{mode:n.mode}),await e.utimesPromise(n.path,mr.SAFE_TIME,mr.SAFE_TIME)}break;case"patch":await Lf(e,n.path,async()=>{await C_e(n,{baseFs:e,dryRun:r})});break;case"mode change":{let o=(await e.statPromise(n.path)).mode;if(qge(n.newMode)!==qge(o))continue;await Lf(e,n.path,async()=>{await e.chmodPromise(n.path,n.newMode)})}break;default:de.assertNever(n);break}}function qge(t){return(t&64)>0}function Jge(t){return t.replace(/\s+$/,"")}function m_e(t,e){return Jge(t)===Jge(e)}async function C_e({hunks:t,path:e},{baseFs:r,dryRun:i=!1}){let n=await r.statSync(e).mode,o=(await r.readFileSync(e,"utf8")).split(/\n/),a=[],l=0,c=0;for(let g of t){let f=Math.max(c,g.header.patched.start+l),h=Math.max(0,f-c),p=Math.max(0,o.length-f-g.header.original.length),d=Math.max(h,p),m=0,I=0,B=null;for(;m<=d;){if(m<=h&&(I=f-m,B=Wge(g,o,I),B!==null)){m=-m;break}if(m<=p&&(I=f+m,B=Wge(g,o,I),B!==null))break;m+=1}if(B===null)throw new vm(t.indexOf(g),g);a.push(B),l+=m,c=I+g.header.original.length}if(i)return;let u=0;for(let g of a)for(let f of g)switch(f.type){case"splice":{let h=f.index+u;o.splice(h,f.numToDelete,...f.linesToInsert),u+=f.linesToInsert.length-f.numToDelete}break;case"pop":o.pop();break;case"push":o.push(f.line);break;default:de.assertNever(f);break}await r.writeFilePromise(e,o.join(` -`),{mode:n})}function Wge(t,e,r){let i=[];for(let n of t.parts)switch(n.type){case Lr.Context:case Lr.Deletion:{for(let s of n.lines){let o=e[r];if(o==null||!m_e(o,s))return null;r+=1}n.type===Lr.Deletion&&(i.push({type:"splice",index:r-n.lines.length,numToDelete:n.lines.length,linesToInsert:[]}),n.noNewlineAtEndOfFile&&i.push({type:"push",line:""}))}break;case Lr.Insertion:i.push({type:"splice",index:r,numToDelete:0,linesToInsert:n.lines}),n.noNewlineAtEndOfFile&&i.push({type:"pop"});break;default:de.assertNever(n.type);break}return i}var E_e=/^builtin<([^>]+)>$/;function zge(t,e){let{source:r,selector:i,params:n}=S.parseRange(t);if(r===null)throw new Error("Patch locators must explicitly define their source");let s=i?i.split(/&/).map(c=>M.toPortablePath(c)):[],o=n&&typeof n.locator=="string"?S.parseLocator(n.locator):null,a=n&&typeof n.version=="string"?n.version:null,l=e(r);return{parentLocator:o,sourceItem:l,patchPaths:s,sourceVersion:a}}function Sm(t){let i=zge(t.range,S.parseDescriptor),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceDescriptor:e})}function xm(t){let i=zge(t.reference,S.parseLocator),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceLocator:e})}function Vge({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:i,patchHash:n},s){let o=t!==null?{locator:S.stringifyLocator(t)}:{},a=typeof i!="undefined"?{version:i}:{},l=typeof n!="undefined"?{hash:n}:{};return S.makeRange({protocol:"patch:",source:s(e),selector:r.join("&"),params:P(P(P({},a),l),o)})}function I_e(t,{parentLocator:e,sourceDescriptor:r,patchPaths:i}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,patchPaths:i},S.stringifyDescriptor))}function xM(t,{parentLocator:e,sourcePackage:r,patchPaths:i,patchHash:n}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:i,patchHash:n},S.stringifyLocator))}function _ge({onAbsolute:t,onRelative:e,onBuiltin:r},i){i.startsWith("~")&&(i=i.slice(1));let s=i.match(E_e);return s!==null?r(s[1]):v.isAbsolute(i)?t(i):e(i)}function Xge(t){let e=t.startsWith("~");return e&&(t=t.slice(1)),{optional:e}}function kM(t){return _ge({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},t)}async function km(t,e,r){let i=t!==null?await r.fetcher.fetch(t,r):null,n=i&&i.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,i.localPath)}:i;i&&i!==n&&i.releaseFs&&i.releaseFs();let s=await de.releaseAfterUseAsync(async()=>await Promise.all(e.map(async o=>{let a=Xge(o),l=await _ge({onAbsolute:async()=>await T.readFilePromise(o,"utf8"),onRelative:async()=>{if(n===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await n.packageFs.readFilePromise(v.join(n.prefixPath,o),"utf8")},onBuiltin:async c=>await r.project.configuration.firstHook(u=>u.getBuiltinPatch,r.project,c)},o);return _(P({},a),{source:l})})));for(let o of s)typeof o.source=="string"&&(o.source=o.source.replace(/\r\n?/g,` -`));return s}async function PM(t,{cache:e,project:r}){let i=r.storedPackages.get(t.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let n=r.storedChecksums,s=new ei,o=r.configuration.makeFetcher(),a=await o.fetch(t,{cache:e,project:r,fetcher:o,checksums:n,report:s}),l=await T.mktempPromise(),c=v.join(l,"source"),u=v.join(l,"user"),g=v.join(l,".yarn-patch.json");return await Promise.all([T.copyPromise(c,a.prefixPath,{baseFs:a.packageFs}),T.copyPromise(u,a.prefixPath,{baseFs:a.packageFs}),T.writeJsonPromise(g,{locator:S.stringifyLocator(t),version:i.version})]),T.detachTemp(l),u}async function DM(t,e){let r=M.fromPortablePath(t).replace(/\\/g,"/"),i=M.fromPortablePath(e).replace(/\\/g,"/"),{stdout:n,stderr:s}=await hr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--text",r,i],{cwd:M.toPortablePath(process.cwd()),env:_(P({},process.env),{GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""})});if(s.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. -The following error was reported by 'git': -${s}`);let o=r.startsWith("/")?a=>a.slice(1):a=>a;return n.replace(new RegExp(`(a|b)(${de.escapeRegExp(`/${o(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${de.escapeRegExp(`/${o(i)}/`)}`,"g"),"$1/").replace(new RegExp(de.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(de.escapeRegExp(`${i}/`),"g"),"")}function Zge(t,{configuration:e,report:r}){for(let i of t.parts)for(let n of i.lines)switch(i.type){case Lr.Context:r.reportInfo(null,` ${ue.pretty(e,n,"grey")}`);break;case Lr.Deletion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`- ${ue.pretty(e,n,ue.Type.REMOVED)}`);break;case Lr.Insertion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`+ ${ue.pretty(e,n,ue.Type.ADDED)}`);break;default:de.assertNever(i.type)}}var RM=class{supports(e,r){return!!e.reference.startsWith("patch:")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async patchPackage(e,r){let{parentLocator:i,sourceLocator:n,sourceVersion:s,patchPaths:o}=xm(e),a=await km(i,o,r),l=await T.mktempPromise(),c=v.join(l,"current.zip"),u=await r.fetcher.fetch(n,r),g=S.getIdentVendorPath(e),f=await $i(),h=new Jr(c,{libzip:f,create:!0,level:r.project.configuration.get("compressionLevel")});await de.releaseAfterUseAsync(async()=>{await h.copyPromise(g,u.prefixPath,{baseFs:u.packageFs,stableSort:!0})},u.releaseFs),h.saveAndClose();for(let{source:p,optional:d}of a){if(p===null)continue;let m=new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")}),I=new Ft(v.resolve(Se.root,g),{baseFs:m});try{await PQ(kQ(p),{baseFs:I,version:s})}catch(B){if(!(B instanceof vm))throw B;let b=r.project.configuration.get("enableInlineHunks"),R=!b&&!d?" (set enableInlineHunks for details)":"",H=`${S.prettyLocator(r.project.configuration,e)}: ${B.message}${R}`,L=K=>{!b||Zge(B.hunk,{configuration:r.project.configuration,report:K})};if(m.discardAndClose(),d){r.report.reportWarningOnce(z.PATCH_HUNK_FAILED,H,{reportExtra:L});continue}else throw new nt(z.PATCH_HUNK_FAILED,H,L)}m.saveAndClose()}return new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")})}};var y_e=3,FM=class{supportsDescriptor(e,r){return!!e.range.startsWith("patch:")}supportsLocator(e,r){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){let{patchPaths:n}=Sm(e);return n.every(s=>!kM(s))?e:S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:i}=Sm(e);return[i]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:n,sourceDescriptor:s,patchPaths:o}=Sm(e),a=await km(n,o,i.fetchOptions),l=r.get(s.descriptorHash);if(typeof l=="undefined")throw new Error("Assertion failed: The dependency should have been resolved");let c=mn.makeHash(`${y_e}`,...a.map(u=>JSON.stringify(u))).slice(0,6);return[xM(e,{parentLocator:n,sourcePackage:l,patchPaths:o,patchHash:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){let{sourceLocator:i}=xm(e),n=await r.resolver.resolve(i,r);return P(P({},n),e)}};var Pm=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=v.resolve(this.context.cwd,M.toPortablePath(this.patchFolder)),s=v.join(n,"../source"),o=v.join(n,"../.yarn-patch.json");if(!T.existsSync(s))throw new me("The argument folder didn't get created by 'yarn patch'");let a=await DM(s,n),l=await T.readJsonPromise(o),c=S.parseLocator(l.locator,!0);if(!r.storedPackages.has(c.locatorHash))throw new me("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(a);return}let u=e.get("patchFolder"),g=v.join(u,S.slugifyLocator(c));await T.mkdirPromise(u,{recursive:!0}),await T.writeFilePromise(g,a);let f=v.relative(r.cwd,g);r.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:S.stringifyIdent(c),description:l.version}},reference:`patch:${S.stringifyLocator(c)}#${f}`}),await r.persist()}};Pm.paths=[["patch-commit"]],Pm.usage=ye.Usage({description:"generate a patch out of a directory",details:"\n This will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n Only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});var $ge=Pm;var Dm=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=S.parseLocator(this.package);if(s.reference==="unknown"){let o=de.mapAndFilter([...r.storedPackages.values()],a=>a.identHash!==s.identHash?de.mapAndFilter.skip:S.isVirtualLocator(a)?de.mapAndFilter.skip:a);if(o.length===0)throw new me("No package found in the project for the given locator");if(o.length>1)throw new me(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): -${o.map(a=>` -- ${S.prettyLocator(e,a)}`).join("")}`);s=o[0]}if(!r.storedPackages.has(s.locatorHash))throw new me("No package found in the project for the given locator");await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async o=>{let a=await PM(s,{cache:n,project:r});o.reportJson({locator:S.stringifyLocator(s),path:M.fromPortablePath(a)}),o.reportInfo(z.UNNAMED,`Package ${S.prettyLocator(e,s)} got extracted with success!`),o.reportInfo(z.UNNAMED,`You can now edit the following folder: ${ue.pretty(e,M.fromPortablePath(a),"magenta")}`),o.reportInfo(z.UNNAMED,`Once you are done run ${ue.pretty(e,`yarn patch-commit ${process.platform==="win32"?'"':""}${M.fromPortablePath(a)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};Dm.paths=[["patch"]],Dm.usage=ye.Usage({description:"prepare a package for patching",details:'\n This command will cause a package to be extracted in a temporary directory (under a folder named "patch-workdir"). This folder will be editable at will; running `yarn patch` inside it will then cause Yarn to generate a patchfile and register it into your top-level manifest (cf the `patch:` protocol).\n '});var efe=Dm;var w_e={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:ge.BOOLEAN,default:!1},patchFolder:{description:"Folder where the patch files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/patches"}},commands:[$ge,efe],fetchers:[RM],resolvers:[FM]},B_e=w_e;var TM={};it(TM,{default:()=>S_e});var tfe=ie(Wp()),LM=class{supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="pnpm"}async findPackageLocation(e,r){return nfe(e,{project:r.project})}async findPackageLocator(e,r){let i=ife(),n=r.project.installersCustomData.get(i);if(!n)throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(s){let l=n.locatorByPath.get(s[1]);if(l)return l}let o=e,a=e;do{a=o,o=v.dirname(a);let l=n.locatorByPath.get(a);if(l)return l}while(o!==a);return null}makeInstaller(e){return new rfe(e)}},rfe=class{constructor(e){this.opts=e;this.asyncActions=new afe;this.packageLocations=new Map;this.customData={locatorByPath:new Map}}getCustomDataKey(){return ife()}attachCustomData(e){this.customData=e}async installPackage(e,r,i){switch(e.linkType){case gt.SOFT:return this.installPackageSoft(e,r,i);case gt.HARD:return this.installPackageHard(e,r,i)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,i){let n=v.resolve(r.packageFs.getRealPath(),r.prefixPath);return this.packageLocations.set(e.locatorHash,n),{packageLocation:n,buildDirective:null}}async installPackageHard(e,r,i){var u;let n=nfe(e,{project:this.opts.project});this.customData.locatorByPath.set(n,S.stringifyLocator(e)),this.packageLocations.set(e.locatorHash,n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await T.mkdirPromise(n,{recursive:!0}),await T.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1})}));let o=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e,a={manifest:(u=await Ze.tryFind(r.prefixPath,{baseFs:r.packageFs}))!=null?u:new Ze,misc:{hasBindingGyp:Ws.hasBindingGyp(r)}},l=this.opts.project.getDependencyMeta(o,e.version),c=Ws.extractBuildScripts(e,a,l,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:c}}async attachInternalDependencies(e,r){this.opts.project.configuration.get("nodeLinker")==="pnpm"&&(!ofe(e,{project:this.opts.project})||this.asyncActions.reduce(e.locatorHash,async i=>{await i;let n=this.packageLocations.get(e.locatorHash);if(typeof n=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(e)})`);let s=v.join(n,wt.nodeModules);r.length>0&&await T.mkdirpPromise(s);let o=await Q_e(s),a=[];for(let[l,c]of r){let u=c;ofe(c,{project:this.opts.project})||(this.opts.report.reportWarning(z.UNNAMED,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),u=S.devirtualizeLocator(c));let g=this.packageLocations.get(u.locatorHash);if(typeof g=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(c)})`);let f=S.stringifyIdent(l),h=v.join(s,f),p=v.relative(v.dirname(h),g),d=o.get(f);o.delete(f),a.push(Promise.resolve().then(async()=>{if(d){if(d.isSymbolicLink()&&await T.readlinkPromise(h)===p)return;await T.removePromise(h)}await T.mkdirpPromise(v.dirname(h)),process.platform=="win32"?await T.symlinkPromise(g,h,"junction"):await T.symlinkPromise(p,h)}))}for(let l of o.keys())a.push(T.removePromise(v.join(s,l)));await Promise.all(a)}))}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=sfe(this.opts.project),r=new Set;for(let s of this.packageLocations.values())r.add(v.basename(s));let i;try{i=await T.readdirPromise(e)}catch{i=[]}let n=[];for(let s of i)r.has(s)||n.push(T.removePromise(v.join(e,s)));await Promise.all(n),await this.asyncActions.wait()}};function ife(){return JSON.stringify({name:"PnpmInstaller",version:1})}function sfe(t){return v.join(t.cwd,wt.nodeModules,".store")}function nfe(t,{project:e}){let r=S.slugifyLocator(t);return v.join(sfe(e),r)}function ofe(t,{project:e}){return!S.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function Q_e(t){let e=new Map,r=[];try{r=await T.readdirPromise(t,{withFileTypes:!0})}catch(i){if(i.code!=="ENOENT")throw i}try{for(let i of r)if(!i.name.startsWith("."))if(i.name.startsWith("@"))for(let n of await T.readdirPromise(v.join(t,i.name),{withFileTypes:!0}))e.set(`${i.name}/${n.name}`,n);else e.set(i.name,i)}catch(i){if(i.code!=="ENOENT")throw i}return e}function b_e(){let t,e;return{promise:new Promise((i,n)=>{t=i,e=n}),resolve:t,reject:e}}var afe=class{constructor(){this.deferred=new Map;this.promises=new Map;this.limit=(0,tfe.default)(10)}set(e,r){let i=this.deferred.get(e);typeof i=="undefined"&&this.deferred.set(e,i=b_e());let n=this.limit(()=>r());return this.promises.set(e,n),n.then(()=>{this.promises.get(e)===n&&i.resolve()},s=>{this.promises.get(e)===n&&i.reject(s)}),i.promise}reduce(e,r){var n;let i=(n=this.promises.get(e))!=null?n:Promise.resolve();this.set(e,()=>r(i))}async wait(){await Promise.all(this.promises.values())}};var v_e={linkers:[LM]},S_e=v_e;var F0=()=>({modules:new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",F$(vh)],["semver",x_e],["typanion",lu],["yup",k_e],["@yarnpkg/plugin-essentials",hL],["@yarnpkg/plugin-compat",mL],["@yarnpkg/plugin-dlx",EL],["@yarnpkg/plugin-file",xL],["@yarnpkg/plugin-git",fL],["@yarnpkg/plugin-github",PL],["@yarnpkg/plugin-http",FL],["@yarnpkg/plugin-init",ML],["@yarnpkg/plugin-link",GL],["@yarnpkg/plugin-nm",mT],["@yarnpkg/plugin-npm",yM],["@yarnpkg/plugin-npm-cli",vM],["@yarnpkg/plugin-pack",CM],["@yarnpkg/plugin-patch",NM],["@yarnpkg/plugin-pnp",oT],["@yarnpkg/plugin-pnpm",TM]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"])});i0({binaryVersion:Zr||"",pluginConfiguration:F0()});})(); -/*! - * buildToken - * Builds OAuth token prefix (helper function) - * - * @name buildToken - * @function - * @param {GitUrl} obj The parsed Git url object. - * @return {String} token prefix - */ -/*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-windows - * - * Copyright © 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - */ diff --git a/.yarn/sdks/eslint/bin/eslint.js b/.yarn/sdks/eslint/bin/eslint.js deleted file mode 100755 index 4d327a49..00000000 --- a/.yarn/sdks/eslint/bin/eslint.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node - -const {existsSync} = require(`fs`); -const {createRequire, createRequireFromPath} = require(`module`); -const {resolve} = require(`path`); - -const relPnpApiPath = "../../../../.pnp.cjs"; - -const absPnpApiPath = resolve(__dirname, relPnpApiPath); -const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); - -if (existsSync(absPnpApiPath)) { - if (!process.versions.pnp) { - // Setup the environment to be able to require eslint/bin/eslint.js - require(absPnpApiPath).setup(); - } -} - -// Defer to the real eslint/bin/eslint.js your application uses -module.exports = absRequire(`eslint/bin/eslint.js`); diff --git a/.yarn/sdks/eslint/lib/api.js b/.yarn/sdks/eslint/lib/api.js deleted file mode 100644 index 97a05244..00000000 --- a/.yarn/sdks/eslint/lib/api.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node - -const {existsSync} = require(`fs`); -const {createRequire, createRequireFromPath} = require(`module`); -const {resolve} = require(`path`); - -const relPnpApiPath = "../../../../.pnp.cjs"; - -const absPnpApiPath = resolve(__dirname, relPnpApiPath); -const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); - -if (existsSync(absPnpApiPath)) { - if (!process.versions.pnp) { - // Setup the environment to be able to require eslint/lib/api.js - require(absPnpApiPath).setup(); - } -} - -// Defer to the real eslint/lib/api.js your application uses -module.exports = absRequire(`eslint/lib/api.js`); diff --git a/.yarn/sdks/eslint/package.json b/.yarn/sdks/eslint/package.json deleted file mode 100644 index 682ad1e2..00000000 --- a/.yarn/sdks/eslint/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "eslint", - "version": "8.1.0-sdk", - "main": "./lib/api.js", - "type": "commonjs" -} diff --git a/.yarn/sdks/integrations.yml b/.yarn/sdks/integrations.yml deleted file mode 100644 index aa9d0d0a..00000000 --- a/.yarn/sdks/integrations.yml +++ /dev/null @@ -1,5 +0,0 @@ -# This file is automatically generated by @yarnpkg/sdks. -# Manual changes might be lost! - -integrations: - - vscode diff --git a/.yarn/sdks/prettier/index.js b/.yarn/sdks/prettier/index.js deleted file mode 100755 index f6882d80..00000000 --- a/.yarn/sdks/prettier/index.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node - -const {existsSync} = require(`fs`); -const {createRequire, createRequireFromPath} = require(`module`); -const {resolve} = require(`path`); - -const relPnpApiPath = "../../../.pnp.cjs"; - -const absPnpApiPath = resolve(__dirname, relPnpApiPath); -const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); - -if (existsSync(absPnpApiPath)) { - if (!process.versions.pnp) { - // Setup the environment to be able to require prettier/index.js - require(absPnpApiPath).setup(); - } -} - -// Defer to the real prettier/index.js your application uses -module.exports = absRequire(`prettier/index.js`); diff --git a/.yarn/sdks/prettier/package.json b/.yarn/sdks/prettier/package.json deleted file mode 100644 index fdd19b5d..00000000 --- a/.yarn/sdks/prettier/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "prettier", - "version": "2.4.1-sdk", - "main": "./index.js", - "type": "commonjs" -} diff --git a/.yarn/sdks/typescript/bin/tsc b/.yarn/sdks/typescript/bin/tsc deleted file mode 100755 index 5608e574..00000000 --- a/.yarn/sdks/typescript/bin/tsc +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node - -const {existsSync} = require(`fs`); -const {createRequire, createRequireFromPath} = require(`module`); -const {resolve} = require(`path`); - -const relPnpApiPath = "../../../../.pnp.cjs"; - -const absPnpApiPath = resolve(__dirname, relPnpApiPath); -const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); - -if (existsSync(absPnpApiPath)) { - if (!process.versions.pnp) { - // Setup the environment to be able to require typescript/bin/tsc - require(absPnpApiPath).setup(); - } -} - -// Defer to the real typescript/bin/tsc your application uses -module.exports = absRequire(`typescript/bin/tsc`); diff --git a/.yarn/sdks/typescript/bin/tsserver b/.yarn/sdks/typescript/bin/tsserver deleted file mode 100755 index cd7d557d..00000000 --- a/.yarn/sdks/typescript/bin/tsserver +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node - -const {existsSync} = require(`fs`); -const {createRequire, createRequireFromPath} = require(`module`); -const {resolve} = require(`path`); - -const relPnpApiPath = "../../../../.pnp.cjs"; - -const absPnpApiPath = resolve(__dirname, relPnpApiPath); -const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); - -if (existsSync(absPnpApiPath)) { - if (!process.versions.pnp) { - // Setup the environment to be able to require typescript/bin/tsserver - require(absPnpApiPath).setup(); - } -} - -// Defer to the real typescript/bin/tsserver your application uses -module.exports = absRequire(`typescript/bin/tsserver`); diff --git a/.yarn/sdks/typescript/lib/tsc.js b/.yarn/sdks/typescript/lib/tsc.js deleted file mode 100644 index 16042d01..00000000 --- a/.yarn/sdks/typescript/lib/tsc.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node - -const {existsSync} = require(`fs`); -const {createRequire, createRequireFromPath} = require(`module`); -const {resolve} = require(`path`); - -const relPnpApiPath = "../../../../.pnp.cjs"; - -const absPnpApiPath = resolve(__dirname, relPnpApiPath); -const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); - -if (existsSync(absPnpApiPath)) { - if (!process.versions.pnp) { - // Setup the environment to be able to require typescript/lib/tsc.js - require(absPnpApiPath).setup(); - } -} - -// Defer to the real typescript/lib/tsc.js your application uses -module.exports = absRequire(`typescript/lib/tsc.js`); diff --git a/.yarn/sdks/typescript/lib/tsserver.js b/.yarn/sdks/typescript/lib/tsserver.js deleted file mode 100644 index 71e35cf6..00000000 --- a/.yarn/sdks/typescript/lib/tsserver.js +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/env node - -const {existsSync} = require(`fs`); -const {createRequire, createRequireFromPath} = require(`module`); -const {resolve} = require(`path`); - -const relPnpApiPath = "../../../../.pnp.cjs"; - -const absPnpApiPath = resolve(__dirname, relPnpApiPath); -const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); - -const moduleWrapper = tsserver => { - if (!process.versions.pnp) { - return tsserver; - } - - const {isAbsolute} = require(`path`); - const pnpApi = require(`pnpapi`); - - const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//); - const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`); - - const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => { - return `${locator.name}@${locator.reference}`; - })); - - // VSCode sends the zip paths to TS using the "zip://" prefix, that TS - // doesn't understand. This layer makes sure to remove the protocol - // before forwarding it to TS, and to add it back on all returned paths. - - function toEditorPath(str) { - // We add the `zip:` prefix to both `.zip/` paths and virtual paths - if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) { - // We also take the opportunity to turn virtual paths into physical ones; - // this makes it much easier to work with workspaces that list peer - // dependencies, since otherwise Ctrl+Click would bring us to the virtual - // file instances instead of the real ones. - // - // We only do this to modules owned by the the dependency tree roots. - // This avoids breaking the resolution when jumping inside a vendor - // with peer dep (otherwise jumping into react-dom would show resolution - // errors on react). - // - const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str; - if (resolved) { - const locator = pnpApi.findPackageLocator(resolved); - if (locator && dependencyTreeRoots.has(`${locator.name}@${locator.reference}`)) { - str = resolved; - } - } - - str = normalize(str); - - if (str.match(/\.zip\//)) { - switch (hostInfo) { - // Absolute VSCode `Uri.fsPath`s need to start with a slash. - // VSCode only adds it automatically for supported schemes, - // so we have to do it manually for the `zip` scheme. - // The path needs to start with a caret otherwise VSCode doesn't handle the protocol - // - // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 - // - // Update Oct 8 2021: VSCode changed their format in 1.61. - // Before | ^zip:/c:/foo/bar.zip/package.json - // After | ^/zip//c:/foo/bar.zip/package.json - // - case `vscode <1.61`: { - str = `^zip:${str}`; - } break; - - case `vscode`: { - str = `^/zip/${str}`; - } break; - - // To make "go to definition" work, - // We have to resolve the actual file system path from virtual path - // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip) - case `coc-nvim`: { - str = normalize(resolved).replace(/\.zip\//, `.zip::`); - str = resolve(`zipfile:${str}`); - } break; - - // Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server) - // We have to resolve the actual file system path from virtual path, - // everything else is up to neovim - case `neovim`: { - str = normalize(resolved).replace(/\.zip\//, `.zip::`); - str = `zipfile:${str}`; - } break; - - default: { - str = `zip:${str}`; - } break; - } - } - } - - return str; - } - - function fromEditorPath(str) { - switch (hostInfo) { - case `coc-nvim`: - case `neovim`: { - str = str.replace(/\.zip::/, `.zip/`); - // The path for coc-nvim is in format of //zipfile://.yarn/... - // So in order to convert it back, we use .* to match all the thing - // before `zipfile:` - return process.platform === `win32` - ? str.replace(/^.*zipfile:\//, ``) - : str.replace(/^.*zipfile:/, ``); - } break; - - case `vscode`: - default: { - return process.platform === `win32` - ? str.replace(/^\^?(zip:|\/zip)\/+/, ``) - : str.replace(/^\^?(zip:|\/zip)\/+/, `/`); - } break; - } - } - - // Force enable 'allowLocalPluginLoads' - // TypeScript tries to resolve plugins using a path relative to itself - // which doesn't work when using the global cache - // https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238 - // VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but - // TypeScript already does local loads and if this code is running the user trusts the workspace - // https://github.com/microsoft/vscode/issues/45856 - const ConfiguredProject = tsserver.server.ConfiguredProject; - const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype; - ConfiguredProject.prototype.enablePluginsWithOptions = function() { - this.projectService.allowLocalPluginLoads = true; - return originalEnablePluginsWithOptions.apply(this, arguments); - }; - - // And here is the point where we hijack the VSCode <-> TS communications - // by adding ourselves in the middle. We locate everything that looks - // like an absolute path of ours and normalize it. - - const Session = tsserver.server.Session; - const {onMessage: originalOnMessage, send: originalSend} = Session.prototype; - let hostInfo = `unknown`; - - Object.assign(Session.prototype, { - onMessage(/** @type {string} */ message) { - const parsedMessage = JSON.parse(message) - - if ( - parsedMessage != null && - typeof parsedMessage === `object` && - parsedMessage.arguments && - typeof parsedMessage.arguments.hostInfo === `string` - ) { - hostInfo = parsedMessage.arguments.hostInfo; - if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK && process.env.VSCODE_IPC_HOOK.match(/Code\/1\.([1-5][0-9]|60)\./)) { - hostInfo += ` <1.61`; - } - } - - return originalOnMessage.call(this, JSON.stringify(parsedMessage, (key, value) => { - return typeof value === `string` ? fromEditorPath(value) : value; - })); - }, - - send(/** @type {any} */ msg) { - return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => { - return typeof value === `string` ? toEditorPath(value) : value; - }))); - } - }); - - return tsserver; -}; - -if (existsSync(absPnpApiPath)) { - if (!process.versions.pnp) { - // Setup the environment to be able to require typescript/lib/tsserver.js - require(absPnpApiPath).setup(); - } -} - -// Defer to the real typescript/lib/tsserver.js your application uses -module.exports = moduleWrapper(absRequire(`typescript/lib/tsserver.js`)); diff --git a/.yarn/sdks/typescript/lib/tsserverlibrary.js b/.yarn/sdks/typescript/lib/tsserverlibrary.js deleted file mode 100644 index 7a2d65ea..00000000 --- a/.yarn/sdks/typescript/lib/tsserverlibrary.js +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/env node - -const {existsSync} = require(`fs`); -const {createRequire, createRequireFromPath} = require(`module`); -const {resolve} = require(`path`); - -const relPnpApiPath = "../../../../.pnp.cjs"; - -const absPnpApiPath = resolve(__dirname, relPnpApiPath); -const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); - -const moduleWrapper = tsserver => { - if (!process.versions.pnp) { - return tsserver; - } - - const {isAbsolute} = require(`path`); - const pnpApi = require(`pnpapi`); - - const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//); - const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`); - - const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => { - return `${locator.name}@${locator.reference}`; - })); - - // VSCode sends the zip paths to TS using the "zip://" prefix, that TS - // doesn't understand. This layer makes sure to remove the protocol - // before forwarding it to TS, and to add it back on all returned paths. - - function toEditorPath(str) { - // We add the `zip:` prefix to both `.zip/` paths and virtual paths - if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) { - // We also take the opportunity to turn virtual paths into physical ones; - // this makes it much easier to work with workspaces that list peer - // dependencies, since otherwise Ctrl+Click would bring us to the virtual - // file instances instead of the real ones. - // - // We only do this to modules owned by the the dependency tree roots. - // This avoids breaking the resolution when jumping inside a vendor - // with peer dep (otherwise jumping into react-dom would show resolution - // errors on react). - // - const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str; - if (resolved) { - const locator = pnpApi.findPackageLocator(resolved); - if (locator && dependencyTreeRoots.has(`${locator.name}@${locator.reference}`)) { - str = resolved; - } - } - - str = normalize(str); - - if (str.match(/\.zip\//)) { - switch (hostInfo) { - // Absolute VSCode `Uri.fsPath`s need to start with a slash. - // VSCode only adds it automatically for supported schemes, - // so we have to do it manually for the `zip` scheme. - // The path needs to start with a caret otherwise VSCode doesn't handle the protocol - // - // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 - // - // Update Oct 8 2021: VSCode changed their format in 1.61. - // Before | ^zip:/c:/foo/bar.zip/package.json - // After | ^/zip//c:/foo/bar.zip/package.json - // - case `vscode <1.61`: { - str = `^zip:${str}`; - } break; - - case `vscode`: { - str = `^/zip/${str}`; - } break; - - // To make "go to definition" work, - // We have to resolve the actual file system path from virtual path - // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip) - case `coc-nvim`: { - str = normalize(resolved).replace(/\.zip\//, `.zip::`); - str = resolve(`zipfile:${str}`); - } break; - - // Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server) - // We have to resolve the actual file system path from virtual path, - // everything else is up to neovim - case `neovim`: { - str = normalize(resolved).replace(/\.zip\//, `.zip::`); - str = `zipfile:${str}`; - } break; - - default: { - str = `zip:${str}`; - } break; - } - } - } - - return str; - } - - function fromEditorPath(str) { - switch (hostInfo) { - case `coc-nvim`: - case `neovim`: { - str = str.replace(/\.zip::/, `.zip/`); - // The path for coc-nvim is in format of //zipfile://.yarn/... - // So in order to convert it back, we use .* to match all the thing - // before `zipfile:` - return process.platform === `win32` - ? str.replace(/^.*zipfile:\//, ``) - : str.replace(/^.*zipfile:/, ``); - } break; - - case `vscode`: - default: { - return process.platform === `win32` - ? str.replace(/^\^?(zip:|\/zip)\/+/, ``) - : str.replace(/^\^?(zip:|\/zip)\/+/, `/`); - } break; - } - } - - // Force enable 'allowLocalPluginLoads' - // TypeScript tries to resolve plugins using a path relative to itself - // which doesn't work when using the global cache - // https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238 - // VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but - // TypeScript already does local loads and if this code is running the user trusts the workspace - // https://github.com/microsoft/vscode/issues/45856 - const ConfiguredProject = tsserver.server.ConfiguredProject; - const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype; - ConfiguredProject.prototype.enablePluginsWithOptions = function() { - this.projectService.allowLocalPluginLoads = true; - return originalEnablePluginsWithOptions.apply(this, arguments); - }; - - // And here is the point where we hijack the VSCode <-> TS communications - // by adding ourselves in the middle. We locate everything that looks - // like an absolute path of ours and normalize it. - - const Session = tsserver.server.Session; - const {onMessage: originalOnMessage, send: originalSend} = Session.prototype; - let hostInfo = `unknown`; - - Object.assign(Session.prototype, { - onMessage(/** @type {string} */ message) { - const parsedMessage = JSON.parse(message) - - if ( - parsedMessage != null && - typeof parsedMessage === `object` && - parsedMessage.arguments && - typeof parsedMessage.arguments.hostInfo === `string` - ) { - hostInfo = parsedMessage.arguments.hostInfo; - if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK && process.env.VSCODE_IPC_HOOK.match(/Code\/1\.([1-5][0-9]|60)\./)) { - hostInfo += ` <1.61`; - } - } - - return originalOnMessage.call(this, JSON.stringify(parsedMessage, (key, value) => { - return typeof value === `string` ? fromEditorPath(value) : value; - })); - }, - - send(/** @type {any} */ msg) { - return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => { - return typeof value === `string` ? toEditorPath(value) : value; - }))); - } - }); - - return tsserver; -}; - -if (existsSync(absPnpApiPath)) { - if (!process.versions.pnp) { - // Setup the environment to be able to require typescript/lib/tsserverlibrary.js - require(absPnpApiPath).setup(); - } -} - -// Defer to the real typescript/lib/tsserverlibrary.js your application uses -module.exports = moduleWrapper(absRequire(`typescript/lib/tsserverlibrary.js`)); diff --git a/.yarn/sdks/typescript/lib/typescript.js b/.yarn/sdks/typescript/lib/typescript.js deleted file mode 100644 index cbdbf150..00000000 --- a/.yarn/sdks/typescript/lib/typescript.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node - -const {existsSync} = require(`fs`); -const {createRequire, createRequireFromPath} = require(`module`); -const {resolve} = require(`path`); - -const relPnpApiPath = "../../../../.pnp.cjs"; - -const absPnpApiPath = resolve(__dirname, relPnpApiPath); -const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); - -if (existsSync(absPnpApiPath)) { - if (!process.versions.pnp) { - // Setup the environment to be able to require typescript/lib/typescript.js - require(absPnpApiPath).setup(); - } -} - -// Defer to the real typescript/lib/typescript.js your application uses -module.exports = absRequire(`typescript/lib/typescript.js`); diff --git a/.yarn/sdks/typescript/package.json b/.yarn/sdks/typescript/package.json deleted file mode 100644 index 03b3aa3d..00000000 --- a/.yarn/sdks/typescript/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "typescript", - "version": "4.4.4-sdk", - "main": "./lib/typescript.js", - "type": "commonjs" -} diff --git a/.yarnrc.yml b/.yarnrc.yml deleted file mode 100644 index 319dfd72..00000000 --- a/.yarnrc.yml +++ /dev/null @@ -1,7 +0,0 @@ -nodeLinker: pnp - -plugins: - - path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs - spec: "@yarnpkg/plugin-interactive-tools" - -yarnPath: .yarn/releases/yarn-3.1.1.cjs diff --git a/.yarnrc.yml.license b/.yarnrc.yml.license deleted file mode 100644 index 31803f36..00000000 --- a/.yarnrc.yml.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/LICENSES/BSD-2-Clause.txt b/LICENSES/BSD-2-Clause.txt deleted file mode 100644 index b0e20f53..00000000 --- a/LICENSES/BSD-2-Clause.txt +++ /dev/null @@ -1,9 +0,0 @@ -Copyright (c) All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md index 8c0e3939..63c6f1b2 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,13 @@ SPDX-License-Identifier: MIT # DS4 +[![status-badge](https://ci.f3l.de/api/badges/5/status.svg)](https://ci.f3l.de/repos/5) +[![REUSE status](https://api.reuse.software/badge/git.f3l.de/dungeonslayers/ds4)](https://api.reuse.software/info/git.f3l.de/dungeonslayers/ds4) +[![Forge installs](https://img.shields.io/badge/dynamic/json?label=Forge%20Installs&query=package.installs&suffix=%25&url=https%3A%2F%2Fforge-vtt.com%2Fapi%2Fbazaar%2Fpackage%2Fds4&colorB=4aa94a)](https://forge-vtt.com/bazaar#package=ds4) +[![Supported foundry versions](https://img.shields.io/endpoint?url=https://foundryshields.com/version?url=https%3A%2F%2Fgit.f3l.de%2Fapi%2Fpackages%2Fdungeonslayers%2Fgeneric%2Fds4%2Flatest%2Fsystem.json)](https://git.f3l.de/dungeonslayers/ds4) +[![Matrix](https://img.shields.io/matrix/ds4%3Aim.f3l.de?server_fqdn=im.f3l.de&logo=matrix&color=0DBD8B)](https://matrix.to/#/#ds4:im.f3l.de) +[![Ko-fi](https://img.shields.io/badge/Ko--fi-ghostfvtt-00B9FE?logo=kofi)](https://ko-fi.com/ghostfvtt) + An implementation of the [Dungeonslayers] 4 game system for [Foundry Virtual Tabletop]. @@ -19,16 +26,16 @@ To install and use the Dungeonslayers 4 system for Foundry Virtual Tabletop, find it in the list in the **Install System** dialog on the Setup menu of the application. Alternatively, paste the following Manifest URL in that dialog: -https://git.f3l.de/api/v4/projects/dungeonslayers%2Fds4/packages/generic/ds4/latest/system.json +https://git.f3l.de/api/packages/dungeonslayers/generic/ds4/latest/system.json ## Development ### Prerequisites -In order to build this system, recent versions of `node` and `yarn` are -required. Most likely using `npm` also works but only `yarn` is officially -supported. We recommend using the latest lts version of `node`. If you use `nvm` -to manage your `node` versions, you can simply run +In order to build this system, recent versions of `node` and `pnpm` are +required. Most likely using `npm` or `yarn` also works but only `pnpm` is +officially supported. We recommend using the latest lts version of `node`. If +you use `nvm` to manage your `node` versions, you can simply run ``` nvm install @@ -39,7 +46,7 @@ in the project's root directory. You also need to install the project's dependencies. To do so, run ``` -yarn install +pnpm install ``` ### Building @@ -47,13 +54,13 @@ yarn install You can build the project by running ``` -yarn build +pnpm build ``` Alternatively, you can run ``` -yarn watch +pnpm watch ``` to watch for changes and automatically build as necessary. @@ -76,7 +83,7 @@ On platforms other than Linux you need to adjust the path accordingly. Then run ``` -yarn link-package +pnpm link-package ``` ### Running the tests @@ -84,14 +91,12 @@ yarn link-package You can run the tests with the following command: ``` -yarn test +pnpm test ``` ## Contributing -Code and content contributions are accepted. Please feel free to submit issues -to the issue tracker or submit merge requests for code changes. To create an -issue, send a mail to [git+dungeonslayers-ds4-155-issue-@git.f3l.de]. +Code and content contributions are accepted. To report issues, please contact us in [Matrix](https://matrix.to/#/#ds4:im.f3l.de). ## Licensing @@ -107,7 +112,6 @@ author(s). You can find these attributions in [ATTRIBUTION.md](ATTRIBUTION.md). [Dungeonslayers]: https://www.dungeonslayers.net/ [Foundry Virtual Tabletop]: http://foundryvtt.com/ -[git+dungeonslayers-ds4-155-issue-@git.f3l.de]: mailto:git+dungeonslayers-ds4-155-issue-@git.f3l.de [LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT]: https://foundryvtt.com/article/license/ [REUSE]: https://reuse.software/ [.reuse/dep5]: .reuse/dep5 diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 00000000..a3daa65a --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,116 @@ +# SPDX-FileCopyrightText: 2025 Johannes Loher +# +# SPDX-License-Identifier: MIT + +version = 1 +SPDX-PackageName = "ds4" +SPDX-PackageSupplier = "Johannes Loher " +SPDX-PackageDownloadLocation = "https://git.f3l.de/dungeonslayers/ds4" + +[[annotations]] +path = "assets/icons/official/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "assets/icons/game-icons/caro-asercion/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Caro Asercion" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/cathelineau/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Cathelineau" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/darkzaitev/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "DarkZaitzev, http://darkzaitzev.deviantart.com/" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/delapouite/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Delapouite, https://delapouite.com/" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/heavenly-dog/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "HeavenlyDog, http://www.gnomosygoblins.blogspot.com/" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/lorc/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Lorc, http://lorcblog.blogspot.com/" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/sbed/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Sbed, http://opengameart.org/content/95-game-icons" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/skoll/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Skoll" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/willdabeast/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Willdabeast, http://wjbstories.blogspot.com/" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/tokens/devin-night/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Devin Night, https://immortalnights.com/" +SPDX-License-Identifier = "LicenseRef-DevinNightTokenUsageRights" + +[[annotations]] +path = "packs/creatures/**" +precedence = "aggregate" +SPDX-FileCopyrightText = ["2021 Sascha Martens", "2021 Johannes Loher"] +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/items/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/languages-and-scripts/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/racial-abilities/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/special-creature-abilities/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/spells/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Sascha Martens" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/talents/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2022 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 00000000..7401f777 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,8 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +/** + * @type {import("@commitlint/types").UserConfig} + */ +export default { extends: ["@commitlint/config-conventional"] }; diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..1f584aea --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,65 @@ +// SPDX-FileCopyrightText: 2025 Johannes Loher +// +// SPDX-License-Identifier: MIT + +// @ts-check + +import eslint from "@eslint/js"; +import eslintConfigPrettier from "eslint-config-prettier"; +import tseslint from "typescript-eslint"; +import globals from "globals"; + +const foundryGlobals = { + ActiveEffect: false, + ActiveEffectConfig: false, + Actor: false, + ActorSheet: false, + canvas: false, + Canvas: false, + ChatMessage: false, + CONFIG: false, + DocumentSheetConfig: false, + game: false, + Game: false, + Hooks: false, + Item: false, + ItemSheet: false, + Macro: false, + Notifications: false, + ui: false, + loadTemplates: false, + foundry: false, + Dialog: false, + renderTemplate: false, + TokenDocument: false, + Roll: false, + TextEditor: false, + CONST: false, + getProperty: false, + fromUuid: false, +}; + +export default tseslint.config( + { + ignores: ["dist/**", "client", "common"], + }, + eslint.configs.recommended, + tseslint.configs.recommended, + { + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + sourceType: "module", + }, + globals: { ...globals.browser, ...globals.jquery, ...foundryGlobals }, + }, + }, + { + files: ["tools/**", "*"], + languageOptions: { + parserOptions: {}, + globals: globals.node, + }, + }, + eslintConfigPrettier, +); diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 3e74f815..00000000 --- a/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -export default { - preset: "ts-jest", - globals: { - "ts-jest": { - tsconfig: "/spec/tsconfig.spec.json", - }, - }, -}; diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 00000000..8b929d6f --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "module": "es2022", + "target": "ES2022" + }, + "exclude": ["node_modules", "dist"], + "include": ["src", "client", "common"] +} diff --git a/.gitlab/issue_templates/Bug Report.md.license b/jsconfig.json.license similarity index 60% rename from .gitlab/issue_templates/Bug Report.md.license rename to jsconfig.json.license index caa655b8..467ee146 100644 --- a/.gitlab/issue_templates/Bug Report.md.license +++ b/jsconfig.json.license @@ -1,3 +1,3 @@ SPDX-FileCopyrightText: 2022 Johannes Loher -SPDX-License-Identifier: MIT \ No newline at end of file +SPDX-License-Identifier: MIT diff --git a/lang/de.json b/lang/de.json index 2bf3be49..7d49ef08 100644 --- a/lang/de.json +++ b/lang/de.json @@ -1,340 +1,391 @@ { - "DS4.UserInteractionAdd": "Neu", - "DS4.UserInteractionAddItemTitle": "Item Erstellen", - "DS4.UserInteractionEditItemTitle": "Item Bearbeiten", - "DS4.UserInteractionDeleteItemTitle": "Item Löschen", - "DS4.UserInteractionAddEffectTitle": "Effekt Erstellen", - "DS4.UserInteractionEditEffectTitle": "Effekt Bearbeiten", - "DS4.UserInteractionDeleteEffectTitle": "Effekt Löschen", - "DS4.DocumentImageAltText": "Bild von {name}", - "DS4.RollableImageRollableTitle": "Für {name} würfeln", - "DS4.DiceOverlayImageAltText": "Bild eines W20", - "DS4.HeadingValues": "Werte", - "DS4.HeadingBiography": "Biografie", - "DS4.HeadingProperties": "Eigenschaften", - "DS4.HeadingEffects": "Effekte", - "DS4.HeadingInventory": "Inventar", - "DS4.HeadingAbilities": "Fähigkeiten", - "DS4.HeadingSpells": "Zaubersprüche", - "DS4.HeadingDescription": "Beschreibung", - "DS4.AttackType": "Angriffsart", - "DS4.AttackTypeAbbr": "AA", - "DS4.SortByAttackType": "Nach Angriffsart sortieren", - "DS4.DialogAttackTypeSelection": "Welche Angriffsart?", - "DS4.DialogAttributeTraitSelection": "Welches Attribut und welche Eigenschaft?", - "DS4.WeaponBonus": "Waffenbonus", - "DS4.WeaponBonusAbbr": "WB", - "DS4.SortByWeaponBonus": "Nach Waffenbonus sortieren", - "DS4.OpponentDefense": "Gegnerabwehr", - "DS4.OpponentDefenseAbbr": "GA", - "DS4.SortByOpponentDefense": "Nach Gegnerabwehr sortieren", - "DS4.AttackTypeMelee": "Schlagen", - "DS4.AttackTypeRanged": "Schießen", - "DS4.AttackTypeMeleeRanged": "Schlagen + Schießen", - "DS4.Description": "Beschreibung", - "DS4.SortByDescription": "Nach Beschreibung sortieren", - "DS4.Quantity": "Menge", - "DS4.SortByQuantity": "Nach Menge sortieren", - "DS4.PriceGold": "Preis (Gold)", - "DS4.StorageLocation": "Wo gelagert", - "DS4.SortByStorageLocation": "Nach Lagerungsort sortieren", - "DS4.ItemEquipped": "Ausgerüstet", - "DS4.ItemEquippedAbbr": "A", - "DS4.SortByItemEquipped": "Nach Ausgerüstet sortieren", - "DS4.ItemAvailability": "Verfügbarkeit", - "DS4.ItemAvailabilityHamlet": "Dorf", - "DS4.ItemAvailabilityVilage": "Kleinstadt", - "DS4.ItemAvailabilityCity": "Großstadt", - "DS4.ItemAvailabilityElves": "Elfen", - "DS4.ItemAvailabilityDwarves": "Zwerge", - "DS4.ItemAvailabilityUnset": "nicht gesetzt", - "DS4.ItemAvailabilityNowhere": "nirgendwo", - "DS4.ItemName": "Name", - "DS4.SortByItemName": "Nach Name sortieren", - "DS4.ItemTypeWeapon": "Waffe", - "DS4.ItemTypeWeaponPlural": "Waffen", - "DS4.ItemTypeArmor": "Panzerung", - "DS4.ItemTypeArmorPlural": "Panzerungen", - "DS4.ItemTypeShield": "Schild", - "DS4.ItemTypeShieldPlural": "Schilde", - "DS4.ItemTypeSpell": "Zauberspruch", - "DS4.ItemTypeSpellPlural": "Zaubersprüche", - "DS4.ItemTypeEquipment": "Ausrüstung", - "DS4.ItemTypeEquipmentPlural": "Ausrüstung", - "DS4.ItemTypeLoot": "Beute", - "DS4.ItemTypeLootPlural": "Beute", - "DS4.ItemTypeTalent": "Talent", - "DS4.ItemTypeTalentPlural": "Talente", - "DS4.ItemTypeRacialAbility": "Volksfähigkeit", - "DS4.ItemTypeRacialAbilityPlural": "Volksfähigkeiten", - "DS4.ItemTypeLanguage": "Sprache", - "DS4.ItemTypeLanguagePlural": "Sprachen", - "DS4.ItemTypeAlphabet": "Schriftzeichen", - "DS4.ItemTypeAlphabetPlural": "Schriftzeichen", - "DS4.ItemTypeSpecialCreatureAbility": "Besondere Kreaturenfähigkeit", - "DS4.ItemTypeSpecialCreatureAbilityPlural": "Besondere Kreaturenfähigkeiten", - "DS4.ItemWeaponCheckFlavor": "{actor} greift mit {weapon} an.", - "DS4.ItemSpellCheckFlavor": "{actor} wirkt {spell}.", - "DS4.ItemPropertiesArmor": "Panzerungseigenschaften", - "DS4.ItemPropertiesEquipable": "Ausrüstungseigenschaften", - "DS4.ItemPropertiesPhysical": "Physische Eigenschaften", - "DS4.ItemPropertiesProtective": "Schützende Eigenschaften", - "DS4.ItemPropertiesSpecialCreatureAbility": "Besondere Kreaturenfähigkeitseigenschaften", - "DS4.ItemPropertiesSpell": "Zaubereigenschaften", - "DS4.ItemPropertiesTalent": "Talenteigenschaften", - "DS4.ItemPropertiesWeapon": "Waffeneigenschaften", - "DS4.ArmorType": "Panzerungstyp", - "DS4.ArmorTypeAbbr": "PAT", - "DS4.SortByArmorType": "Nach Panzerungstyp sortieren", - "DS4.ArmorMaterialType": "Materialtyp", - "DS4.ArmorMaterialTypeAbbr": "Mat.", - "DS4.SortByArmorMaterialType": "Nach Materialtyp sortieren", - "DS4.ArmorValue": "Panzerungswert", - "DS4.ArmorValueAbbr": "PA", - "DS4.SortByArmorValue": "Nach Panzerungswert sortieren", - "DS4.ArmorTypeBody": "Körper", - "DS4.ArmorTypeBodyAbbr": "Körper", - "DS4.ArmorTypeHelmet": "Helm", - "DS4.ArmorTypeHelmetAbbr": "Helm", - "DS4.ArmorTypeVambrace": "Armschienen", - "DS4.ArmorTypeVambraceAbbr": "Arm", - "DS4.ArmorTypeGreaves": "Beinschienen", - "DS4.ArmorTypeGreavesAbbr": "Bein", - "DS4.ArmorTypeVambraceGreaves": "Armschienen + Beinschienen", - "DS4.ArmorTypeVambraceGreavesAbbr": "A+B", - "DS4.ArmorMaterialTypeCloth": "Stoff", - "DS4.ArmorMaterialTypeClothAbbr": "Stoff", - "DS4.ArmorMaterialTypeLeather": "Leder", - "DS4.ArmorMaterialTypeLeatherAbbr": "Leder", - "DS4.ArmorMaterialTypeChain": "Ketten", - "DS4.ArmorMaterialTypeChainAbbr": "Ketten", - "DS4.ArmorMaterialTypePlate": "Platten", - "DS4.ArmorMaterialTypePlateAbbr": "Platten", - "DS4.ArmorMaterialTypeNatural": "Natürlich", - "DS4.ArmorMaterialTypeNaturalAbbr": "Natürlich", - "DS4.SpellType": "Zauberspruchtyp", - "DS4.SpellTypeAbbr": "T", - "DS4.SortBySpellType": "Nach Zauberspruchtyp sortieren", - "DS4.SpellTypeSpellcasting": "Zaubern", - "DS4.SpellTypeTargetedSpellcasting": "Zielzaubern", - "DS4.SpellCategory": "Kategorie", - "DS4.SpellCategoryHealing": "Heilung", - "DS4.SpellCategoryFire": "Feuer", - "DS4.SpellCategoryIce": "Eis", - "DS4.SpellCategoryLight": "Licht", - "DS4.SpellCategoryDarkness": "Schatten", - "DS4.SpellCategoryMindAffecting": "Geistesbeeinflussend", - "DS4.SpellCategoryElectricity": "Elektrizität", - "DS4.SpellCategoryNone": "Keine", - "DS4.SpellCategoryUnset": "Nicht gesetzt", - "DS4.SpellBonus": "Zauberbonus", - "DS4.SpellBonusAbbr": "ZB", - "DS4.SortBySpellBonus": "Nach Zauberbonus sortieren", - "DS4.SpellMaxDistance": "Reichweite", - "DS4.SpellEffectRadius": "Effektradius", - "DS4.SpellDuration": "Wirkdauer", - "DS4.SpellCooldownDuration": "Abklingzeit", - "DS4.SpellMinimumLevel": "Zugangsstufe", - "DS4.SpellCasterClassHealer": "Heiler", - "DS4.SpellCasterClassSorcerer": "Schwarzmagier", - "DS4.SpellCasterClassWizard": "Zauberer", - "DS4.SpellPrice": "Preis (Gold)", - "DS4.EffectEnabled": "Aktiv", - "DS4.EffectEnabledAbbr": "A", - "DS4.EffectEffectivelyEnabled": "Effektiv Aktiv (unter Betrachtung, ob ein eventuelles Quellen-Item ausgerüstet ist usw.)", - "DS4.EffectEffectivelyEnabledAbbr": "E", - "DS4.EffectLabel": "Bezeichnung", - "DS4.EffectSourceName": "Quelle", - "DS4.EffectFactor": "Faktor (wie oft der Effekt angewendet wird)", - "DS4.EffectFactorAbbr": "F", - "DS4.ActorName": "Name", - "DS4.ActorImageAltText": "Bild des Aktors", - "DS4.ActorTypeCharacter": "Charakter", - "DS4.ActorTypeCreature": "Kreatur", - "DS4.Attribute": "Attribut", - "DS4.AttributeBody": "Körper", - "DS4.AttributeMobility": "Agilität", - "DS4.AttributeMind": "Geist", - "DS4.Trait": "Eigenschaft", - "DS4.TraitStrength": "Stärke", - "DS4.TraitConstitution": "Härte", - "DS4.TraitAgility": "Bewegung", - "DS4.TraitDexterity": "Geschick", - "DS4.TraitIntellect": "Verstand", - "DS4.TraitAura": "Aura", - "DS4.CombatValuesHitPoints": "Lebenskraft", - "DS4.CombatValuesHitPointsCurrent": "Aktuelle Lebenskraft", - "DS4.CombatValuesHitPointsCurrentAbbr": "LK", - "DS4.CombatValuesDefense": "Abwehr", - "DS4.CombatValuesInitiative": "Initiative", - "DS4.CombatValuesMovement": "Laufen", - "DS4.CombatValuesMeleeAttack": "Schlagen", - "DS4.CombatValuesRangedAttack": "Schießen", - "DS4.CombatValuesSpellcasting": "Zaubern", - "DS4.CombatValuesTargetedSpellcasting": "Zielzaubern", - "DS4.CombatValuesHitPointsSheet": "Lebenskraft", - "DS4.CombatValuesDefenseSheet": "Abwehr", - "DS4.CombatValuesInitiativeSheet": "Initiative", - "DS4.CombatValuesMovementSheet": "Laufen", - "DS4.CombatValuesMeleeAttackSheet": "Schlagen", - "DS4.CombatValuesRangedAttackSheet": "Schießen", - "DS4.CombatValuesSpellcastingSheet": "Zaubern", - "DS4.CombatValuesTargetedSpellcastingSheet": "Zielzaubern", - "DS4.CharacterBaseInfoRace": "Volk", - "DS4.CharacterBaseInfoClass": "Klasse", - "DS4.CharacterBaseInfoHeroClass": "Heldenklasse", - "DS4.CharacterBaseInfoCulture": "Kultur", - "DS4.CharacterProgressionLevel": "Stufe", - "DS4.CharacterProgressionLevelAbbr": "ST", - "DS4.CharacterProgressionExperiencePoints": "Erfahrungspunkte", - "DS4.CharacterProgressionExperiencePointsAbbr": "EP", - "DS4.CharacterProgressionTalentPoints": "Talentpunkte", - "DS4.CharacterProgressionProgressPoints": "Lernpunkte", - "DS4.CharacterSlayerPoints": "Slayerpunkte", - "DS4.CharacterSlayerPointsAbbr": "SP", - "DS4.TalentRank": "Rang", - "DS4.SortByTalentRank": "Nach Rang sortieren", - "DS4.TalentRankBase": "Erworben", - "DS4.TalentRankMax": "Maximum", - "DS4.TalentRankMod": "Zusätzlich", - "DS4.TalentRankTotal": "Gesamt", - "DS4.TalentRankOf": "von", - "DS4.CharacterLanguageLanguages": "Sprachen", - "DS4.CharacterLanguageAlphabets": "Schriftzeichen", - "DS4.SpecialCreatureAbilityExperiencePoints": "Erfahrungspunkte", - "DS4.CharacterProfileBiography": "Biographie", - "DS4.CharacterProfileGender": "Geschlecht", - "DS4.CharacterProfileBirthday": "Geburtstag", - "DS4.CharacterProfileBirthplace": "Geburtsort", - "DS4.CharacterProfileAge": "Alter", - "DS4.CharacterProfileHeight": "Größe [cm]", - "DS4.CharacterProfileHairColor": "Haarfarbe", - "DS4.CharacterProfileWeight": "Gewicht [kg]", - "DS4.CharacterProfileEyeColor": "Augenfarbe", - "DS4.CharacterProfileSpecialCharacteristics": "Besondere Eigenschaften", - "DS4.CharacterCurrencyGold": "Gold", - "DS4.CharacterCurrencySilver": "Silber", - "DS4.CharacterCurrencyCopper": "Kupfer", - "DS4.CharacterCurrency": "Währung", - "DS4.CreatureTypeAnimal": "Tier", - "DS4.CreatureTypeConstruct": "Konstrukt", - "DS4.CreatureTypeHumanoid": "Humanoid", - "DS4.CreatureTypeMagicalEntity": "Magisches Wesen", - "DS4.CreatureTypePlantBeing": "Pflanzenwesen", - "DS4.CreatureTypeUndead": "Untot", - "DS4.CreatureSizeCategoryTiny": "Winzig", - "DS4.CreatureSizeCategorySmall": "Klein", - "DS4.CreatureSizeCategoryNormal": "Normal", - "DS4.CreatureSizeCategoryLarge": "Groß", - "DS4.CreatureSizeCategoryHuge": "Riesig", - "DS4.CreatureSizeCategoryColossal": "Gewaltig", - "DS4.CreatureBaseInfoLoot": "Beute", - "DS4.CreatureBaseInfoFoeFactor": "Gegnerhärte", - "DS4.CreatureBaseInfoCreatureType": "Kreaturengruppe", - "DS4.CreatureBaseInfoSizeCategory": "Größenkategorie", - "DS4.CreatureBaseInfoExperiencePoints": "Erfahrungspunkte", - "DS4.CreatureBaseInfoDescription": "Beschreibung", - "DS4.WarningManageActiveEffectOnOwnedItem": "Das Verwalten von aktiven Effekten innerhalb eines besessen Items wird derzeit nicht unterstützt und wird in einem nachfolgenden Update hinzugefügt. Falls Sie eigentlich den auf den Aktor übertragenen Effekt verwalten wollen, können Sie dies im 'Effekte'-Tab des Aktorbogens tun.", - "DS4.WarningActorCannotOwnItem": "Der Aktor '{actorName}' vom Typ '{actorType}' kann das Item '{itemName}' vom Typ '{itemType}' nicht besitzen.", - "DS4.ErrorDiceCoupFumbleOverlap": "Es gibt eine Überlappung zwischen Patzern und Immersiegen.", - "DS4.ErrorSlayingDiceRecursionLimitExceeded": "Die maximale Rekursionstiefe für slayende Würfelwürfe wurde überschritten.", - "DS4.ErrorInvalidNumberOfDice": "Ungültige Anzahl an Würfeln.", - "DS4.ErrorDuringMigration": "Fehler während der Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion}. Der Fehler trat während der Ausführung des Migrationsskripts mit der Version {migrationVersion} auf. Spätere Migrationsskripte wurden nicht ausgeführt. Mehr Details finden Sie in der Entwicklerkonsole (F12).", - "DS4.ErrorCannotRollUnownedItem": "Für das Item '{name}' ({id}) kann nicht gewürfelt werden, da es keinem Aktor gehört.", - "DS4.ErrorRollingForItemTypeNotPossible": "Würfeln ist für Items vom Typ '{type}' nicht möglich.", - "DS4.ErrorWrongItemType": "Ein Item vom Type '{expectedType}' wurde erwartet aber das Item '{name}' ({id}) ist vom Typ '{actualType}'.", - "DS4.ErrorUnexpectedAttackType": "Unerwartete Angriffsart '{actualType}', erwartete Angriffsarten: {expectedTypes}", - "DS4.ErrorUnexpectedAttribute": "Unerwartetes Attribut '{actualAttribute}', erwartete Attribute: {expectedTypes}", - "DS4.ErrorUnexpectedTrait": "Unerwartete Eigenschaft '{actualTrait}', erwartete Eigenschaften: {expectedTypes}", - "DS4.ErrorCanvasIsNotInitialized": "Canvas ist noch nicht initialisiert.", - "DS4.ErrorCannotDragMissingCheck": "Die Probe '{check}' per Drag & Drop zu ziehen ist nicht möglich, denn sie existiert nicht.", - "DS4.WarningItemMustBeEquippedToBeRolled": "Um für das Item '{name}' ({id}) vom Typ '{type}' zu würfeln, muss es ausgerüstet sein.", - "DS4.WarningMustControlActorToUseRollItemMacro": "Um ein Item-Würfel-Makro zu nutzen muss ein Aktor kontrolliert werden.", - "DS4.WarningMustControlActorToUseRollCheckMacro": "Um ein Proben-Würfel-Makro zu nutzen muss ein Aktor kontrolliert werden.", - "DS4.WarningControlledActorDoesNotHaveItem": "Der kontrollierte Aktor '{actorName}' ({actorId}) hat kein Item mit der ID '{itemId}'.", - "DS4.WarningItemIsNotRollable": "Für das Item '{name}' ({id}) vom Typ '{type}' kann nicht gewürfelt werden.", - "DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Makros können nur für besessene Items angelegt werden.", - "DS4.WarningInvalidCheckDropped": "Eine ungültige Probe wurde auf die Hotbar gezogen.", - "DS4.InfoManuallyEnterSpellBonus": "Der korrekte Wert für den Zauberbonus '{spellBonus}' des Zaubers '{name}' muss manuell angegeben werden.", - "DS4.InfoSystemUpdateStart": "Aktualisiere DS4 System von Migrationsversion {currentVersion} auf {targetVersion}. Bitte haben Sie etwas Geduld, schließen Sie nicht das Spiel und fahren Sie nicht den Server herunter.", - "DS4.InfoSystemUpdateCompleted": "Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion} erfolgreich!", - "DS4.UnitRounds": "Runden", - "DS4.UnitRoundsAbbr": "Rnd", - "DS4.UnitMinutes": "Minuten", - "DS4.UnitMinutesAbbr": "min", - "DS4.UnitHours": "Stunden", - "DS4.UnitHoursAbbr": "h", - "DS4.UnitDays": "Tage", - "DS4.UnitDaysAbbr": "d", - "DS4.UnitMeters": "Meter", - "DS4.UnitMetersAbbr": "m", - "DS4.UnitKilometers": "Kilometer", - "DS4.UnitKilometersAbbr": "km", - "DS4.UnitCustom": "individuell", - "DS4.UnitCustomAbbr": " ", - "DS4.GenericOkButton": "OK", - "DS4.GenericCancelButton": "Abbrechen", - "DS4.DialogRollOptionsDefaultTitle": "Proben-Optionen", - "DS4.ErrorUnexpectedHtmlType": "Typfehler: Erwartet wurde '{exType}', tatsächlich erhalten wurde '{realType}'.", - "DS4.ErrorCouldNotFindForm": "Konnte HTML Element '{htmlElement}' nicht finden.", - "DS4.ErrorActorDoesNotHaveItem": "Der Aktor '{actor}' hat kein Item mit der ID '{id}'.", - "DS4.ErrorUnexpectedError": "Es gab einen unerwarteten Fehler im Dungeonslayers 4 System. Für mehr Details schauen Sie bitte in die Konsole (F12).", - "DS4.ErrorItemDoesNotHaveEffect": "Das Item '{item}' hat keinen Effekt mit der ID '{id}'.", - "DS4.ErrorActorDoesNotHaveEffect": "Der Aktor '{actor}' hat keinen Effekt mit der ID '{id}'.", - "DS4.DialogRollOptionsCheckTargetNumberLabel": "Probenwert", - "DS4.DialogRollOptionsGMModifierLabel": "SL-Modifikator", - "DS4.DialogRollOptionsMaximumCoupResultLabel": "Immersieg bis", - "DS4.DialogRollOptionsMinimumFumbleResultLabel": "Patzer ab", - "DS4.DialogRollOptionsRollModeLabel": "Sichtbarkeit", - "DS4.TooltipBaseValue": "Basiswert", - "DS4.TooltipModifier": "Modifikator", - "DS4.TooltipEffects": "Effekte", - "DS4.SettingUseSlayingDiceForAutomatedChecksName": "Slayende Würfel", - "DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Benutze Slayende Würfel bei automatisierten Proben.", - "DS4.SettingShowSlayerPointsName": "Slayerpunkte", - "DS4.SettingShowSlayerPointsHint": "Zeige Slayerpunkte im Charakterbogen an.", - "DS4.Checks": "Proben", - "DS4.ChecksAppraise": "Schätzen", - "DS4.ChecksChangeSpell": "Zauber Wechseln", - "DS4.ChecksClimb": "Klettern", - "DS4.ChecksCommunicate": "Verständigen", - "DS4.ChecksDecipherScript": "Inschrift Entziffern", - "DS4.ChecksDefend": "Abwehren", - "DS4.ChecksDefyPoison": "Gift Trotzen", - "DS4.ChecksDisableTraps": "Fallen Entschärfen", - "DS4.ChecksFeatOfStrength": "Kraftakt", - "DS4.ChecksFlirt": "Flirten", - "DS4.ChecksHaggle": "Feilschen", - "DS4.ChecksHide": "Verbergen", - "DS4.ChecksIdentifyMagic": "Magie Erkennen", - "DS4.ChecksJump": "Springen", - "DS4.ChecksKnowledge": "Wissen", - "DS4.ChecksOpenLock": "Schlösser Öffnen", - "DS4.ChecksPerception": "Bemerken", - "DS4.ChecksPickPocket": "Taschendiebstahl", - "DS4.ChecksReadTracks": "Spuren Lesen", - "DS4.ChecksResistDisease": "Krankheit Trotzen", - "DS4.ChecksRide": "Reiten", - "DS4.ChecksSearch": "Suchen", - "DS4.ChecksSenseMagic": "Magie Erspüren", - "DS4.ChecksSneak": "Schleichen", - "DS4.ChecksStartFire": "Feuer Machen", - "DS4.ChecksSwim": "Schwimmen", - "DS4.ChecksWakeUp": "Erwachen", - "DS4.ChecksWorkMechanism": "Mechanismus Öffnen", - "DS4.ActorCheckFlavor": "{actor} würfelt eine {check} Probe.", - "DS4.ActorGenericCheckFlavor": "{actor} würfelt eine Probe gegen {attribute} + {trait}.", - "DS4.CheckTooltip": "{check} Probe würfeln", - "DS4.NewWeaponName": "Neue Waffe", - "DS4.NewArmorName": "Neue Panzerung", - "DS4.NewShieldName": "Neuer Schild", - "DS4.NewSpellName": "Neuer Zauberspruch", - "DS4.NewEquipmentName": "Neue Ausrüstung", - "DS4.NewLootName": "Neue Beute", - "DS4.NewTalentName": "Neues Talent", - "DS4.NewRacialAbilityName": "Neue Volksfähigkeit", - "DS4.NewLanguageName": "Neue Sprache", - "DS4.NewAlphabetName": "Neue Schriftzeichen", - "DS4.NewSpecialCreatureAbilityName": "Neue Besondere Kreaturenfähigkeit", - "DS4.NewEffectLabel": "Neuer Effekt" + "DS4.UserInteractionAdd": "Neu", + "DS4.UserInteractionAddItemTitle": "Item Erstellen", + "DS4.UserInteractionEditItemTitle": "Item Bearbeiten", + "DS4.UserInteractionDeleteItemTitle": "Item Löschen", + "DS4.UserInteractionAddEffectTitle": "Effekt Erstellen", + "DS4.UserInteractionEditEffectTitle": "Effekt Bearbeiten", + "DS4.UserInteractionDeleteEffectTitle": "Effekt Löschen", + "DS4.DocumentImageAltText": "Bild von {name}", + "DS4.RollableImageRollableTitle": "Für {name} würfeln", + "DS4.DiceOverlayImageAltText": "Bild eines W20", + "DS4.HeadingValues": "Werte", + "DS4.HeadingBiography": "Biografie", + "DS4.HeadingProperties": "Eigenschaften", + "DS4.HeadingEffects": "Effekte", + "DS4.HeadingInventory": "Inventar", + "DS4.HeadingAbilities": "Fähigkeiten", + "DS4.HeadingSpells": "Zaubersprüche", + "DS4.HeadingDescription": "Beschreibung", + "DS4.AttackType": "Angriffsart", + "DS4.AttackTypeAbbr": "AA", + "DS4.SortByAttackType": "Nach Angriffsart sortieren", + "DS4.DialogAttackTypeSelection": "Welche Angriffsart?", + "DS4.DialogAttributeTraitSelection": "Welches Attribut und welche Eigenschaft?", + "DS4.WeaponBonus": "Waffenbonus", + "DS4.WeaponBonusAbbr": "WB", + "DS4.SortByWeaponBonus": "Nach Waffenbonus sortieren", + "DS4.OpponentDefense": "Gegnerabwehr", + "DS4.OpponentDefenseAbbr": "GA", + "DS4.SortByOpponentDefense": "Nach Gegnerabwehr sortieren", + "DS4.OpponentDefenseMelee": "Gegnerabwehr für Schlagen", + "DS4.OpponentDefenseRanged": "Gegnerabwehr für Schießen", + "DS4.AttackTypeMelee": "Schlagen", + "DS4.AttackTypeRanged": "Schießen", + "DS4.AttackTypeMeleeRanged": "Schlagen + Schießen", + "DS4.Description": "Beschreibung", + "DS4.SortByDescription": "Nach Beschreibung sortieren", + "DS4.Quantity": "Menge", + "DS4.SortByQuantity": "Nach Menge sortieren", + "DS4.PriceGold": "Preis (Gold)", + "DS4.StorageLocation": "Wo gelagert", + "DS4.SortByStorageLocation": "Nach Lagerungsort sortieren", + "DS4.ItemEquipped": "Ausgerüstet", + "DS4.ItemEquippedAbbr": "A", + "DS4.SortByItemEquipped": "Nach Ausgerüstet sortieren", + "DS4.ItemAvailability": "Verfügbarkeit", + "DS4.ItemAvailabilityHamlet": "Dorf", + "DS4.ItemAvailabilityVilage": "Kleinstadt", + "DS4.ItemAvailabilityCity": "Großstadt", + "DS4.ItemAvailabilityElves": "Elfen", + "DS4.ItemAvailabilityDwarves": "Zwerge", + "DS4.ItemAvailabilityUnset": "nicht gesetzt", + "DS4.ItemAvailabilityNowhere": "nirgendwo", + "DS4.ItemName": "Name", + "DS4.SortByItemName": "Nach Name sortieren", + "DS4.ItemTypeWeapon": "Waffe", + "DS4.ItemTypeWeaponPlural": "Waffen", + "DS4.ItemTypeArmor": "Panzerung", + "DS4.ItemTypeArmorPlural": "Panzerungen", + "DS4.ItemTypeShield": "Schild", + "DS4.ItemTypeShieldPlural": "Schilde", + "DS4.ItemTypeSpell": "Zauberspruch", + "DS4.ItemTypeSpellPlural": "Zaubersprüche", + "DS4.ItemTypeEquipment": "Ausrüstung", + "DS4.ItemTypeEquipmentPlural": "Ausrüstung", + "DS4.ItemTypeLoot": "Beute", + "DS4.ItemTypeLootPlural": "Beute", + "DS4.ItemTypeTalent": "Talent", + "DS4.ItemTypeTalentPlural": "Talente", + "DS4.ItemTypeRacialAbility": "Volksfähigkeit", + "DS4.ItemTypeRacialAbilityPlural": "Volksfähigkeiten", + "DS4.ItemTypeLanguage": "Sprache", + "DS4.ItemTypeLanguagePlural": "Sprachen", + "DS4.ItemTypeAlphabet": "Schriftzeichen", + "DS4.ItemTypeAlphabetPlural": "Schriftzeichen", + "DS4.ItemTypeSpecialCreatureAbility": "Besondere Kreaturenfähigkeit", + "DS4.ItemTypeSpecialCreatureAbilityPlural": "Besondere Kreaturenfähigkeiten", + "DS4.ItemWeaponCheckFlavor": "{actor} greift mit {weapon} an.", + "DS4.ItemWeaponCheckFlavorWithOpponentDefense": "{actor} greift mit {weapon} an.
Gegnerabwehr: {opponentDefense}", + "DS4.ItemSpellCheckFlavor": "{actor} wirkt {spell}.", + "DS4.ItemSpellCheckFlavorWithOpponentDefense": "{actor} wirkt {spell}.
Gegnerabwehr: {opponentDefense}", + "DS4.ItemPropertiesArmor": "Panzerungseigenschaften", + "DS4.ItemPropertiesEquipable": "Ausrüstungseigenschaften", + "DS4.ItemPropertiesPhysical": "Physische Eigenschaften", + "DS4.ItemPropertiesProtective": "Schützende Eigenschaften", + "DS4.ItemPropertiesSpecialCreatureAbility": "Besondere Kreaturenfähigkeitseigenschaften", + "DS4.ItemPropertiesSpell": "Zaubereigenschaften", + "DS4.ItemPropertiesTalent": "Talenteigenschaften", + "DS4.ItemPropertiesWeapon": "Waffeneigenschaften", + "DS4.ArmorType": "Panzerungstyp", + "DS4.ArmorTypeAbbr": "PAT", + "DS4.SortByArmorType": "Nach Panzerungstyp sortieren", + "DS4.ArmorMaterialType": "Materialtyp", + "DS4.ArmorMaterialTypeAbbr": "Mat.", + "DS4.SortByArmorMaterialType": "Nach Materialtyp sortieren", + "DS4.ArmorValue": "Panzerungswert", + "DS4.ArmorValueAbbr": "PA", + "DS4.SortByArmorValue": "Nach Panzerungswert sortieren", + "DS4.ArmorTypeBody": "Körper", + "DS4.ArmorTypeBodyAbbr": "Körper", + "DS4.ArmorTypeHelmet": "Helm", + "DS4.ArmorTypeHelmetAbbr": "Helm", + "DS4.ArmorTypeVambrace": "Armschienen", + "DS4.ArmorTypeVambraceAbbr": "Arm", + "DS4.ArmorTypeGreaves": "Beinschienen", + "DS4.ArmorTypeGreavesAbbr": "Bein", + "DS4.ArmorTypeVambraceGreaves": "Armschienen + Beinschienen", + "DS4.ArmorTypeVambraceGreavesAbbr": "A+B", + "DS4.ArmorMaterialTypeCloth": "Stoff", + "DS4.ArmorMaterialTypeClothAbbr": "Stoff", + "DS4.ArmorMaterialTypeLeather": "Leder", + "DS4.ArmorMaterialTypeLeatherAbbr": "Leder", + "DS4.ArmorMaterialTypeChain": "Ketten", + "DS4.ArmorMaterialTypeChainAbbr": "Ketten", + "DS4.ArmorMaterialTypePlate": "Platten", + "DS4.ArmorMaterialTypePlateAbbr": "Platten", + "DS4.ArmorMaterialTypeNatural": "Natürlich", + "DS4.ArmorMaterialTypeNaturalAbbr": "Natürlich", + "DS4.SpellType": "Zauberspruchtyp", + "DS4.SpellTypeAbbr": "T", + "DS4.SpellTypeDescription": "Der Typ des Zauberspruchs.", + "DS4.SortBySpellType": "Nach Zauberspruchtyp sortieren", + "DS4.SpellTypeSpellcasting": "Zaubern", + "DS4.SpellTypeTargetedSpellcasting": "Zielzaubern", + "DS4.SpellGroups": "Zaubergruppen", + "DS4.SpellGroupsDescription": "Zaubergruppen, denen der Zauberspruch zugehörig ist.", + "DS4.SpellGroupLightning": "Blitz", + "DS4.SpellGroupEarth": "Erde, Fels, Stein", + "DS4.SpellGroupWater": "Wasser", + "DS4.SpellGroupIce": "Eis, Frost", + "DS4.SpellGroupFire": "Feuer", + "DS4.SpellGroupHealing": "Heilung", + "DS4.SpellGroupLight": "Licht", + "DS4.SpellGroupAir": "Luft", + "DS4.SpellGroupTransport": "Transport", + "DS4.SpellGroupDamage": "Schaden", + "DS4.SpellGroupShadow": "Schatten", + "DS4.SpellGroupProtection": "Schutz", + "DS4.SpellGroupMindAffecting": "Geistesbeeinflussend", + "DS4.SpellGroupDemonology": "Dämonologie", + "DS4.SpellGroupNecromancy": "Nekromantie", + "DS4.SpellGroupTransmutation": "Verwandlung", + "DS4.SpellGroupArea": "Fläche", + "DS4.SpellModifier": "Zauberbonus", + "DS4.SpellModifierNumerical": "Zauberbonus (numerisch)", + "DS4.SpellModifierComplex": "Zauberbonus (komplex)", + "DS4.SpellModifierAbbr": "ZB", + "DS4.SpellModifierNumericalDescription": "Der numerische Zauberbonus auf die Probe.", + "DS4.SpellModifierComplexDescription": "Ein komplexer Zauberbonus auf die Probe (zum Beispiel abhängig von Werten des Ziels). Wenn diese Art von Zauberbonus angegeben ist, wird der numerische ignoriert.", + "DS4.SortBySpellModifier": "Nach Zauberbonus sortieren", + "DS4.SpellDistance": "Distanz", + "DS4.SpellDistanceDescription": "Die maximale Entfernung zum Ziel. „Selbst“ bedeutet, dass nur der Zauberwirker selbst das Ziel des Zaubers sein kann.", + "DS4.SpellEffectRadius": "Wirkungsradius", + "DS4.SpellEffectRadiusDescription": "Der Wirkungsradius des Zaubers.", + "DS4.SpellDuration": "Dauer", + "DS4.SpellDurationDescription": "Die Wirkungszeit des Zaubers.", + "DS4.CooldownDuration": "Abklingzeit", + "DS4.CooldownDurationDescription": "Die Dauer, die der Zauber nach erfolgreichem Wirken nicht einsetzbar ist.", + "DS4.CooldownDuration0R": "0 Kampfrunden", + "DS4.CooldownDuration1R": "1 Kampfrunde", + "DS4.CooldownDuration2R": "2 Kampfrunden", + "DS4.CooldownDuration5R": "5 Kampfrunden", + "DS4.CooldownDuration10R": "10 Kampfrunden", + "DS4.CooldownDuration100R": "100 Kampfrunden", + "DS4.CooldownDuration1D": "1 Tag", + "DS4.CooldownDurationD20D": "W20 Tage", + "DS4.SpellAllowsDefense": "Erlaubt Abwehr", + "DS4.SpellAllowsDefenseDescription": "Ist eine Abwehren-Probe gegen diesen Zauber erlaubt?", + "DS4.SpellMinimumLevel": "Zugangsstufe", + "DS4.SpellMinimumLevelDescription": "Die minimale Stufe, ab der ein Zauberwirker den Zauberspruch erlernen kann.", + "DS4.SpellCasterClassHealer": "Heiler", + "DS4.SpellCasterClassSorcerer": "Schwarzmagier", + "DS4.SpellCasterClassWizard": "Zauberer", + "DS4.SpellPrice": "Preis (Gold)", + "DS4.SpellPriceDescription": "Der Kaufpreis des Zauberspruchs.", + "DS4.EffectEnabled": "Eingeschaltet", + "DS4.EffectEnabledAbbr": "E", + "DS4.EffectActive": "Aktiv (unter Betrachtung, ob ein eventuelles Quellen-Item ausgerüstet ist usw.)", + "DS4.EffectActiveAbbr": "A", + "DS4.EffectName": "Name", + "DS4.EffectSourceName": "Quelle", + "DS4.EffectFactor": "Faktor (wie oft der Effekt angewendet wird)", + "DS4.EffectFactorAbbr": "F", + "DS4.ActorName": "Name", + "DS4.ActorImageAltText": "Bild des Aktors", + "DS4.ActorTypeCharacter": "Charakter", + "DS4.ActorTypeCreature": "Kreatur", + "DS4.Attribute": "Attribut", + "DS4.AttributeBody": "Körper", + "DS4.AttributeMobility": "Agilität", + "DS4.AttributeMind": "Geist", + "DS4.Trait": "Eigenschaft", + "DS4.TraitStrength": "Stärke", + "DS4.TraitConstitution": "Härte", + "DS4.TraitAgility": "Bewegung", + "DS4.TraitDexterity": "Geschick", + "DS4.TraitIntellect": "Verstand", + "DS4.TraitAura": "Aura", + "DS4.CombatValuesHitPoints": "Lebenskraft", + "DS4.CombatValuesHitPointsCurrent": "Aktuelle Lebenskraft", + "DS4.CombatValuesHitPointsCurrentAbbr": "LK", + "DS4.CombatValuesDefense": "Abwehr", + "DS4.CombatValuesInitiative": "Initiative", + "DS4.CombatValuesMovement": "Laufen", + "DS4.CombatValuesMeleeAttack": "Schlagen", + "DS4.CombatValuesRangedAttack": "Schießen", + "DS4.CombatValuesSpellcasting": "Zaubern", + "DS4.CombatValuesTargetedSpellcasting": "Zielzaubern", + "DS4.CombatValuesHitPointsSheet": "Lebenskraft", + "DS4.CombatValuesDefenseSheet": "Abwehr", + "DS4.CombatValuesInitiativeSheet": "Initiative", + "DS4.CombatValuesMovementSheet": "Laufen", + "DS4.CombatValuesMeleeAttackSheet": "Schlagen", + "DS4.CombatValuesRangedAttackSheet": "Schießen", + "DS4.CombatValuesSpellcastingSheet": "Zaubern", + "DS4.CombatValuesTargetedSpellcastingSheet": "Zielzaubern", + "DS4.CharacterBaseInfoRace": "Volk", + "DS4.CharacterBaseInfoClass": "Klasse", + "DS4.CharacterBaseInfoHeroClass": "Heldenklasse", + "DS4.CharacterBaseInfoCulture": "Kultur", + "DS4.CharacterProgressionLevel": "Stufe", + "DS4.CharacterProgressionLevelAbbr": "ST", + "DS4.CharacterProgressionExperiencePoints": "Erfahrungspunkte", + "DS4.CharacterProgressionExperiencePointsAbbr": "EP", + "DS4.CharacterProgressionTalentPoints": "Talentpunkte", + "DS4.CharacterProgressionProgressPoints": "Lernpunkte", + "DS4.CharacterSlayerPoints": "Slayerpunkte", + "DS4.CharacterSlayerPointsAbbr": "SP", + "DS4.TalentRank": "Rang", + "DS4.SortByTalentRank": "Nach Rang sortieren", + "DS4.TalentRankBase": "Erworben", + "DS4.TalentRankMax": "Maximum", + "DS4.TalentRankMod": "Zusätzlich", + "DS4.TalentRankTotal": "Gesamt", + "DS4.CharacterLanguageLanguages": "Sprachen", + "DS4.CharacterLanguageAlphabets": "Schriftzeichen", + "DS4.SpecialCreatureAbilityExperiencePoints": "Erfahrungspunkte", + "DS4.CharacterProfileBiography": "Biographie", + "DS4.CharacterProfileGender": "Geschlecht", + "DS4.CharacterProfileBirthday": "Geburtstag", + "DS4.CharacterProfileBirthplace": "Geburtsort", + "DS4.CharacterProfileAge": "Alter", + "DS4.CharacterProfileHeight": "Größe [cm]", + "DS4.CharacterProfileHairColor": "Haarfarbe", + "DS4.CharacterProfileWeight": "Gewicht [kg]", + "DS4.CharacterProfileEyeColor": "Augenfarbe", + "DS4.CharacterProfileSpecialCharacteristics": "Besondere Eigenschaften", + "DS4.CharacterCurrencyGold": "Gold", + "DS4.CharacterCurrencySilver": "Silber", + "DS4.CharacterCurrencyCopper": "Kupfer", + "DS4.CharacterCurrency": "Währung", + "DS4.CreatureTypeAnimal": "Tier", + "DS4.CreatureTypeConstruct": "Konstrukt", + "DS4.CreatureTypeHumanoid": "Humanoid", + "DS4.CreatureTypeMagicalEntity": "Magisches Wesen", + "DS4.CreatureTypePlantBeing": "Pflanzenwesen", + "DS4.CreatureTypeUndead": "Untot", + "DS4.CreatureSizeCategoryTiny": "Winzig", + "DS4.CreatureSizeCategorySmall": "Klein", + "DS4.CreatureSizeCategoryNormal": "Normal", + "DS4.CreatureSizeCategoryLarge": "Groß", + "DS4.CreatureSizeCategoryHuge": "Riesig", + "DS4.CreatureSizeCategoryColossal": "Gewaltig", + "DS4.CreatureBaseInfoLoot": "Beute", + "DS4.CreatureBaseInfoFoeFactor": "Gegnerhärte", + "DS4.CreatureBaseInfoCreatureType": "Kreaturengruppe", + "DS4.CreatureBaseInfoSizeCategory": "Größenkategorie", + "DS4.CreatureBaseInfoExperiencePoints": "Erfahrungspunkte", + "DS4.CreatureBaseInfoDescription": "Beschreibung", + "DS4.WarningActorCannotOwnItem": "Der Aktor '{actorName}' vom Typ '{actorType}' kann das Item '{itemName}' vom Typ '{itemType}' nicht besitzen.", + "DS4.ErrorDiceCoupFumbleOverlap": "Es gibt eine Überlappung zwischen Patzern und Immersiegen.", + "DS4.ErrorSlayingDiceRecursionLimitExceeded": "Die maximale Rekursionstiefe für slayende Würfelwürfe wurde überschritten.", + "DS4.ErrorInvalidNumberOfDice": "Ungültige Anzahl an Würfeln.", + "DS4.ErrorInvalidActorType": "Ungültiger Aktortyp '{type}'.", + "DS4.ErrorInvalidItemType": "Ungültiger Itemtyp '{type}'.", + "DS4.ErrorDuringMigration": "Fehler während der Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion}. Der Fehler trat während der Ausführung des Migrationsskripts mit der Version {migrationVersion} auf. Spätere Migrationsskripte wurden nicht ausgeführt. Mehr Details finden Sie in der Entwicklerkonsole (F12).", + "DS4.ErrorDuringCompendiumMigration": "Fehler während der Aktualisierung Kompendiums '{pack}' für DS4 von Migrationsversion {currentVersion} auf {targetVersion}. Der Fehler trat während der Ausführung des Migrationsskripts mit der Version {migrationVersion} auf. Spätere Migrationsskripte wurden nicht ausgeführt. Mehr Details finden Sie in der Entwicklerkonsole (F12).", + "DS4.ErrorCannotRollUnownedItem": "Für das Item '{name}' ({id}) kann nicht gewürfelt werden, da es keinem Aktor gehört.", + "DS4.ErrorRollingForItemTypeNotPossible": "Würfeln ist für Items vom Typ '{type}' nicht möglich.", + "DS4.ErrorUnexpectedAttackType": "Unerwartete Angriffsart '{actualType}', erwartete Angriffsarten: {expectedTypes}", + "DS4.ErrorUnexpectedAttribute": "Unerwartetes Attribut '{actualAttribute}', erwartete Attribute: {expectedTypes}", + "DS4.ErrorUnexpectedTrait": "Unerwartete Eigenschaft '{actualTrait}', erwartete Eigenschaften: {expectedTypes}", + "DS4.ErrorCanvasIsNotInitialized": "Canvas ist noch nicht initialisiert.", + "DS4.ErrorCannotDragMissingCheck": "Die Probe '{check}' per Drag & Drop zu ziehen ist nicht möglich, denn sie existiert nicht.", + "DS4.WarningItemMustBeEquippedToBeRolled": "Um für das Item '{name}' ({id}) vom Typ '{type}' zu würfeln, muss es ausgerüstet sein.", + "DS4.WarningMustControlActorToUseRollItemMacro": "Um ein Item-Würfel-Makro zu nutzen muss ein Aktor kontrolliert werden.", + "DS4.WarningMustControlActorToUseRollCheckMacro": "Um ein Proben-Würfel-Makro zu nutzen muss ein Aktor kontrolliert werden.", + "DS4.WarningControlledActorDoesNotHaveItem": "Der kontrollierte Aktor '{actorName}' ({actorId}) hat kein Item mit der ID '{itemId}'.", + "DS4.WarningItemIsNotRollable": "Für das Item '{name}' ({id}) vom Typ '{type}' kann nicht gewürfelt werden.", + "DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Makros können nur für besessene Items angelegt werden.", + "DS4.WarningInvalidCheckDropped": "Eine ungültige Probe wurde auf die Hotbar gezogen.", + "DS4.WarningSystemUpdateCompletedWithErrors": "Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion} abgeschlossen, aber es sind Fehler aufgetreten. Bitte prüfen Sie in der Entwicklerkonsole, ob es sich um relevante Fehler handelt, oder ob sie ignoriert werden können. Insbesondere kann https://github.com/foundryvtt/foundryvtt/issues/9672 zu Fehlern führen, die ignoriert werden können.", + "DS4.InfoManuallyEnterSpellModifier": "Der korrekte Wert für den Zauberbonus '{spellModifier}' des Zaubers '{name}' muss manuell angegeben werden.", + "DS4.InfoSystemUpdateStart": "Aktualisiere DS4 System von Migrationsversion {currentVersion} auf {targetVersion}. Bitte haben Sie etwas Geduld, schließen Sie nicht das Spiel und fahren Sie nicht den Server herunter.", + "DS4.InfoSystemUpdateCompletedSuccessfully": "Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion} erfolgreich!", + "DS4.InfoCompendiumMigrationStart": "Aktualisiere Kompendium '{pack}' für DS4 von Migrationsversion {currentVersion} auf {targetVersion}. Bitte haben Sie etwas Geduld, schließen Sie nicht das Spiel und fahren Sie nicht den Server herunter.", + "DS4.InfoCompendiumMigrationCompleted": "Aktualisierung des Kompendiums '{pack}' für DS4 von Migrationsversion {currentVersion} auf {targetVersion} erfolgreich!", + "DS4.UnitRounds": "Runden", + "DS4.UnitRoundsAbbr": "Rnd", + "DS4.UnitMinutes": "Minuten", + "DS4.UnitMinutesAbbr": "min", + "DS4.UnitHours": "Stunden", + "DS4.UnitHoursAbbr": "h", + "DS4.UnitDays": "Tage", + "DS4.UnitDaysAbbr": "d", + "DS4.UnitMeters": "Meter", + "DS4.UnitMetersAbbr": "m", + "DS4.UnitKilometers": "Kilometer", + "DS4.UnitKilometersAbbr": "km", + "DS4.UnitCustom": "individuell", + "DS4.UnitCustomAbbr": " ", + "DS4.GenericOkButton": "OK", + "DS4.GenericCancelButton": "Abbrechen", + "DS4.DialogRollOptionsDefaultTitle": "Proben-Optionen", + "DS4.ErrorUnexpectedHtmlType": "Typfehler: Erwartet wurde '{exType}', tatsächlich erhalten wurde '{realType}'.", + "DS4.ErrorCouldNotFindForm": "Konnte HTML Element '{htmlElement}' nicht finden.", + "DS4.ErrorActorDoesNotHaveItem": "Der Aktor '{actor}' hat kein Item mit der UUID '{uuid}'.", + "DS4.ErrorUnexpectedError": "Es gab einen unerwarteten Fehler im Dungeonslayers 4 System. Für mehr Details schauen Sie bitte in die Konsole (F12).", + "DS4.ErrorItemDoesNotHaveEffect": "Das Item '{item}' hat keinen Effekt mit der ID '{id}'.", + "DS4.ErrorActorDoesNotHaveEffect": "Der Aktor '{actor}' hat keinen Effekt mit der UUID '{uuid}'.", + "DS4.DialogRollOptionsCheckTargetNumberLabel": "Probenwert", + "DS4.DialogRollOptionsCheckModifierLabel": "Modifikator", + "DS4.DialogRollOptionsCheckModifierCustomLabel": "Individueller Modifikator", + "DS4.DialogRollOptionsMaximumCoupResultLabel": "Immersieg bis", + "DS4.DialogRollOptionsMinimumFumbleResultLabel": "Patzer ab", + "DS4.DialogRollOptionsRollModeLabel": "Sichtbarkeit", + "DS4.CheckModifierRoutine": "Routine", + "DS4.CheckModifierVeryEasy": "Sehr Leicht", + "DS4.CheckModifierEasy": "Leicht", + "DS4.CheckModifierMormal": "Normal", + "DS4.CheckModifierDifficult": "Schwer", + "DS4.CheckModifierVeryDifficult": "Sehr Schwer", + "DS4.CheckModifierExtremelyDifficult": "Äußerst Schwer", + "DS4.CheckModifierCustom": "Individuell", + "DS4.TooltipBaseValue": "Basiswert", + "DS4.TooltipModifier": "Modifikator", + "DS4.TooltipEffects": "Effekte", + "DS4.SettingUseSlayingDiceForAutomatedChecksName": "Slayende Würfel", + "DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Benutze Slayende Würfel bei automatisierten Proben.", + "DS4.SettingShowSlayerPointsName": "Slayerpunkte", + "DS4.SettingShowSlayerPointsHint": "Zeige Slayerpunkte im Charakterbogen an.", + "DS4.Checks": "Proben", + "DS4.ChecksAppraise": "Schätzen", + "DS4.ChecksChangeSpell": "Zauber Wechseln", + "DS4.ChecksClimb": "Klettern", + "DS4.ChecksCommunicate": "Verständigen", + "DS4.ChecksDecipherScript": "Inschrift Entziffern", + "DS4.ChecksDefend": "Abwehren", + "DS4.ChecksDefyPoison": "Gift Trotzen", + "DS4.ChecksDisableTraps": "Fallen Entschärfen", + "DS4.ChecksFeatOfStrength": "Kraftakt", + "DS4.ChecksFlirt": "Flirten", + "DS4.ChecksHaggle": "Feilschen", + "DS4.ChecksHide": "Verbergen", + "DS4.ChecksIdentifyMagic": "Magie Erkennen", + "DS4.ChecksJump": "Springen", + "DS4.ChecksKnowledge": "Wissen", + "DS4.ChecksOpenLock": "Schlösser Öffnen", + "DS4.ChecksPerception": "Bemerken", + "DS4.ChecksPickPocket": "Taschendiebstahl", + "DS4.ChecksReadTracks": "Spuren Lesen", + "DS4.ChecksResistDisease": "Krankheit Trotzen", + "DS4.ChecksRide": "Reiten", + "DS4.ChecksSearch": "Suchen", + "DS4.ChecksSenseMagic": "Magie Erspüren", + "DS4.ChecksSneak": "Schleichen", + "DS4.ChecksStartFire": "Feuer Machen", + "DS4.ChecksSwim": "Schwimmen", + "DS4.ChecksWakeUp": "Erwachen", + "DS4.ChecksWorkMechanism": "Mechanismus Öffnen", + "DS4.ActorCheckFlavor": "{actor} würfelt eine {check} Probe.", + "DS4.ActorGenericCheckFlavor": "{actor} würfelt eine Probe gegen {attribute} + {trait}.", + "DS4.CheckTooltip": "{check} Probe würfeln", + "DS4.NewWeaponName": "Neue Waffe", + "DS4.NewArmorName": "Neue Panzerung", + "DS4.NewShieldName": "Neuer Schild", + "DS4.NewSpellName": "Neuer Zauberspruch", + "DS4.NewEquipmentName": "Neue Ausrüstung", + "DS4.NewLootName": "Neue Beute", + "DS4.NewTalentName": "Neues Talent", + "DS4.NewRacialAbilityName": "Neue Volksfähigkeit", + "DS4.NewLanguageName": "Neue Sprache", + "DS4.NewAlphabetName": "Neue Schriftzeichen", + "DS4.NewSpecialCreatureAbilityName": "Neue Besondere Kreaturenfähigkeit", + "DS4.NewEffectName": "Neuer Effekt", + + "DS4.ActiveEffectApplyToItems": "Auf Items Anwenden", + "DS4.ActiveEffectItemName": "Itemname", + "DS4.ActiveEffectItemCondition": "Bedingung", + "DS4.TooltipNotEditableDueToEffects": "Feld nicht bearbeitbar, weil von Aktiven Effekten beeinflusst" } diff --git a/lang/en.json b/lang/en.json index f6d6d59f..847f0aea 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1,340 +1,391 @@ { - "DS4.UserInteractionAdd": "Add", - "DS4.UserInteractionAddItemTitle": "Create Item", - "DS4.UserInteractionEditItemTitle": "Edit Item", - "DS4.UserInteractionDeleteItemTitle": "Delete Item", - "DS4.UserInteractionAddEffectTitle": "Create Effect", - "DS4.UserInteractionEditEffectTitle": "Edit Effect", - "DS4.UserInteractionDeleteEffectTitle": "Delete Effect", - "DS4.DocumentImageAltText": "Image of {name}", - "DS4.RollableImageRollableTitle": "Roll for {name}", - "DS4.DiceOverlayImageAltText": "Image of a d20", - "DS4.HeadingValues": "Values", - "DS4.HeadingBiography": "Biography", - "DS4.HeadingProperties": "Properties", - "DS4.HeadingEffects": "Effects", - "DS4.HeadingInventory": "Inventory", - "DS4.HeadingAbilities": "Abilities", - "DS4.HeadingSpells": "Spells", - "DS4.HeadingDescription": "Description", - "DS4.AttackType": "Attack Type", - "DS4.AttackTypeAbbr": "AT", - "DS4.SortByAttackType": "Sort by Attack Type", - "DS4.DialogAttackTypeSelection": "Which Attack Type?", - "DS4.DialogAttributeTraitSelection": "Which Attribute and Trait?", - "DS4.WeaponBonus": "Weapon Bonus", - "DS4.WeaponBonusAbbr": "WB", - "DS4.SortByWeaponBonus": "Sort by Weapon Bonus", - "DS4.OpponentDefense": "Opponent Defense", - "DS4.OpponentDefenseAbbr": "OD", - "DS4.SortByOpponentDefense": "Sort by Opponent Defense", - "DS4.AttackTypeMelee": "Melee", - "DS4.AttackTypeRanged": "Ranged", - "DS4.AttackTypeMeleeRanged": "Melee / Ranged", - "DS4.Description": "Description", - "DS4.SortByDescription": "Sort by Description", - "DS4.Quantity": "Quantity", - "DS4.SortByQuantity": "Sort by Quantity", - "DS4.PriceGold": "Price (Gold)", - "DS4.StorageLocation": "Stored at", - "DS4.SortByStorageLocation": "Sort by Storage Location", - "DS4.ItemEquipped": "Equipped", - "DS4.ItemEquippedAbbr": "E", - "DS4.SortByItemEquipped": "Sort by Equipped", - "DS4.ItemAvailability": "Availability", - "DS4.ItemAvailabilityHamlet": "Hamlet", - "DS4.ItemAvailabilityVilage": "Village", - "DS4.ItemAvailabilityCity": "City", - "DS4.ItemAvailabilityElves": "Elves", - "DS4.ItemAvailabilityDwarves": "Dwarves", - "DS4.ItemAvailabilityUnset": "Unset", - "DS4.ItemAvailabilityNowhere": "Nowhere", - "DS4.ItemName": "Name", - "DS4.SortByItemName": "Sort by Name", - "DS4.ItemTypeWeapon": "Weapon", - "DS4.ItemTypeWeaponPlural": "Weapons", - "DS4.ItemTypeArmor": "Armor", - "DS4.ItemTypeArmorPlural": "Armor", - "DS4.ItemTypeShield": "Shield", - "DS4.ItemTypeShieldPlural": "Shields", - "DS4.ItemTypeSpell": "Spell", - "DS4.ItemTypeSpellPlural": "Spells", - "DS4.ItemTypeEquipment": "Equipment", - "DS4.ItemTypeEquipmentPlural": "Equipment", - "DS4.ItemTypeLoot": "Loot", - "DS4.ItemTypeLootPlural": "Loot", - "DS4.ItemTypeTalent": "Talent", - "DS4.ItemTypeTalentPlural": "Talents", - "DS4.ItemTypeRacialAbility": "Racial Ability", - "DS4.ItemTypeRacialAbilityPlural": "Racial Abilities", - "DS4.ItemTypeLanguage": "Language", - "DS4.ItemTypeLanguagePlural": "Languages", - "DS4.ItemTypeAlphabet": "Alphabet", - "DS4.ItemTypeAlphabetPlural": "Alphabets", - "DS4.ItemTypeSpecialCreatureAbility": "Special Creature Ability", - "DS4.ItemTypeSpecialCreatureAbilityPlural": "Special Creature Abilities", - "DS4.ItemWeaponCheckFlavor": "{actor} attacks with {weapon}.", - "DS4.ItemSpellCheckFlavor": "{actor} casts {spell}.", - "DS4.ItemPropertiesArmor": "Armor Properties", - "DS4.ItemPropertiesEquipable": "Equipment Properties", - "DS4.ItemPropertiesPhysical": "Physical Properties", - "DS4.ItemPropertiesProtective": "Protective Properties", - "DS4.ItemPropertiesSpecialCreatureAbility": "Special Creature Ability Properties", - "DS4.ItemPropertiesSpell": "Spell Properties", - "DS4.ItemPropertiesTalent": "Talent Properties", - "DS4.ItemPropertiesWeapon": "Weapon Properties", - "DS4.ArmorType": "Armor Type", - "DS4.ArmorTypeAbbr": "AT", - "DS4.SortByArmorType": "Sort by Armor Type", - "DS4.ArmorMaterialType": "Material Type", - "DS4.ArmorMaterialTypeAbbr": "Mat.", - "DS4.SortByArmorMaterialType": "Sort by Material Type", - "DS4.ArmorValue": "Armor Value", - "DS4.ArmorValueAbbr": "AV", - "DS4.SortByArmorValue": "Sort by Armor Value", - "DS4.ArmorTypeBody": "Body", - "DS4.ArmorTypeBodyAbbr": "Body", - "DS4.ArmorTypeHelmet": "Helmet", - "DS4.ArmorTypeHelmetAbbr": "Helm", - "DS4.ArmorTypeVambrace": "Vambrace", - "DS4.ArmorTypeVambraceAbbr": "Vambr", - "DS4.ArmorTypeGreaves": "Greaves", - "DS4.ArmorTypeGreavesAbbr": "Greav", - "DS4.ArmorTypeVambraceGreaves": "Vambrace + Greaves", - "DS4.ArmorTypeVambraceGreavesAbbr": "V+G", - "DS4.ArmorMaterialTypeCloth": "Cloth", - "DS4.ArmorMaterialTypeClothAbbr": "Cloth", - "DS4.ArmorMaterialTypeLeather": "Leather", - "DS4.ArmorMaterialTypeLeatherAbbr": "Leath", - "DS4.ArmorMaterialTypeChain": "Chain", - "DS4.ArmorMaterialTypeChainAbbr": "Chain", - "DS4.ArmorMaterialTypePlate": "Plate", - "DS4.ArmorMaterialTypePlateAbbr": "Plate", - "DS4.ArmorMaterialTypeNatural": "Natural", - "DS4.ArmorMaterialTypeNaturalAbbr": "Natural", - "DS4.SpellType": "Spell Type", - "DS4.SpellTypeAbbr": "T", - "DS4.SortBySpellType": "Sort by Spell Type", - "DS4.SpellTypeSpellcasting": "Spellcasting", - "DS4.SpellTypeTargetedSpellcasting": "Targeted Spellcasting", - "DS4.SpellCategory": "Category", - "DS4.SpellCategoryHealing": "Healing", - "DS4.SpellCategoryFire": "Fire", - "DS4.SpellCategoryIce": "Ice", - "DS4.SpellCategoryLight": "Light", - "DS4.SpellCategoryDarkness": "Darkness", - "DS4.SpellCategoryMindAffecting": "Mind Affecting", - "DS4.SpellCategoryElectricity": "Electricity", - "DS4.SpellCategoryNone": "None", - "DS4.SpellCategoryUnset": "Unset", - "DS4.SpellBonus": "Spell Bonus", - "DS4.SpellBonusAbbr": "SB", - "DS4.SortBySpellBonus": "Sort by Spell Bonus", - "DS4.SpellMaxDistance": "Range", - "DS4.SpellEffectRadius": "Radius", - "DS4.SpellDuration": "Duration", - "DS4.SpellCooldownDuration": "Cooldown", - "DS4.SpellMinimumLevel": "Minimum Level", - "DS4.SpellCasterClassHealer": "Healer", - "DS4.SpellCasterClassSorcerer": "Sorcerer", - "DS4.SpellCasterClassWizard": "Wizard", - "DS4.SpellPrice": "Price (Gold)", - "DS4.EffectEnabled": "Enabled", - "DS4.EffectEnabledAbbr": "E", - "DS4.EffectEffectivelyEnabled": "Effectively Enabled (taking into account whether a potential source item is equipped etc.)", - "DS4.EffectEffectivelyEnabledAbbr": "EE", - "DS4.EffectLabel": "Label", - "DS4.EffectSourceName": "Source", - "DS4.EffectFactor": "Factor (the number of times the effect is being applied)", - "DS4.EffectFactorAbbr": "F", - "DS4.ActorName": "Name", - "DS4.ActorImageAltText": "Image of the Actor", - "DS4.ActorTypeCharacter": "Character", - "DS4.ActorTypeCreature": "Creature", - "DS4.Attribute": "Attribute", - "DS4.AttributeBody": "Body", - "DS4.AttributeMobility": "Mobility", - "DS4.AttributeMind": "Mind", - "DS4.Trait": "Trait", - "DS4.TraitStrength": "Strength", - "DS4.TraitConstitution": "Constitution", - "DS4.TraitAgility": "Agility", - "DS4.TraitDexterity": "Dexterity", - "DS4.TraitIntellect": "Intellect", - "DS4.TraitAura": "Aura", - "DS4.CombatValuesHitPoints": "Hit Points", - "DS4.CombatValuesHitPointsCurrent": "Current Hit Points", - "DS4.CombatValuesHitPointsCurrentAbbr": "HP", - "DS4.CombatValuesDefense": "Defense", - "DS4.CombatValuesInitiative": "Initiative", - "DS4.CombatValuesMovement": "Movement", - "DS4.CombatValuesMeleeAttack": "Melee Attack", - "DS4.CombatValuesRangedAttack": "Ranged Attack", - "DS4.CombatValuesSpellcasting": "Spellcasting", - "DS4.CombatValuesTargetedSpellcasting": "Targeted Spellcasting", - "DS4.CombatValuesHitPointsSheet": "Hit Points", - "DS4.CombatValuesDefenseSheet": "Defense", - "DS4.CombatValuesInitiativeSheet": "Initiative", - "DS4.CombatValuesMovementSheet": "Movement", - "DS4.CombatValuesMeleeAttackSheet": "Melee Attack", - "DS4.CombatValuesRangedAttackSheet": "RAT", - "DS4.CombatValuesSpellcastingSheet": "Spellcasting", - "DS4.CombatValuesTargetedSpellcastingSheet": "TSC", - "DS4.CharacterBaseInfoRace": "Race", - "DS4.CharacterBaseInfoClass": "Class", - "DS4.CharacterBaseInfoHeroClass": "Hero Class", - "DS4.CharacterBaseInfoCulture": "Culture", - "DS4.CharacterProgressionLevel": "Level", - "DS4.CharacterProgressionLevelAbbr": "LVL", - "DS4.CharacterProgressionExperiencePoints": "Experience Points", - "DS4.CharacterProgressionExperiencePointsAbbr": "XP", - "DS4.CharacterProgressionTalentPoints": "Talent Points", - "DS4.CharacterProgressionProgressPoints": "Progress Points", - "DS4.CharacterSlayerPoints": "Slayer Points", - "DS4.CharacterSlayerPointsAbbr": "SP", - "DS4.TalentRank": "Rank", - "DS4.SortByTalentRank": "Sort by Rank", - "DS4.TalentRankBase": "Acquired", - "DS4.TalentRankMax": "Maximum", - "DS4.TalentRankMod": "Additional", - "DS4.TalentRankTotal": "Total", - "DS4.TalentRankOf": "of", - "DS4.CharacterLanguageLanguages": "Languages", - "DS4.CharacterLanguageAlphabets": "Alphabets", - "DS4.SpecialCreatureAbilityExperiencePoints": "Experience Points", - "DS4.CharacterProfileBiography": "Biography", - "DS4.CharacterProfileGender": "Gender", - "DS4.CharacterProfileBirthday": "Birthday", - "DS4.CharacterProfileBirthplace": "Birthplace", - "DS4.CharacterProfileAge": "Age", - "DS4.CharacterProfileHeight": "Height [m]", - "DS4.CharacterProfileHairColor": "Hair Color", - "DS4.CharacterProfileWeight": "Weight [kg]", - "DS4.CharacterProfileEyeColor": "Eye Color", - "DS4.CharacterProfileSpecialCharacteristics": "Special Characteristics", - "DS4.CharacterCurrencyGold": "Gold", - "DS4.CharacterCurrencySilver": "Silver", - "DS4.CharacterCurrencyCopper": "Copper", - "DS4.CharacterCurrency": "Currency", - "DS4.CreatureTypeAnimal": "Animal", - "DS4.CreatureTypeConstruct": "Construct", - "DS4.CreatureTypeHumanoid": "Humanoid", - "DS4.CreatureTypeMagicalEntity": "Magical Entity", - "DS4.CreatureTypePlantBeing": "Plant Being", - "DS4.CreatureTypeUndead": "Undead", - "DS4.CreatureSizeCategoryTiny": "Tiny", - "DS4.CreatureSizeCategorySmall": "Small", - "DS4.CreatureSizeCategoryNormal": "Normal", - "DS4.CreatureSizeCategoryLarge": "Large", - "DS4.CreatureSizeCategoryHuge": "Huge", - "DS4.CreatureSizeCategoryColossal": "Colossal", - "DS4.CreatureBaseInfoLoot": "Loot", - "DS4.CreatureBaseInfoFoeFactor": "Foe Factor", - "DS4.CreatureBaseInfoCreatureType": "Creature Type", - "DS4.CreatureBaseInfoSizeCategory": "Size Category", - "DS4.CreatureBaseInfoExperiencePoints": "Experience Points", - "DS4.CreatureBaseInfoDescription": "Description", - "DS4.WarningManageActiveEffectOnOwnedItem": "Managing Active Effects within an Owned Item is not currently supported and will be added in a subsequent update. If you actually want to manage the effect that has been transferred to the actor, you can do so in the 'Effects' tab in the actor sheet.", - "DS4.WarningActorCannotOwnItem": "The actor '{actorName}' of type '{actorType}' cannot own the item '{itemName}' of type '{itemType}'.", - "DS4.ErrorDiceCoupFumbleOverlap": "There is an overlap between Fumbles and Coups.", - "DS4.ErrorSlayingDiceRecursionLimitExceeded": "Maximum recursion depth for slaying dice roll exceeded.", - "DS4.ErrorInvalidNumberOfDice": "Invalid number of dice.", - "DS4.ErrorDuringMigration": "Error while migrating DS4 system from migration version {currentVersion} to {targetVersion}. The error occurred during execution of migration script with version {migrationVersion}. Later migrations have not been executed. For more details, please look at the development console (F12).", - "DS4.ErrorCannotRollUnownedItem": "Rolling for item '{name}' ({id})is not possible because it is not owned.", - "DS4.ErrorRollingForItemTypeNotPossible": "Rolling is not possible for items of type '{type}'.", - "DS4.ErrorWrongItemType": "Expected an item of type '{expectedType}' but item '{name}' ({id}) is of type '{actualType}'.", - "DS4.ErrorUnexpectedAttackType": "Unexpected attack type '{actualType}', expected it to be one of: {expectedTypes}", - "DS4.ErrorUnexpectedAttribute": "Unexpected attribute '{actualAttribute}', expected it to be one of: {expectedTypes}", - "DS4.ErrorUnexpectedTrait": "Unexpected trait '{actualTrait}', expected it to be one of: {expectedTypes}", - "DS4.ErrorCanvasIsNotInitialized": "Canvas is not initialized yet.", - "DS4.ErrorCannotDragMissingCheck": "Trying to drag the check '{check}' but no such check exists.", - "DS4.WarningItemMustBeEquippedToBeRolled": "To roll for item '{name}' ({id}) of type '{type}', it needs to be equipped.", - "DS4.WarningMustControlActorToUseRollItemMacro": "You must control an actor to be able to use a roll item macro.", - "DS4.WarningMustControlActorToUseRollCheckMacro": "You must control an actor to be able to use a roll check macro.", - "DS4.WarningControlledActorDoesNotHaveItem": "Your controlled actor '{actorName}' ({actorId}) does not have any item with the id '{itemId}'.", - "DS4.WarningItemIsNotRollable": "Item '{name}' ({id}) of type '{type}' is not rollable.", - "DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Macros can only be created for owned items.", - "DS4.WarningInvalidCheckDropped": "An invalid check was dropped on the Hotbar.", - "DS4.InfoManuallyEnterSpellBonus": "The correct value of the spell bonus '{spellBonus}' of the spell '{name}' needs to be entered by manually.", - "DS4.InfoSystemUpdateStart": "Migrating DS4 system from migration version {currentVersion} to {targetVersion}. Please be patient and do not close your game or shut down your server.", - "DS4.InfoSystemUpdateCompleted": "Migration of DS4 system from migration version {currentVersion} to {targetVersion} successful!", - "DS4.UnitRounds": "Rounds", - "DS4.UnitRoundsAbbr": "rnd", - "DS4.UnitMinutes": "Minutes", - "DS4.UnitMinutesAbbr": "min", - "DS4.UnitHours": "Hours", - "DS4.UnitHoursAbbr": "h", - "DS4.UnitDays": "Days", - "DS4.UnitDaysAbbr": "d", - "DS4.UnitMeters": "Meters", - "DS4.UnitMetersAbbr": "m", - "DS4.UnitKilometers": "Kilometers", - "DS4.UnitKilometersAbbr": "km", - "DS4.UnitCustom": "Custom Unit", - "DS4.UnitCustomAbbr": " ", - "DS4.GenericOkButton": "Ok", - "DS4.GenericCancelButton": "Cancel", - "DS4.DialogRollOptionsDefaultTitle": "Roll Options", - "DS4.ErrorUnexpectedHtmlType": "Type Error: Expected '{exType}' but got '{realType}'.", - "DS4.ErrorCouldNotFindForm": "Could not find HTML element '{htmlElement}'.", - "DS4.ErrorActorDoesNotHaveItem": "The actor '{actor}' does not have any item with the id '{id}'.", - "DS4.ErrorUnexpectedError": "There was an unexpected error in the Dungeonslayers 4 system. For more details, please take a look at the console (F12).", - "DS4.ErrorItemDoesNotHaveEffect": "The item '{item}' does not have any effect with the id '{id}'.", - "DS4.ErrorActorDoesNotHaveEffect": "The actor '{actor}' does not have any effect with the id '{id}'.", - "DS4.DialogRollOptionsCheckTargetNumberLabel": "Check Target Number", - "DS4.DialogRollOptionsGMModifierLabel": "Game Master Modifier", - "DS4.DialogRollOptionsMaximumCoupResultLabel": "Coup to", - "DS4.DialogRollOptionsMinimumFumbleResultLabel": "Fumble from", - "DS4.DialogRollOptionsRollModeLabel": "Visibility", - "DS4.TooltipBaseValue": "Base Value", - "DS4.TooltipModifier": "Modifier", - "DS4.TooltipEffects": "Effects", - "DS4.SettingUseSlayingDiceForAutomatedChecksName": "Slaying Dice", - "DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Use Slaying Dice for automated checks.", - "DS4.SettingShowSlayerPointsName": "Slayer Points", - "DS4.SettingShowSlayerPointsHint": "Show Slayer Points in the character sheet.", - "DS4.Checks": "Checks", - "DS4.ChecksAppraise": "Appraise", - "DS4.ChecksChangeSpell": "Change Spell", - "DS4.ChecksClimb": "Climb", - "DS4.ChecksCommunicate": "Communicate", - "DS4.ChecksDecipherScript": "Decipher Script", - "DS4.ChecksDefend": "Defend", - "DS4.ChecksDefyPoison": "Defy Poison", - "DS4.ChecksDisableTraps": "Disable Traps", - "DS4.ChecksFeatOfStrength": "Feat of Strength", - "DS4.ChecksFlirt": "Flirt", - "DS4.ChecksHaggle": "Haggle", - "DS4.ChecksHide": "Hide", - "DS4.ChecksIdentifyMagic": "Identify Magic", - "DS4.ChecksJump": "Jump", - "DS4.ChecksKnowledge": "Knowledge", - "DS4.ChecksOpenLock": "Open Lock", - "DS4.ChecksPerception": "Perception", - "DS4.ChecksPickPocket": "Pick Pocket", - "DS4.ChecksReadTracks": "Read Tracks", - "DS4.ChecksResistDisease": "Resist Disease", - "DS4.ChecksRide": "Ride", - "DS4.ChecksSearch": "Search", - "DS4.ChecksSenseMagic": "Sense Magic", - "DS4.ChecksSneak": "Sneak", - "DS4.ChecksStartFire": "Start Fire", - "DS4.ChecksSwim": "Swim", - "DS4.ChecksWakeUp": "Wake Up", - "DS4.ChecksWorkMechanism": "Work Mechanism", - "DS4.ActorCheckFlavor": "{actor} rolls a {check} check.", - "DS4.ActorGenericCheckFlavor": "{actor} rolls a check against {attribute} + {trait}.", - "DS4.CheckTooltip": "Roll a {check} check", - "DS4.NewWeaponName": "New Weapon", - "DS4.NewArmorName": "New Armor", - "DS4.NewShieldName": "New Shield", - "DS4.NewSpellName": "New Spell", - "DS4.NewEquipmentName": "New Equipment", - "DS4.NewLootName": "New Loot", - "DS4.NewTalentName": "New Talent", - "DS4.NewRacialAbilityName": "New Racial Ability", - "DS4.NewLanguageName": "New Language", - "DS4.NewAlphabetName": "New Alphabet", - "DS4.NewSpecialCreatureAbilityName": "New Special Creature Ability", - "DS4.NewEffectLabel": "New Effect" + "DS4.UserInteractionAdd": "Add", + "DS4.UserInteractionAddItemTitle": "Create Item", + "DS4.UserInteractionEditItemTitle": "Edit Item", + "DS4.UserInteractionDeleteItemTitle": "Delete Item", + "DS4.UserInteractionAddEffectTitle": "Create Effect", + "DS4.UserInteractionEditEffectTitle": "Edit Effect", + "DS4.UserInteractionDeleteEffectTitle": "Delete Effect", + "DS4.DocumentImageAltText": "Image of {name}", + "DS4.RollableImageRollableTitle": "Roll for {name}", + "DS4.DiceOverlayImageAltText": "Image of a d20", + "DS4.HeadingValues": "Values", + "DS4.HeadingBiography": "Biography", + "DS4.HeadingProperties": "Properties", + "DS4.HeadingEffects": "Effects", + "DS4.HeadingInventory": "Inventory", + "DS4.HeadingAbilities": "Abilities", + "DS4.HeadingSpells": "Spells", + "DS4.HeadingDescription": "Description", + "DS4.AttackType": "Attack Type", + "DS4.AttackTypeAbbr": "AT", + "DS4.SortByAttackType": "Sort by Attack Type", + "DS4.DialogAttackTypeSelection": "Which Attack Type?", + "DS4.DialogAttributeTraitSelection": "Which Attribute and Trait?", + "DS4.WeaponBonus": "Weapon Bonus", + "DS4.WeaponBonusAbbr": "WB", + "DS4.SortByWeaponBonus": "Sort by Weapon Bonus", + "DS4.OpponentDefense": "Opponent Defense", + "DS4.OpponentDefenseAbbr": "OD", + "DS4.SortByOpponentDefense": "Sort by Opponent Defense", + "DS4.OpponentDefenseMelee": "Opponent Defense for melee attacks", + "DS4.OpponentDefenseRanged": "Opponent Defense for ranged attacks", + "DS4.AttackTypeMelee": "Melee", + "DS4.AttackTypeRanged": "Ranged", + "DS4.AttackTypeMeleeRanged": "Melee / Ranged", + "DS4.Description": "Description", + "DS4.SortByDescription": "Sort by Description", + "DS4.Quantity": "Quantity", + "DS4.SortByQuantity": "Sort by Quantity", + "DS4.PriceGold": "Price (Gold)", + "DS4.StorageLocation": "Stored at", + "DS4.SortByStorageLocation": "Sort by Storage Location", + "DS4.ItemEquipped": "Equipped", + "DS4.ItemEquippedAbbr": "E", + "DS4.SortByItemEquipped": "Sort by Equipped", + "DS4.ItemAvailability": "Availability", + "DS4.ItemAvailabilityHamlet": "Hamlet", + "DS4.ItemAvailabilityVilage": "Village", + "DS4.ItemAvailabilityCity": "City", + "DS4.ItemAvailabilityElves": "Elves", + "DS4.ItemAvailabilityDwarves": "Dwarves", + "DS4.ItemAvailabilityUnset": "Unset", + "DS4.ItemAvailabilityNowhere": "Nowhere", + "DS4.ItemName": "Name", + "DS4.SortByItemName": "Sort by Name", + "DS4.ItemTypeWeapon": "Weapon", + "DS4.ItemTypeWeaponPlural": "Weapons", + "DS4.ItemTypeArmor": "Armor", + "DS4.ItemTypeArmorPlural": "Armor", + "DS4.ItemTypeShield": "Shield", + "DS4.ItemTypeShieldPlural": "Shields", + "DS4.ItemTypeSpell": "Spell", + "DS4.ItemTypeSpellPlural": "Spells", + "DS4.ItemTypeEquipment": "Equipment", + "DS4.ItemTypeEquipmentPlural": "Equipment", + "DS4.ItemTypeLoot": "Loot", + "DS4.ItemTypeLootPlural": "Loot", + "DS4.ItemTypeTalent": "Talent", + "DS4.ItemTypeTalentPlural": "Talents", + "DS4.ItemTypeRacialAbility": "Racial Ability", + "DS4.ItemTypeRacialAbilityPlural": "Racial Abilities", + "DS4.ItemTypeLanguage": "Language", + "DS4.ItemTypeLanguagePlural": "Languages", + "DS4.ItemTypeAlphabet": "Alphabet", + "DS4.ItemTypeAlphabetPlural": "Alphabets", + "DS4.ItemTypeSpecialCreatureAbility": "Special Creature Ability", + "DS4.ItemTypeSpecialCreatureAbilityPlural": "Special Creature Abilities", + "DS4.ItemWeaponCheckFlavor": "{actor} attacks with {weapon}.", + "DS4.ItemWeaponCheckFlavorWithOpponentDefense": "{actor} attacks with {weapon}
Opponent defense: {opponentDefense}", + "DS4.ItemSpellCheckFlavor": "{actor} casts {spell}.", + "DS4.ItemSpellCheckFlavorWithOpponentDefense": "{actor} casts {spell}.
Opponent Defense: {opponentDefense}", + "DS4.ItemPropertiesArmor": "Armor Properties", + "DS4.ItemPropertiesEquipable": "Equipment Properties", + "DS4.ItemPropertiesPhysical": "Physical Properties", + "DS4.ItemPropertiesProtective": "Protective Properties", + "DS4.ItemPropertiesSpecialCreatureAbility": "Special Creature Ability Properties", + "DS4.ItemPropertiesSpell": "Spell Properties", + "DS4.ItemPropertiesTalent": "Talent Properties", + "DS4.ItemPropertiesWeapon": "Weapon Properties", + "DS4.ArmorType": "Armor Type", + "DS4.ArmorTypeAbbr": "AT", + "DS4.SortByArmorType": "Sort by Armor Type", + "DS4.ArmorMaterialType": "Material Type", + "DS4.ArmorMaterialTypeAbbr": "Mat.", + "DS4.SortByArmorMaterialType": "Sort by Material Type", + "DS4.ArmorValue": "Armor Value", + "DS4.ArmorValueAbbr": "AV", + "DS4.SortByArmorValue": "Sort by Armor Value", + "DS4.ArmorTypeBody": "Body", + "DS4.ArmorTypeBodyAbbr": "Body", + "DS4.ArmorTypeHelmet": "Helmet", + "DS4.ArmorTypeHelmetAbbr": "Helm", + "DS4.ArmorTypeVambrace": "Vambrace", + "DS4.ArmorTypeVambraceAbbr": "Vambr", + "DS4.ArmorTypeGreaves": "Greaves", + "DS4.ArmorTypeGreavesAbbr": "Greav", + "DS4.ArmorTypeVambraceGreaves": "Vambrace + Greaves", + "DS4.ArmorTypeVambraceGreavesAbbr": "V+G", + "DS4.ArmorMaterialTypeCloth": "Cloth", + "DS4.ArmorMaterialTypeClothAbbr": "Cloth", + "DS4.ArmorMaterialTypeLeather": "Leather", + "DS4.ArmorMaterialTypeLeatherAbbr": "Leath", + "DS4.ArmorMaterialTypeChain": "Chain", + "DS4.ArmorMaterialTypeChainAbbr": "Chain", + "DS4.ArmorMaterialTypePlate": "Plate", + "DS4.ArmorMaterialTypePlateAbbr": "Plate", + "DS4.ArmorMaterialTypeNatural": "Natural", + "DS4.ArmorMaterialTypeNaturalAbbr": "Natural", + "DS4.SpellType": "Spell Type", + "DS4.SpellTypeAbbr": "T", + "DS4.SpellTypeDescription": "The type of the spell.", + "DS4.SortBySpellType": "Sort by Spell Type", + "DS4.SpellTypeSpellcasting": "Spellcasting", + "DS4.SpellTypeTargetedSpellcasting": "Targeted Spellcasting", + "DS4.SpellGroups": "Spell Groups", + "DS4.SpellGroupsDescription": "Spell groups which the spell belongs to.", + "DS4.SpellGroupLightning": "Lightning", + "DS4.SpellGroupEarth": "Earth, Rock, Stone", + "DS4.SpellGroupWater": "Water", + "DS4.SpellGroupIce": "Ice, Frost", + "DS4.SpellGroupFire": "Fire", + "DS4.SpellGroupHealing": "Healing", + "DS4.SpellGroupLight": "Light", + "DS4.SpellGroupAir": "Air", + "DS4.SpellGroupTransport": "Transport", + "DS4.SpellGroupDamage": "Damage", + "DS4.SpellGroupShadow": "Shadow", + "DS4.SpellGroupProtection": "Protection", + "DS4.SpellGroupMindAffecting": "Mind Affecting", + "DS4.SpellGroupDemonology": "Demonologie", + "DS4.SpellGroupNecromancy": "Necromancy", + "DS4.SpellGroupTransmutation": "Transmutation", + "DS4.SpellGroupArea": "Area", + "DS4.SpellModifier": "Spell Modifier", + "DS4.SpellModifierNumerical": "Spell Modifier (numerical)", + "DS4.SpellModifierComplex": "Spell Modifier (complex)", + "DS4.SpellModifierAbbr": "SM", + "DS4.SpellModifierNumericalDescription": "The numerical spell modifier for the corresponding check.", + "DS4.SpellModifierComplexDescription": "A complex spell modifier for the corresponding check (for example, dependent on the target’s values). If given, the numerical spell bonus is ignored.", + "DS4.SortBySpellModifier": "Sort by Spell Modifier", + "DS4.SpellDistance": "Distance", + "DS4.SpellDistanceDescription": "The maximum distance to the target, “Self” meaning that only the caster can be the target of this spell.", + "DS4.SpellEffectRadius": "Area of Effect Radius", + "DS4.SpellEffectRadiusDescription": "The radius of the area of effect of the spell.", + "DS4.SpellDuration": "Duration", + "DS4.SpellDurationDescription": "The spell’s duration.", + "DS4.CooldownDuration": "Cooldown Period", + "DS4.CooldownDurationDescription": "The length of time to wait after a successful casting before the spell can be cast again.", + "DS4.CooldownDuration0R": "0 Rounds", + "DS4.CooldownDuration1R": "1 Round", + "DS4.CooldownDuration2R": "2 Rounds", + "DS4.CooldownDuration5R": "5 Rounds", + "DS4.CooldownDuration10R": "10 Rounds", + "DS4.CooldownDuration100R": "100 Rounds", + "DS4.CooldownDuration1D": "1 Day", + "DS4.CooldownDurationD20D": "D20 Days", + "DS4.SpellAllowsDefense": "Allows Defense", + "DS4.SpellAllowsDefenseDescription": "Is it alowed to perform a defense check against this spell?", + "DS4.SpellMinimumLevel": "Minimum Level", + "DS4.SpellMinimumLevelDescription": "The minimum level at which a spell caster may learn the spell.", + "DS4.SpellCasterClassHealer": "Healer", + "DS4.SpellCasterClassSorcerer": "Sorcerer", + "DS4.SpellCasterClassWizard": "Wizard", + "DS4.SpellPrice": "Price (Gold)", + "DS4.SpellPriceDescription": "The price to purchase the spell.", + "DS4.EffectEnabled": "Enabled", + "DS4.EffectEnabledAbbr": "E", + "DS4.EffectActive": "Active (taking into account whether a potential source item is equipped etc.)", + "DS4.EffectActiveAbbr": "A", + "DS4.EffectName": "Name", + "DS4.EffectSourceName": "Source", + "DS4.EffectFactor": "Factor (the number of times the effect is being applied)", + "DS4.EffectFactorAbbr": "F", + "DS4.ActorName": "Name", + "DS4.ActorImageAltText": "Image of the Actor", + "DS4.ActorTypeCharacter": "Character", + "DS4.ActorTypeCreature": "Creature", + "DS4.Attribute": "Attribute", + "DS4.AttributeBody": "Body", + "DS4.AttributeMobility": "Mobility", + "DS4.AttributeMind": "Mind", + "DS4.Trait": "Trait", + "DS4.TraitStrength": "Strength", + "DS4.TraitConstitution": "Constitution", + "DS4.TraitAgility": "Agility", + "DS4.TraitDexterity": "Dexterity", + "DS4.TraitIntellect": "Intellect", + "DS4.TraitAura": "Aura", + "DS4.CombatValuesHitPoints": "Hit Points", + "DS4.CombatValuesHitPointsCurrent": "Current Hit Points", + "DS4.CombatValuesHitPointsCurrentAbbr": "HP", + "DS4.CombatValuesDefense": "Defense", + "DS4.CombatValuesInitiative": "Initiative", + "DS4.CombatValuesMovement": "Movement", + "DS4.CombatValuesMeleeAttack": "Melee Attack", + "DS4.CombatValuesRangedAttack": "Ranged Attack", + "DS4.CombatValuesSpellcasting": "Spellcasting", + "DS4.CombatValuesTargetedSpellcasting": "Targeted Spellcasting", + "DS4.CombatValuesHitPointsSheet": "Hit Points", + "DS4.CombatValuesDefenseSheet": "Defense", + "DS4.CombatValuesInitiativeSheet": "Initiative", + "DS4.CombatValuesMovementSheet": "Movement", + "DS4.CombatValuesMeleeAttackSheet": "Melee Attack", + "DS4.CombatValuesRangedAttackSheet": "RAT", + "DS4.CombatValuesSpellcastingSheet": "Spellcasting", + "DS4.CombatValuesTargetedSpellcastingSheet": "TSC", + "DS4.CharacterBaseInfoRace": "Race", + "DS4.CharacterBaseInfoClass": "Class", + "DS4.CharacterBaseInfoHeroClass": "Hero Class", + "DS4.CharacterBaseInfoCulture": "Culture", + "DS4.CharacterProgressionLevel": "Level", + "DS4.CharacterProgressionLevelAbbr": "LVL", + "DS4.CharacterProgressionExperiencePoints": "Experience Points", + "DS4.CharacterProgressionExperiencePointsAbbr": "XP", + "DS4.CharacterProgressionTalentPoints": "Talent Points", + "DS4.CharacterProgressionProgressPoints": "Progress Points", + "DS4.CharacterSlayerPoints": "Slayer Points", + "DS4.CharacterSlayerPointsAbbr": "SP", + "DS4.TalentRank": "Rank", + "DS4.SortByTalentRank": "Sort by Rank", + "DS4.TalentRankBase": "Acquired", + "DS4.TalentRankMax": "Maximum", + "DS4.TalentRankMod": "Additional", + "DS4.TalentRankTotal": "Total", + "DS4.CharacterLanguageLanguages": "Languages", + "DS4.CharacterLanguageAlphabets": "Alphabets", + "DS4.SpecialCreatureAbilityExperiencePoints": "Experience Points", + "DS4.CharacterProfileBiography": "Biography", + "DS4.CharacterProfileGender": "Gender", + "DS4.CharacterProfileBirthday": "Birthday", + "DS4.CharacterProfileBirthplace": "Birthplace", + "DS4.CharacterProfileAge": "Age", + "DS4.CharacterProfileHeight": "Height [m]", + "DS4.CharacterProfileHairColor": "Hair Color", + "DS4.CharacterProfileWeight": "Weight [kg]", + "DS4.CharacterProfileEyeColor": "Eye Color", + "DS4.CharacterProfileSpecialCharacteristics": "Special Characteristics", + "DS4.CharacterCurrencyGold": "Gold", + "DS4.CharacterCurrencySilver": "Silver", + "DS4.CharacterCurrencyCopper": "Copper", + "DS4.CharacterCurrency": "Currency", + "DS4.CreatureTypeAnimal": "Animal", + "DS4.CreatureTypeConstruct": "Construct", + "DS4.CreatureTypeHumanoid": "Humanoid", + "DS4.CreatureTypeMagicalEntity": "Magical Entity", + "DS4.CreatureTypePlantBeing": "Plant Being", + "DS4.CreatureTypeUndead": "Undead", + "DS4.CreatureSizeCategoryTiny": "Tiny", + "DS4.CreatureSizeCategorySmall": "Small", + "DS4.CreatureSizeCategoryNormal": "Normal", + "DS4.CreatureSizeCategoryLarge": "Large", + "DS4.CreatureSizeCategoryHuge": "Huge", + "DS4.CreatureSizeCategoryColossal": "Colossal", + "DS4.CreatureBaseInfoLoot": "Loot", + "DS4.CreatureBaseInfoFoeFactor": "Foe Factor", + "DS4.CreatureBaseInfoCreatureType": "Creature Type", + "DS4.CreatureBaseInfoSizeCategory": "Size Category", + "DS4.CreatureBaseInfoExperiencePoints": "Experience Points", + "DS4.CreatureBaseInfoDescription": "Description", + "DS4.WarningActorCannotOwnItem": "The actor '{actorName}' of type '{actorType}' cannot own the item '{itemName}' of type '{itemType}'.", + "DS4.ErrorDiceCoupFumbleOverlap": "There is an overlap between Fumbles and Coups.", + "DS4.ErrorSlayingDiceRecursionLimitExceeded": "Maximum recursion depth for slaying dice roll exceeded.", + "DS4.ErrorInvalidNumberOfDice": "Invalid number of dice.", + "DS4.ErrorInvalidActorType": "Invalid actor type '{type}'.", + "DS4.ErrorInvalidItemType": "Invalid item type '{type}'.", + "DS4.ErrorDuringMigration": "Error while migrating DS4 system from migration version {currentVersion} to {targetVersion}. The error occurred during execution of migration script with version {migrationVersion}. Later migrations have not been executed. For more details, please look at the development console (F12).", + "DS4.ErrorDuringCompendiumMigration": "Error while migrating compendium '{pack}' for DS4 from migration version {currentVersion} to {targetVersion}. The error occurred during execution of migration script with version {migrationVersion}. Later migrations have not been executed. For more details, please look at the development console (F12).", + "DS4.ErrorCannotRollUnownedItem": "Rolling for item '{name}' ({id})is not possible because it is not owned.", + "DS4.ErrorRollingForItemTypeNotPossible": "Rolling is not possible for items of type '{type}'.", + "DS4.ErrorUnexpectedAttackType": "Unexpected attack type '{actualType}', expected it to be one of: {expectedTypes}", + "DS4.ErrorUnexpectedAttribute": "Unexpected attribute '{actualAttribute}', expected it to be one of: {expectedTypes}", + "DS4.ErrorUnexpectedTrait": "Unexpected trait '{actualTrait}', expected it to be one of: {expectedTypes}", + "DS4.ErrorCanvasIsNotInitialized": "Canvas is not initialized yet.", + "DS4.ErrorCannotDragMissingCheck": "Trying to drag the check '{check}' but no such check exists.", + "DS4.WarningItemMustBeEquippedToBeRolled": "To roll for item '{name}' ({id}) of type '{type}', it needs to be equipped.", + "DS4.WarningMustControlActorToUseRollItemMacro": "You must control an actor to be able to use a roll item macro.", + "DS4.WarningMustControlActorToUseRollCheckMacro": "You must control an actor to be able to use a roll check macro.", + "DS4.WarningControlledActorDoesNotHaveItem": "Your controlled actor '{actorName}' ({actorId}) does not have any item with the id '{itemId}'.", + "DS4.WarningItemIsNotRollable": "Item '{name}' ({id}) of type '{type}' is not rollable.", + "DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Macros can only be created for owned items.", + "DS4.WarningInvalidCheckDropped": "An invalid check was dropped on the Hotbar.", + "DS4.WarningSystemUpdateCompletedWithErrors": "Migration of DS4 system from migration version {currentVersion} to {targetVersion} completed with errors. Please check the development console (F12) to see whether the errors have significant impact or can be ignored. In particular, https://github.com/foundryvtt/foundryvtt/issues/9672 may cause issues that simply can be ignored.", + "DS4.InfoManuallyEnterSpellModifier": "The correct value of the spell modifier '{spellModifier}' of the spell '{name}' needs to be entered by manually.", + "DS4.InfoSystemUpdateStart": "Migrating DS4 system from migration version {currentVersion} to {targetVersion}. Please be patient and do not close your game or shut down your server.", + "DS4.InfoSystemUpdateCompletedSuccessfully": "Migration of DS4 system from migration version {currentVersion} to {targetVersion} successful!", + "DS4.InfoCompendiumMigrationStart": "Migrating compendium '{pack}' for DS4 from migration version {currentVersion} to {targetVersion}. Please be patient and do not close your game or shut down your server.", + "DS4.InfoCompendiumMigrationCompleted": "Migration of compendium '{pack}' for DS4 from migration version {currentVersion} to {targetVersion} successful!", + "DS4.UnitRounds": "Rounds", + "DS4.UnitRoundsAbbr": "rnd", + "DS4.UnitMinutes": "Minutes", + "DS4.UnitMinutesAbbr": "min", + "DS4.UnitHours": "Hours", + "DS4.UnitHoursAbbr": "h", + "DS4.UnitDays": "Days", + "DS4.UnitDaysAbbr": "d", + "DS4.UnitMeters": "Meters", + "DS4.UnitMetersAbbr": "m", + "DS4.UnitKilometers": "Kilometers", + "DS4.UnitKilometersAbbr": "km", + "DS4.UnitCustom": "Custom Unit", + "DS4.UnitCustomAbbr": " ", + "DS4.GenericOkButton": "Ok", + "DS4.GenericCancelButton": "Cancel", + "DS4.DialogRollOptionsDefaultTitle": "Roll Options", + "DS4.ErrorUnexpectedHtmlType": "Type Error: Expected '{exType}' but got '{realType}'.", + "DS4.ErrorCouldNotFindForm": "Could not find HTML element '{htmlElement}'.", + "DS4.ErrorActorDoesNotHaveItem": "The actor '{actor}' does not have any item with the UUID '{uuid}'.", + "DS4.ErrorUnexpectedError": "There was an unexpected error in the Dungeonslayers 4 system. For more details, please take a look at the console (F12).", + "DS4.ErrorItemDoesNotHaveEffect": "The item '{item}' does not have any effect with the ID '{id}'.", + "DS4.ErrorActorDoesNotHaveEffect": "The actor '{actor}' does not have any effect with the UUID '{uuid}'.", + "DS4.DialogRollOptionsCheckTargetNumberLabel": "Check Target Number", + "DS4.DialogRollOptionsCheckModifierLabel": "Modifier", + "DS4.DialogRollOptionsCheckModifierCustomLabel": "Custom Modifier", + "DS4.DialogRollOptionsMaximumCoupResultLabel": "Coup to", + "DS4.DialogRollOptionsMinimumFumbleResultLabel": "Fumble from", + "DS4.DialogRollOptionsRollModeLabel": "Visibility", + "DS4.CheckModifierRoutine": "Routine", + "DS4.CheckModifierVeryEasy": "Very Easy", + "DS4.CheckModifierEasy": "Easy", + "DS4.CheckModifierMormal": "Normal", + "DS4.CheckModifierDifficult": "Difficult", + "DS4.CheckModifierVeryDifficult": "Very Difficult", + "DS4.CheckModifierExtremelyDifficult": "Extremely Difficult", + "DS4.CheckModifierCustom": "Custom", + "DS4.TooltipBaseValue": "Base Value", + "DS4.TooltipModifier": "Modifier", + "DS4.TooltipEffects": "Effects", + "DS4.SettingUseSlayingDiceForAutomatedChecksName": "Slaying Dice", + "DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Use Slaying Dice for automated checks.", + "DS4.SettingShowSlayerPointsName": "Slayer Points", + "DS4.SettingShowSlayerPointsHint": "Show Slayer Points in the character sheet.", + "DS4.Checks": "Checks", + "DS4.ChecksAppraise": "Appraise", + "DS4.ChecksChangeSpell": "Change Spell", + "DS4.ChecksClimb": "Climb", + "DS4.ChecksCommunicate": "Communicate", + "DS4.ChecksDecipherScript": "Decipher Script", + "DS4.ChecksDefend": "Defend", + "DS4.ChecksDefyPoison": "Defy Poison", + "DS4.ChecksDisableTraps": "Disable Traps", + "DS4.ChecksFeatOfStrength": "Feat of Strength", + "DS4.ChecksFlirt": "Flirt", + "DS4.ChecksHaggle": "Haggle", + "DS4.ChecksHide": "Hide", + "DS4.ChecksIdentifyMagic": "Identify Magic", + "DS4.ChecksJump": "Jump", + "DS4.ChecksKnowledge": "Knowledge", + "DS4.ChecksOpenLock": "Open Lock", + "DS4.ChecksPerception": "Perception", + "DS4.ChecksPickPocket": "Pick Pocket", + "DS4.ChecksReadTracks": "Read Tracks", + "DS4.ChecksResistDisease": "Resist Disease", + "DS4.ChecksRide": "Ride", + "DS4.ChecksSearch": "Search", + "DS4.ChecksSenseMagic": "Sense Magic", + "DS4.ChecksSneak": "Sneak", + "DS4.ChecksStartFire": "Start Fire", + "DS4.ChecksSwim": "Swim", + "DS4.ChecksWakeUp": "Wake Up", + "DS4.ChecksWorkMechanism": "Work Mechanism", + "DS4.ActorCheckFlavor": "{actor} rolls a {check} check.", + "DS4.ActorGenericCheckFlavor": "{actor} rolls a check against {attribute} + {trait}.", + "DS4.CheckTooltip": "Roll a {check} check", + "DS4.NewWeaponName": "New Weapon", + "DS4.NewArmorName": "New Armor", + "DS4.NewShieldName": "New Shield", + "DS4.NewSpellName": "New Spell", + "DS4.NewEquipmentName": "New Equipment", + "DS4.NewLootName": "New Loot", + "DS4.NewTalentName": "New Talent", + "DS4.NewRacialAbilityName": "New Racial Ability", + "DS4.NewLanguageName": "New Language", + "DS4.NewAlphabetName": "New Alphabet", + "DS4.NewSpecialCreatureAbilityName": "New Special Creature Ability", + "DS4.NewEffectName": "New Effect", + + "DS4.ActiveEffectApplyToItems": "Apply to Items", + "DS4.ActiveEffectItemName": "Item Name", + "DS4.ActiveEffectItemCondition": "Condition", + "DS4.TooltipNotEditableDueToEffects": "field not editable, because affected by Active Effects" } diff --git a/package.json b/package.json index 5d3c9e82..e58b8862 100644 --- a/package.json +++ b/package.json @@ -1,99 +1,102 @@ { - "private": true, - "name": "dungeonslayers4", - "description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.", - "version": "1.12.6", - "license": "https://git.f3l.de/dungeonslayers/ds4#licensing", - "homepage": "https://git.f3l.de/dungeonslayers/ds4", - "repository": { - "type": "git", - "url": "https://git.f3l.de/dungeonslayers/ds4" + "private": true, + "name": "dungeonslayers4", + "description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.", + "version": "2.0.5", + "license": "https://git.f3l.de/dungeonslayers/ds4#licensing", + "homepage": "https://git.f3l.de/dungeonslayers/ds4", + "repository": { + "type": "git", + "url": "https://git.f3l.de/dungeonslayers/ds4" + }, + "bugs": { + "url": "https://git.f3l.de/dungeonslayers/ds4/issues" + }, + "contributors": [ + { + "name": "Johannes Loher", + "email": "johannes.loher@fg4f.de" }, - "bugs": { - "url": "https://git.f3l.de/dungeonslayers/ds4/-/issues" + { + "name": "Gesina Schwalbe", + "email": "gesina.schwalbe@pheerai.de" }, - "contributors": [ - { - "name": "Johannes Loher", - "email": "johannes.loher@fg4f.de" - }, - { - "name": "Gesina Schwalbe", - "email": "gesina.schwalbe@pheerai.de" - }, - { - "name": "Oliver Rümpelein", - "email": "foundryvtt@pheerai.de" - }, - { - "name": "Siegfried Krug", - "email": "foundryvtt@asdil1991.de" - }, - { - "name": "Max Tharr" - }, - { - "name": "Sascha Martens" - } - ], - "type": "module", - "scripts": { - "build": "run-s clean:files build:files", - "build:files": "rollup -c", - "watch": "rollup -c -w", - "link-package": "node ./tools/link-package.js", - "clean": "run-p clean:files clean:link", - "clean:files": "rimraf dist", - "clean:link": "node ./tools/link-package.js --clean", - "lint": "eslint --ext .ts,.js,.cjs,.mjs .", - "lint:fix": "eslint --ext .ts,.js,.cjs,.mjs --fix .", - "test": "jest", - "test:watch": "jest --watch", - "test:ci": "jest --ci --reporters=default --reporters=jest-junit", - "format": "prettier --write \"./**/*.(ts|js|cjs|mjs|json|scss|yml)\"", - "typecheck": "tsc --noEmit", - "bump-version": "node ./tools/bump-version.js", - "convert-packs-to-json": "node ./tools/convert-packs-to-json.js", - "postinstall": "husky install", - "changelog": "conventional-changelog -p conventionalcommits -o CHANGELOG.md -r 2" + { + "name": "Oliver Rümpelein", + "email": "foundryvtt@pheerai.de" }, - "devDependencies": { - "@commitlint/cli": "16.1.0", - "@commitlint/config-conventional": "16.0.0", - "@guanghechen/rollup-plugin-copy": "1.8.6", - "@league-of-foundry-developers/foundry-vtt-types": "9.249.0", - "@rollup/plugin-typescript": "8.3.0", - "@seald-io/nedb": "2.2.1", - "@types/fs-extra": "9.0.13", - "@types/jest": "27.4.0", - "@typescript-eslint/eslint-plugin": "5.11.0", - "@typescript-eslint/parser": "5.11.0", - "conventional-changelog-cli": "2.2.2", - "conventional-changelog-conventionalcommits": "4.6.3", - "eslint": "8.8.0", - "eslint-config-prettier": "8.3.0", - "eslint-plugin-jest": "26.1.0", - "eslint-plugin-prettier": "4.0.0", - "fs-extra": "10.0.0", - "husky": "7.0.4", - "jest": "27.5.1", - "jest-junit": "13.0.0", - "lint-staged": "12.3.3", - "npm-run-all": "4.1.5", - "prettier": "2.5.1", - "rimraf": "3.0.2", - "rollup": "2.67.2", - "rollup-plugin-styles": "4.0.0", - "rollup-plugin-terser": "7.0.2", - "sass": "1.49.7", - "semver": "7.3.5", - "ts-jest": "27.1.3", - "tslib": "2.3.1", - "typescript": "4.4.4", - "yargs": "17.3.1" + { + "name": "Siegfried Krug", + "email": "foundryvtt@asdil1991.de" }, - "lint-staged": { - "*.(ts|js|cjs|mjs)": "eslint --cache --fix", - "*.(json|scss|yml)": "prettier --write" + { + "name": "Max Tharr" + }, + { + "name": "Sascha Martens" } + ], + "type": "module", + "scripts": { + "build": "run-s clean:files build:files", + "build:files": "run-p build:rollup build:packs", + "build:rollup": "rollup -c", + "build:packs": "./tools/packs.sh pack", + "watch": "rollup -c -w", + "link-package": "node ./tools/link-package.js", + "clean": "run-p clean:files clean:link", + "clean:files": "rimraf dist", + "clean:link": "node ./tools/link-package.js --clean", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "format": "pnpm prettier --write", + "format:check": "pnpm prettier --check", + "prettier": "prettier './**/*.(ts|js|cjs|mjs|json|scss|yml|yaml)'", + "test": "run-p test:vitest test:typecheck", + "test:vitest": "vitest run", + "test:typecheck": "tsc --noEmit --project spec/tsconfig.json", + "test:watch": "vitest", + "typecheck": "tsc --noEmit", + "typecheck:watch": "tsc --noEmit --watch", + "bump-version": "node ./tools/bump-version.js", + "changelog": "conventional-changelog -p conventionalcommits -o CHANGELOG.md -r 2" + }, + "devDependencies": { + "@commitlint/cli": "19.7.1", + "@commitlint/config-conventional": "19.7.1", + "@eslint/js": "9.21.0", + "@foundryvtt/foundryvtt-cli": "1.0.4", + "@guanghechen/rollup-plugin-copy": "6.0.4", + "@swc/core": "1.10.18", + "@types/fs-extra": "11.0.4", + "@types/jquery": "3.5.32", + "@types/node": "18.19.76", + "conventional-changelog-cli": "5.0.0", + "conventional-changelog-conventionalcommits": "8.0.0", + "eslint": "9.21.0", + "eslint-config-prettier": "10.0.1", + "fs-extra": "11.3.0", + "globals": "16.0.0", + "handlebars": "4.7.8", + "npm-run-all": "4.1.5", + "prettier": "3.5.2", + "rimraf": "6.0.1", + "rollup": "4.34.8", + "rollup-plugin-styler": "2.0.0", + "rollup-plugin-swc3": "0.12.1", + "sass": "1.85.0", + "semver": "7.7.1", + "tslib": "2.8.1", + "typescript": "5.7.3", + "typescript-eslint": "8.24.1", + "vite": "6.1.1", + "vitest": "3.0.6", + "yargs": "17.7.2" + }, + "packageManager": "pnpm@10.4.1", + "pnpm": { + "onlyBuiltDependencies": [ + "@swc/core" + ] + } } diff --git a/packs/creatures.json b/packs/creatures.json deleted file mode 100644 index f26a85fc..00000000 --- a/packs/creatures.json +++ /dev/null @@ -1,31660 +0,0 @@ -[ - { - "_id": "1PYYg60DHC6RA3oO", - "name": "Erdelementar I", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 2, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 1, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -13, - "value": 13 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 8, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 44, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "token": { - "flags": {}, - "name": "Erdelementar I", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "1gfxWwrnHR292xO7", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "VHt6K5ArvzyfTEje", - "name": "Steinpranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "fIoBfLmNCxGfGzEX", - "name": "Steinwesen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "23wk4FP7dNTkLgB5", - "name": "Anfällig (Luft)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "2MFCw32xgaic6YGx", - "name": "Riesenratte", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/giant-rat-gray.png", - "data": { - "attributes": { - "body": { - "base": 4, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -4, - "value": 11 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 1, - "creatureType": "animal", - "sizeCategory": "small", - "experiencePoints": 41, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Riesenratte", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/giant-rat*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "DjakFZmEQxMYPByO", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "dVCq0990d0o158yt", - "name": "Scharfe Zähne", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BQoKmcUMRg4cmoXq", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "xMPWpgWRrjacTpYQ", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "EcGjrMRAXOOGHGY1", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion “Rennen” schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "3iMmLEmB0NEpyFGd", - "name": "Jungdrache (Silber)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "data": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Jungdrache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "wEXEZPwdakd6bfC3", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Quecksilber-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yTFT0UXNa9s9pbM4", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tWwaC91MGIR4k3Uy", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "4276kgAddflo3bwN", - "name": "Monsterspinne", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/monster-spider.png", - "data": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 48, - "value": 72 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:12)", - "foeFactor": 11, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 165, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Monsterspinne", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/monster-spider.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "6garwC2RmnT1olXz", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "5KumsWj49saU3R8P", - "name": "Spinnenbiss", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nU2FCLS66oVDnMkw", - "name": "Netzflüssigkeit", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "b80BR5n1f6WvGavG", - "name": "Dicke Spinnenhaut", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "v7zlqw9oygaGg5RF", - "name": "Kletterläufer", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "vNnnWKNHFzvSlquf", - "name": "Lähmungseffekt", - "type": "specialCreatureAbility", - "data": { - "description": "

Netzflüssigkeit (nur alle 10 Kampfrunden einsetzbar) macht Ziel für Probenergebnis in Kamprunden bewegungsunfähig, sofern ihm nicht KÖR+ST gelingt.

", - "experiencePoints": 25 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5maJ8tHAVZCxHGW6" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/paralysis-effect.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "vYPD5Je4xRUgTqcp", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "6Ezz8k1SB64HQ9o5", - "name": "Erwachsener Drache (Gold)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "data": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "tint": null, - "width": 4, - "height": 4, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "nylQOskI33K0K84V", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Licht-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yTFT0UXNa9s9pbM4", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pX6BSfPqftBLxuhf", - "name": "Angst (3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "6KmAeL9lVxWXIeU6", - "name": "Todesfee", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 6, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 3, - "mod": 0 - }, - "aura": { - "base": 9, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 35 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 23, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 284, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Todesfee", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "8ammfMKB85wsjdga", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "0tHp37tNXFa9akK0", - "name": "Geisterklaue", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "quc1WJJwo4UMlkg3", - "name": "Körperlos", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "U6mQ5sQwMjdLgUww", - "name": "Alterung (1 Jahr pro Schadenspunkt)", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", - "experiencePoints": -1 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "IolX9qsFGSxYN38o", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "w1h6K90G0l0RXQy5", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "eSMM4Zq5UPWN31iB", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VHUCIwHGz93rL2db", - "name": "Nur durch Magie verletzbar", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", - "experiencePoints": 50 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "vcdY5BrydMFLsnRU", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "We3eGY2UjINy3lRZ", - "name": "Wehklagen", - "type": "spell", - "data": { - "description": "

Jeder im Umkreis von 9m um die Todesfee erleidet nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", - "equipped": true, - "spellType": "spellcasting", - "bonus": "-(KÖR+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "9", - "unit": "meter" - }, - "duration": { - "value": "", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": null - } - }, - "sort": 1000000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "aTr4fC2AuCJ5PLGF", - "name": "Totenkraft", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", - "data": { - "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", - "experiencePoints": 10 - }, - "effects": [ - { - "_id": "xw1OyyTdDwkNe2jC", - "changes": [ - { - "key": "data.traits.strength.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - }, - { - "key": "data.traits.constitution.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "GEI + AU als Bonus auf Stärke und Härte", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 800000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" - } - } - } - ], - "effects": [ - { - "_id": "EeRWStF1rRiIO5Ar", - "changes": [ - { - "key": "data.traits.strength.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - }, - { - "key": "data.traits.constitution.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - } - ], - "disabled": false, - "duration": { - "startTime": 0 - }, - "icon": "icons/svg/aura.svg", - "label": "GEI + AU als Bonus auf Stärke und Härte", - "origin": "Compendium.ds4.creatures.6KmAeL9lVxWXIeU6.Item.aTr4fC2AuCJ5PLGF", - "tint": null, - "transfer": false, - "flags": {} - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "6YqxYCWfWVm6c8qM", - "name": "Schlachtross", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/war-horse.png", - "data": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 50, - "value": 75 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 9, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 121, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Schlachtross", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/war-horse.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "r1QNSjdAxR5cpV18", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "7rFkQfTzgSOYmhNP", - "name": "Huf", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "DzisICBhJKo3U7PX", - "name": "Rammen", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "Mx15GW5ApV4HImpy", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VQpngugF60q18Gpp", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "7B1AJKsZ9OBmj46R", - "name": "Erwachsener Drache (Rot)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "data": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "tint": null, - "width": 4, - "height": 4, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "nylQOskI33K0K84V", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Feuer-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pX6BSfPqftBLxuhf", - "name": "Angst (3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "WG8AshF0brFilFXB", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "7CvWSMFqWHvwajP1", - "name": "Drachenwelpe (Rot)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "U9pMNRDfFvurG3pT", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "4JCW7iKb2e9I2ZSj", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Feuer-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "F5KCKyCC8nD8lrn2", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "7kXHNCARsD0nZCqr", - "name": "Hai", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 13, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 13, - "value": 39 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:12)", - "foeFactor": 9, - "creatureType": "animal", - "sizeCategory": "normal", - "experiencePoints": 106, - "description": "" - } - }, - "token": { - "name": "Hai", - "img": "icons/svg/mystery-man.svg", - "displayName": 0, - "actorLink": false, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "alpha": 1, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightAlpha": 0.25, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "flags": {}, - "randomImg": false - }, - "items": [ - { - "_id": "LddIU7JRhnrzFzgr", - "name": "Großer Biss", - "type": "weapon", - "img": "icons/svg/item-bag.svg", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "4QWPtzkl6EncykP4", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - } - }, - { - "_id": "ncn9gc2yJOMhWGhb", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "data": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion “Rennen” schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - } - }, - { - "_id": "Q5TlvXVEyjer5YIG", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "8E7Mm0LsiqFm6syY", - "name": "Augenball", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 8, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 66, - "value": 88 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW #5A:20, #5M:20", - "foeFactor": 23, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Augenball", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "ZFKFQGL9QHEFmElo", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "V7Qw97Fk5MJgijNs", - "name": "Warzenhaut", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "z3o1FUNSKhEWkcpX", - "name": "Antimagie (10 Meter)", - "type": "specialCreatureAbility", - "data": { - "description": "

Sämtliche Magie in einem Radius von 10 Metern um die Kreatur herum ist wirkungslos. Dies gilt nicht für die eigene Magie der Kreatur oder deren Zauber.

", - "experiencePoints": 50 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oUR6JglLxmJZduZz" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/anti-magic.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tKiwh730ZOGMICdg", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "SZ8rvHDbY67EqjDN", - "name": "Mehrere Angriffe (+4)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 4 zusätzliche Zaubersprüche in jeder Runde aktionsfrei wirken, keinen einzelnen Zauberspruch jedoch mehr als einmal. Abklingzeiten müssen weiterhin berücksichtigt werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "v6ojDNs7V5QqwKgT", - "name": "Mehrere Angriffglieder (+4)", - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit 5 von insgesamt 10 Augen gleichzeitig an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl letztendlich sinkt.

\n

 

", - "experiencePoints": 0 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "coIsPp1V166g8IAm", - "name": "Schweben", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion “Rennen” ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "kY4uQF3t99ANzx5T", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "4brqkzqFxD3cuznA", - "name": "Einschläfern", - "type": "spell", - "data": { - "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u.ä. erwachen kann.

", - "equipped": true, - "spellType": "spellcasting", - "bonus": "-(KÖR+VE)/2 des jeweiligen Ziels", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 2, - "wizard": 5, - "sorcerer": 5 - } - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "mPr7h5IgX6YnBN81", - "name": "Gehorche", - "type": "spell", - "data": { - "description": "

Effekt: Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", - "equipped": true, - "spellType": "spellcasting", - "bonus": "-(GEI+VE)/2 des Ziels", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE/2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 12, - "sorcerer": 10 - } - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "CWlRXv0iQA71O3F8", - "name": "Kettenblitz", - "type": "spell", - "data": { - "description": "

Effekt: Der Zauberwirker schießt einen Blitz auf einen Feind, der auf bis zu VE weitere Gegner in seiner Nähe überspringt. Nur Gegner, die 2 oder mehr Meter von einem ihrer getroffenen Mitstreiter entfernt stehen, kann der Kettenblitz nicht erreichen:

Getroffene Gegner in Metallrüstung dürfen keine Abwehr gegen einen Kettenblitz würfeln.

", - "equipped": true, - "spellType": "targetedSpellcasting", - "bonus": "3", - "spellCategory": "electricity", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "5", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 16, - "wizard": 10, - "sorcerer": 10 - } - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.gePnhgqnsmdEbj3Z" - } - }, - "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-lightning.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "JWMyjIyd11ao2ifz", - "name": "Schleudern", - "type": "spell", - "data": { - "description": "

Diese Zauberspruch, gegen den das Ziel keine Abwehr würfeln kann, schleudert das Ziel (Probenergebnis/3) Meter weit fort.

\n

Das Ziel erhält für die Distanz, die es geschleudert wird (auch wenn eine Wand den Flug bremst) Sturzschaden (DS4 S. 85), gegen den es ganz normal Abwehr würfelt.

\n

Nach dem Fortschleudern liegt das Ziel immer am Boden.

", - "equipped": true, - "spellType": "targetedSpellcasting", - "bonus": "-(KÖR+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE/2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 16, - "wizard": 12, - "sorcerer": 10 - } - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.bKCGwIne0uoWZiY0" - } - }, - "img": "systems/ds4/assets/icons/game-icons/heavenly-dog/catapult.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3m6M1wZAgqH7cFPM", - "name": "Schutzfeld", - "type": "spell", - "data": { - "description": "

Effekt: Ein Schutzfeld mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, an dem nichtmagische Geschosse von außen her wirkungslos abprallen.

", - "equipped": true, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 4, - "wizard": 8, - "sorcerer": 8 - } - }, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.NWPoiZHCmZ7ZJud4" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/omega.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ta3oDzWuWLoRP1nl", - "name": "Schutzschild", - "type": "spell", - "data": { - "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis die Dauer des Zaubers abgelaufen ist.

", - "equipped": true, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 4, - "wizard": 8, - "sorcerer": 8 - } - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.dpz383XbGFXEsGot" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/bell-shield.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "j7bwJYOYLpSiniZQ", - "name": "Telekinese", - "type": "spell", - "data": { - "description": "

Mit diesem Zauber lässt der Zauberwirker einen unbelebten Gegenstand mit einer Geschwindigkeit von 1m pro Kampfrunde schweben, solange er sich ununterbrochen konzentriert (zählt als ganze Aktion).

", - "equipped": true, - "spellType": "targetedSpellcasting", - "bonus": "-1 pro (Stufe x 5) kg Gewicht", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Konzentration", - "unit": "custom" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 8 - } - }, - "sort": 1400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.VGeMfTNSKWzNGm6r" - } - }, - "img": "systems/ds4/assets/icons/game-icons/sbed/weight-crush.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "m8PJbnGLEdD7EukM", - "name": "Unsichtbarkeit", - "type": "spell", - "data": { - "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

\n

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", - "equipped": true, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 20, - "wizard": 12, - "sorcerer": 12 - } - }, - "sort": 1500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VsZHXIFLZYMbFqtL", - "name": "Verwirren", - "type": "spell", - "data": { - "description": "

Effekt: Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte...
1-5... greift die Charaktere an
6-10... läuft verwirrt in eine zuf. Richtung
11-15... steht verwirrt herum
16+... greift die eigenen Verbündeten an
", - "equipped": true, - "spellType": "spellcasting", - "bonus": "-(GEI+AU)/2", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 8, - "wizard": 5, - "sorcerer": 5 - } - }, - "sort": 1600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.niQVUxJHzdMDlwXc" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LwQmRVQ0GfZ9zct6", - "name": "Blenden", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/laser-sparks.svg", - "data": { - "description": "

Ein gleißender Lichtstrahl schießt aus der Hand des Zauberwirkers und blendet bei Erfolg das Ziel  (welches dagegen keine Abwehr würfeln darf).

\n

Ein geblendetes Ziel hat -8 auf alle Handlungen, bei denen es sehen können sollte.

\n

Selbst augenlose Untote, wie beispielsweise Skelette, werden durch das magische Licht geblendet. Blinde Lebewesen sind dagegen nicht betroffen.

", - "equipped": true, - "spellType": "targetedSpellcasting", - "bonus": "-(AGI+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "5", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": 5, - "sorcerer": null - } - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.JldAx8a91vVO2wUf" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "95N3CQpgVqg4zz0k", - "name": "Minotaurus", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/minotaur-brown.png", - "data": { - "attributes": { - "body": { - "base": 14, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 4, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 1, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 1, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 27, - "value": 54 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 1 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:16), BW 2B:20", - "foeFactor": 12, - "creatureType": "humanoid", - "sizeCategory": "large", - "experiencePoints": 138, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Minotaurus", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/minotaur*.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "M98627fx3VCfN1Lt", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "WnNygCJUgl9nJVDV", - "name": "Massive Keule", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hZvwSk1wun8Qjlmk", - "name": "Horn", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "CES4HTOhBcNY0c6G", - "name": "Huf", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "jhC7DbwCOazDTTVU", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "mOcmV58FSVafekAU", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "gPsGJGaDRosWvEEL", - "name": "Fell", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 600000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "A4zxgFGkMQpm67TR", - "name": "Jungdrache (Schwarz)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "data": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Jungdrache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "wEXEZPwdakd6bfC3", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Säure-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tWwaC91MGIR4k3Uy", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "TVxn2FjSGirdC90w", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "ABiPZtu7q8KhWzXL", - "name": "Fliegendes Schwert", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 5, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -12, - "value": 12 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 8, - "creatureType": "construct", - "sizeCategory": "small", - "experiencePoints": 57, - "description": "

Herstellung: 1513 GM + Waffenschmied

" - } - }, - "token": { - "flags": {}, - "name": "Fliegendes Schwert", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "qz6XeKPOe0kb1FMg", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "iVH3BR6wH35UTmmW", - "name": "Langschwert", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" - } - }, - "img": "icons/weapons/swords/sword-guard-blue.webp", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "r0mQXKDTdvRjlSze", - "name": "Metallwesen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XfgWdbwMTVhcS3A9", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "BIyY1wlxWtJ5FRQJ", - "name": "Kriegselefant", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 62, - "value": 93 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": -1 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:20)", - "foeFactor": 16, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 142, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Kriegselefant", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "dMi8vn8bGHaFji1z", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "5qBHfTnJAXibKNWs", - "name": "Rammen", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "OehvVDNjDg4xbsW7", - "name": "Dickhäuter", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "QwtwJGcSVFimiHM0", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "iVORjCynScc6kVsS", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "C4xijAwQdhRHz0Cs", - "name": "Hobgoblin", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/hobgoblin-sword-purple.png", - "data": { - "attributes": { - "body": { - "base": 11, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 3, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 24 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:18", - "foeFactor": 4, - "creatureType": "humanoid", - "sizeCategory": "normal", - "experiencePoints": 71, - "description": "" - } - }, - "token": { - "name": "Hobgoblin", - "img": "systems/ds4/assets/tokens/devin-night/hobgoblin-*.png", - "displayName": 0, - "actorLink": false, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "alpha": 1, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightAlpha": 0.25, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": "" - }, - "flags": {}, - "randomImg": true, - "tint": null, - "lightColor": null, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "wTcga48GOVD8cQV3", - "name": "Kettenpanzer", - "type": "armor", - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "data": { - "description": "

Laufen -0,5m

", - "quantity": 1, - "price": 10, - "availability": "village", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "effects": [ - { - "_id": "EkJB0kpYFHRMYSgl", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": "-0.5", - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -0,5m", - "tint": null, - "transfer": true - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.09Hp2c2jgoXx7cV0" - } - } - }, - { - "_id": "whLRBkMseej6C3IG", - "name": "Metallhelm", - "type": "armor", - "img": "icons/equipment/head/helm-barbute-reinforced.webp", - "data": { - "description": "

Initiative -1

", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "helmet" - }, - "effects": [ - { - "_id": "wlQWjU1kXovR5G1J", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": "-1", - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -1", - "tint": null, - "transfer": true - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.fKhTsMO4YXDYY8GX" - } - } - }, - { - "_id": "n3SYaxRnVV0nTKtq", - "name": "Holzschild", - "type": "shield", - "img": "icons/equipment/shield/round-wooden-boss-steel-brown.webp", - "data": { - "description": "

Zerbricht bei einem Abwehr-Patzer

", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "armorValue": 1 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.J7d2zx4kqKEdMR1j" - } - } - }, - { - "_id": "QXzGnyknBZaJqCIc", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - } - }, - { - "_id": "xAd7jo7Ni2KSl16I", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - }, - { - "_id": "MSuVIzM2MRDSyujQ", - "name": "Langschwert", - "type": "weapon", - "img": "icons/weapons/swords/sword-guard-blue.webp", - "data": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" - } - } - }, - { - "_id": "lXtH1PL4nnpzMGkI", - "name": "Kurzbogen", - "type": "weapon", - "img": "icons/weapons/bows/shortbow-leather.webp", - "data": { - "description": "

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "effects": [ - { - "_id": "zgiIGlRMVCgAzrn7", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": "1", - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": null, - "transfer": true - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.QsnvAep80sSVJToD" - } - } - } - ], - "effects": [ - { - "_id": "JHK7Wjpao2TJM9FZ", - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": "-0.5", - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": 0 - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -0,5m", - "origin": "Compendium.ds4.creatures.C4xijAwQdhRHz0Cs.Item.wTcga48GOVD8cQV3", - "tint": null, - "transfer": false, - "flags": {} - }, - { - "_id": "ZtHVENPFHCbXGOig", - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": "-1", - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": 0 - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -1", - "origin": "Compendium.ds4.creatures.C4xijAwQdhRHz0Cs.Item.whLRBkMseej6C3IG", - "tint": null, - "transfer": false, - "flags": {} - }, - { - "_id": "dNE6ol93DRVL7KwH", - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": "1", - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": 0 - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "origin": "Compendium.ds4.creatures.C4xijAwQdhRHz0Cs.Item.lXtH1PL4nnpzMGkI", - "tint": null, - "transfer": false, - "flags": {} - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "CIzMY691MK016h4E", - "name": "Luftelementar I", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 6, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -9, - "value": 10 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 4, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 68, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "token": { - "flags": {}, - "name": "Luftelementar I", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "ebUVbfFN2LspTI94", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "PL4rUPVh5MRMW796", - "name": "Luftstoß", - "type": "weapon", - "data": { - "description": "

-1 WB / 2m

", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ghW7FO5d2do95peV", - "name": "Keine feste Gestalt", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "wqzMhcBGP8qbClRW", - "name": "Anfällig (Erde)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.mAWyVCfTFH6JiEIu" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3yeOHhXD8iJrtRJL", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "DNbOkqUg7jitTTbw", - "name": "Luftelementar III", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 15, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 7, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 32, - "value": 64 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 16, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 143, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "token": { - "flags": {}, - "name": "Luftelementar III", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "mlFiwti2SQP1yGVA", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "PL4rUPVh5MRMW796", - "name": "Luftstoß", - "type": "weapon", - "data": { - "description": "

-1 WB / 2m

", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ghW7FO5d2do95peV", - "name": "Keine feste Gestalt", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "wqzMhcBGP8qbClRW", - "name": "Anfällig (Erde)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.mAWyVCfTFH6JiEIu" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3yeOHhXD8iJrtRJL", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "DoaYEZc7DgLJQ8yg", - "name": "Erwachsener Drache (Schwarz)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "data": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "tint": null, - "width": 4, - "height": 4, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "nylQOskI33K0K84V", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Säure-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pX6BSfPqftBLxuhf", - "name": "Angst (3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "YH44ChGg43M1zfJV", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "EItxqEiDUOmJdy4n", - "name": "Troll", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/troll-blue.png", - "data": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 2, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 30, - "value": 60 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 3 - }, - "movement": { - "mod": 1 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "#BW 1B16", - "foeFactor": 14, - "creatureType": "humanoid", - "sizeCategory": "large", - "experiencePoints": 202, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Troll", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/troll*.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "PY0MV3sdptBZWb2t", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "mirrorX": false, - "mirrorY": false, - "alpha": 1, - "lightColor": null, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "k4z8YIPc1sSdgAuf", - "name": "Massive Keule", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "SUbNCeLDrM29kOjI", - "name": "Geworfener Fels", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "2t0pWjoVV6V1XL7m", - "name": "Warzenhaut", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XBYL6p6Lh2di3cL0", - "name": "Anfällig (Licht)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Lichtangriffe.

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.aOsmsf7jIK7hU9U8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ut3GaXn0lU6CJO2f", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "wxRyDYdcYDvfRLsw", - "name": "Regeneration", - "type": "specialCreatureAbility", - "data": { - "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations- Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hutBK3nVQ2TZBivP", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "275bgVmTqYULPH3V", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "F3zJ4xbHwN9syuK8", - "name": "Medusa", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/medusa-pale.png", - "data": { - "attributes": { - "body": { - "base": 11, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 12, - "value": 36 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW A:18), BW #5A:20, #5M:20", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 205, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Medusa", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/medusa*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "0pxr3J1Tdtd22rUp", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "08rqhbd0eadzrJxS", - "name": "Klauen", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "YL8uGdXD9QX45OvA", - "name": "Schlangen", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3Gxud5Mn5gy97Qie", - "name": "Schuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "MuXvP2TjwvevxLpo", - "name": "Blickangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "RhdH7ESwq8ukGvTy", - "name": "Mehrere Angriffe (+5)", - "type": "specialCreatureAbility", - "data": { - "description": "

Von den zahlreichen Geschwindigkeit an Wänden und Decken aktionsfrei Schlangen auf ihrem Kopf können jeweils 5 in jeder Runde klettern. Kann auf Gegner herabfallen, wobei Schlagen um Nahkampfgegner angreifen.

\n

 

", - "experiencePoints": -1 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "CTAZdf7uuEQ4sWA9", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "NEEOtiJGhOpZ7RuW", - "name": "Versteinern", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber Allheilung aufgehoben werden.

", - "experiencePoints": 50 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "FYpSMLagk6Qs6MWS", - "name": "Erwachsener Drache (Grün)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "data": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "tint": null, - "width": 4, - "height": 4, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "nylQOskI33K0K84V", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Giftgas-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pX6BSfPqftBLxuhf", - "name": "Angst (3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3bhEx0YT3KTgl19E", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "FxGhbznQbwd0jRUT", - "name": "Keiler", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/boar-brown-1.png", - "data": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 13, - "value": 38 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:10)", - "foeFactor": 6, - "creatureType": "animal", - "sizeCategory": "normal", - "experiencePoints": 79, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Keiler", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/boar*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "VVkjpoXUWpi5rcZC", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "wQm8AMxYF0NKZhQE", - "name": "Hauer", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "DDaq3xgZrGuEl4Dc", - "name": "Dicke Borstenhaut", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yru5VWx93wWmOXZA", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "DyCGJ2kxHV5QYgWK", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "GMUTgcbmahiwgXSj", - "name": "Hydra", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/hydra-blue.png", - "data": { - "attributes": { - "body": { - "base": 14, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 60, - "value": 90 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 4 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:20)", - "foeFactor": 23, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 246, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Hydra", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/hydra*.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "lbfAAyIAb7SZynYq", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "TEjCLP10Mjf8XqCl", - "name": "Großer Biss", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "jcgmsC6XoKcSpu6a", - "name": "Schuppenpanzer", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "jtnlL78QKAyrNEey", - "name": "Mehrere Angriffe (+5)", - "type": "specialCreatureAbility", - "data": { - "description": "

 Kann mit seinen insgesamt sechs Köpfen 5 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

\n

 

", - "experiencePoints": -1 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "dnGDZ0R98VlEskVv", - "name": "Mehrere Angriffglieder (+5)", - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit insgesamt 6 Köpfen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

\n

 

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "KwCXBwhluHD0uHIW", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "CIzNpB4GXHkdFsAI", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "HOykiW9ZmatUSUKm", - "name": "Regeneration", - "type": "specialCreatureAbility", - "data": { - "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations- Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", - "experiencePoints": -1 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "YvT74RD5F3M4DMEx", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion “Rennen” schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "GVLSLNSoMybeWhBP", - "name": "Basilisk", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/basilisk-green.png", - "data": { - "attributes": { - "body": { - "base": 14, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 1, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 140, - "value": 168 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:20)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 206, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Basilisk", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/basilisk*.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "6rxbUsLLhaN7dr5B", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "y5i2zrZBp74DKQrQ", - "name": "Großer Biss", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3CFakJA3eQJYSFN7", - "name": "Schuppenpanzer", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "x7vdeybwnlRnlqTu", - "name": "Blickangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "kQZnCtDlaCaKc38S", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "cZa7Ms69DWYg8Pgz", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "Hn8EIElYWelAKxiD", - "name": "Versteinern", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber Allheilung aufgehoben werden.

", - "experiencePoints": 50 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "GWNFUkgxocfKchIQ", - "name": "Reitkeiler", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/boar-brown-1.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 12, - "value": 35 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:10)", - "foeFactor": 5, - "creatureType": "animal", - "sizeCategory": "normal", - "experiencePoints": 76, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Reitkeiler", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/boar*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "5J0wbALPl2mzcHix", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "nUiNfU3pFgeeoRNR", - "name": "Hauer", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pSQjVkwbjngPoEPZ", - "name": "Dicke Borstenhaut", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VfFAFdeQ7jhTlAz1", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "MMjbCu5tz7v52LOJ", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "GeUXlf57uWcGVGRH", - "name": "Drachenwelpe (Silber)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "U9pMNRDfFvurG3pT", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "4JCW7iKb2e9I2ZSj", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Quecksilber-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yTFT0UXNa9s9pbM4", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "GnW2ELzTtLoJmUQ1", - "name": "Gargyl", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/gargoyle-gray.png", - "data": { - "attributes": { - "body": { - "base": 7, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 1, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 1, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -9, - "value": 10 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:8)", - "foeFactor": 6, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 91, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Gargyl", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/gargoyle*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "Bqpw2yiq6CEa1oAN", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "XGrSqryhxGUlUJkC", - "name": "Steinklaue", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "e28wsq9gdMv8u94N", - "name": "Steinwesen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ur7rgX6JTOwscpm5", - "name": "Anfällig (Luft)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XSowCGPLnuUUt0gb", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "IEf4b9ukDhSecShW", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "7x3a6bQcUXDNNjfx", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ILpCHZ6o5GV4NakU", - "name": "Kletterläufer", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "iZL3YxmtOHvZvYgW", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "FydhkYVuUuHNXzxS", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "HSgR2FXUmsT2zfIc", - "name": "Golem, Knochen-", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 6, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 20, - "value": 40 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 11, - "creatureType": "construct", - "sizeCategory": "large", - "experiencePoints": 148, - "description": "

Herstellung: 2613 GM + Schreinern

" - } - }, - "token": { - "flags": {}, - "name": "Golem, Knochen-", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "o3KlmaUUDMl8taYP", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "KzEfCqb54s8Ju7x1", - "name": "Knochenpranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lB0BTGi2Qp2IpbTp", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "QTbksMwiH60vH9lT", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "7HsvjAKlmOXSvm6e", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "y8yRArJSJhHTdPXU", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "43U10Znpq4coew6C", - "name": "Mehrere Angriffe (+3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann mit seinen insgesamt vier Armen 3 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

\n

 

", - "experiencePoints": -1 - }, - "sort": 550000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "Lu7kcH5ekEpY8YDU", - "name": "Mehrere Angriffglieder (+4)", - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit insgesamt 4 Armen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

\n

 

", - "experiencePoints": 0 - }, - "sort": 575000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "HgTRHAjq1YBk40sO", - "name": "Echsenmensch", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/lizard-man-green-dark.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 3, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 21 - }, - "defense": { - "mod": 2 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:12, #2B:17", - "foeFactor": 3, - "creatureType": "humanoid", - "sizeCategory": "normal", - "experiencePoints": 71, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Echsenmensch", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/lizard-man*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "uxYax06e6oRSDkj8", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "5X3YrQ6PeuexE5QD", - "name": "Speer", - "type": "weapon", - "data": { - "description": "

Zerbricht bei Schießen-Patzer

", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q" - } - }, - "img": "icons/weapons/polearms/spear-hooked-simple.webp", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "CylYyspqzzOiD3QA", - "name": "Schuppenpanzer", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tOY9c09eNSqmJHki", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "G0avaPXmxplRB8al", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "HgfrjXKUApOXvkUX", - "name": "Pony", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/horse-brown.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 5, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 3, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 92, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Pony", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/horse*.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "3WUrNoPW33rHe4UK", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "jpyXagx6Gqji5I09", - "name": "Huf, in Notwehr", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "7I2yvv1ctfP1BND7", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "HjpxMlpyjPr3hd3r", - "name": "Adler", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/eagle.png", - "data": { - "attributes": { - "body": { - "base": 3, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 1, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 1, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 1, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -6, - "value": 7 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:11)", - "foeFactor": 1, - "creatureType": "animal", - "sizeCategory": "small", - "experiencePoints": 52, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Adler", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/eagle.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "I6mNZU4TJ3WJt2Qu", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "9vJL3lyC4RTQCZ7e", - "name": "Krallen", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "zYQAanmjVsNytqBl", - "name": "Federkleid", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ysyoJA3dYTu4XXvt", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "k9Ng7RdfvSRN5JVW", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "zUXT2ZkY12TAu5CU", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "InLjj4RGxfkDrtXr", - "name": "Bär", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/bear-1.png", - "data": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 50, - "value": 75 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:16)", - "foeFactor": 9, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 139, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Bär", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/bear*.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "Bv611an6850AMRiZ", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "qZayWokGcZreHpfI", - "name": "Pranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ayDGYJevUkbQ3N0c", - "name": "Fell", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "PKewYpkEmAWTc1j5", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "WbEsNLQpzoWJlJyj", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "JGpIh3oCK1Vx3NnZ", - "name": "Kriegsdämon", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 15, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 7, - "mod": 0 - }, - "constitution": { - "base": 7, - "mod": 0 - }, - "agility": { - "base": 5, - "mod": 0 - }, - "dexterity": { - "base": 5, - "mod": 0 - }, - "intellect": { - "base": 5, - "mod": 0 - }, - "aura": { - "base": 5, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 128, - "value": 160 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 23, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 297, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Kriegsdämon", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "N7SXszK9IDE0AOBv", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "bXEiQJc7aJmLW1K4", - "name": "Pranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "N6MfjihlDL9hfse6", - "name": "Dämonenhaut", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BDsxMEuEKfjEgFk3", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "AHJhJgRCvw2dKx78", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "DURD01IkVxPAwlxf", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hvOFruV5fmieLXnk", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "KlpfMH3L3pL82SSd", - "name": "Erwachsener Drache (Weiss)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "data": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": "

Drachenarten

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FarbeOdemWesen...
BlauBlitz-...der Dunkelheit
BronzeSchallwellen-...des Lichts
GelbSandsturm-...der Dunkelheit
GoldLicht-...des Lichts
GrünGiftgas-...der Dunkelheit
RotFeuer-...der Dunkelheit
SchwarzSäure-...der Dunkelheit
SilberQuecksilber-...des Lichts
WeissFrost-...der Dunkelheit
" - } - }, - "token": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "tint": null, - "width": 4, - "height": 4, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "nylQOskI33K0K84V", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Frost-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pX6BSfPqftBLxuhf", - "name": "Angst (3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "27WSvh2zN2Th7iAs", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "Ko3jVM757Kr89IQr", - "name": "Erwachsener Drache (Bronze)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "data": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "tint": null, - "width": 4, - "height": 4, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "nylQOskI33K0K84V", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Schallwellen-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yTFT0UXNa9s9pbM4", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pX6BSfPqftBLxuhf", - "name": "Angst (3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "LgtcLrKtCa496ih6", - "name": "Kampfdämon", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 8, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 4, - "mod": 0 - }, - "aura": { - "base": 4, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 23, - "value": 46 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 1 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 8, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 152, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Kampfdämon", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "YzrIaAT1nmUg1rnX", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "bXEiQJc7aJmLW1K4", - "name": "Pranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "N6MfjihlDL9hfse6", - "name": "Dämonenhaut", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BDsxMEuEKfjEgFk3", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "AHJhJgRCvw2dKx78", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "DURD01IkVxPAwlxf", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hvOFruV5fmieLXnk", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "LtsbT2DHYKs9Catm", - "name": "Hoher Dämon", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 7, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 6, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 3, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 20 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 4, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 104, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Hoher Dämon", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "LRlzg1VY2rax4Z8i", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "bXEiQJc7aJmLW1K4", - "name": "Pranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "N6MfjihlDL9hfse6", - "name": "Dämonenhaut", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BDsxMEuEKfjEgFk3", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "AHJhJgRCvw2dKx78", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "DURD01IkVxPAwlxf", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hvOFruV5fmieLXnk", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "O2maANGDJHPLX8aE", - "name": "Unwolf", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/nether-wolf.png", - "data": { - "attributes": { - "body": { - "base": 11, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 12, - "value": 35 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:16)", - "foeFactor": 7, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 115, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Unwolf", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/nether-wolf.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "UjMAidcTS3JIK0Qp", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "9olbXmWVzPkmPhvu", - "name": "Biss", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "p3zhDhgstlj2JMxe", - "name": "Feuerodem", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hcB5LcidhVSW5rI7", - "name": "Brennendes Fell", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "MPb5ZrTIutJ291XD", - "name": "Anfällig (Wasser)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "fMULyKcCpn2tVMPO", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "qLG2ZZPYGAbLzpBf", - "name": "Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "4851TNs45Q3hSrU1", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "NXxoBj91nyeyBm4M", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "OsCyBwPcejWRSqLr", - "name": "Erwachsener Drache (Silber)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "data": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "tint": null, - "width": 4, - "height": 4, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "nylQOskI33K0K84V", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Quecksilber-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yTFT0UXNa9s9pbM4", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pX6BSfPqftBLxuhf", - "name": "Angst (3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "P3mlpN2JrbnDtLwJ", - "name": "Mumie", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 4, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 32 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 1 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW #2A:18, #1M:16", - "foeFactor": 18, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 124, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Mumie", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "TAxr4QuPUxxGvouJ", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "MxXeRwM7Mw1OqmAC", - "name": "Fäulnispranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "Icq7W8YrjXTIlb7C", - "name": "Bandagen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "Kf2kAdMidDaK1SVD", - "name": "Anfällig (Feuer)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yUtiK9PSMcNcvXfr", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "F3UjrYhsbCLoyFm3", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hewKWM2G62KKAj7L", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "HTx80TohpA38jyAy", - "name": "Werteverlust (KÖR)", - "type": "specialCreatureAbility", - "data": { - "description": "

Pro schadensverursachendem Treffer wird KÖR um 1 gesenkt (bei KÖR Null ist das Opfer tot). Pro Tag oder Anwendung des Zaubers Allheilung wird 1 verlorener Attributspunkt regeneriert.

", - "experiencePoints": 15 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.RwT0NBwkc1TuAR1e" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "PFpQT1jYCeKy2yuk", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nX0rcnKD1xHYwysw", - "name": "Totenkraft", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", - "data": { - "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", - "experiencePoints": 10 - }, - "effects": [ - { - "_id": "xw1OyyTdDwkNe2jC", - "changes": [ - { - "key": "data.traits.strength.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - }, - { - "key": "data.traits.constitution.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "GEI + AU als Bonus auf Stärke und Härte", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 700000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" - } - } - } - ], - "effects": [ - { - "_id": "xOFATK3tVf0XChho", - "changes": [ - { - "key": "data.traits.strength.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - }, - { - "key": "data.traits.constitution.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - } - ], - "disabled": false, - "duration": { - "startTime": 0 - }, - "icon": "icons/svg/aura.svg", - "label": "GEI + AU als Bonus auf Stärke und Härte", - "origin": "Compendium.ds4.creatures.P3mlpN2JrbnDtLwJ.Item.nX0rcnKD1xHYwysw", - "tint": null, - "transfer": false, - "flags": {} - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "PKPmkOMLDGwS9QZJ", - "name": "Dämonenfürst", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 20, - "mod": 0 - }, - "mobility": { - "base": 20, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 10, - "mod": 0 - }, - "constitution": { - "base": 10, - "mod": 0 - }, - "agility": { - "base": 10, - "mod": 0 - }, - "dexterity": { - "base": 10, - "mod": 0 - }, - "intellect": { - "base": 5, - "mod": 0 - }, - "aura": { - "base": 5, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 360, - "value": 400 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 42, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 579, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Dämonenfürst", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 4, - "height": 4, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "1UUWSF4RWJ1I8cuH", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "bXEiQJc7aJmLW1K4", - "name": "Pranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "N6MfjihlDL9hfse6", - "name": "Dämonenhaut", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BDsxMEuEKfjEgFk3", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "AHJhJgRCvw2dKx78", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "DURD01IkVxPAwlxf", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hvOFruV5fmieLXnk", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "PVuNoFILDAHpqGsa", - "name": "Raubkatze", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/feline-predator-panther.png", - "data": { - "attributes": { - "body": { - "base": 7, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 5, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 9, - "value": 27 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:18)", - "foeFactor": 2, - "creatureType": "animal", - "sizeCategory": "normal", - "experiencePoints": 84, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Raubkatze", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/feline-predator*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "gkIk5BRcx8UaqGo6", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "LZJzGcDrnXdAEPkP", - "name": "Pranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "8Um85s0Ayigqse3B", - "name": "Biss", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "J1JDirHXfexacI9G", - "name": "Fell", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h9DFDddV6zHABNNR", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "X8PG6Z929me6Fewo", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "vyDe0soNx67ZePNM", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "QWC9LW1g4aMUHZNc", - "name": "Riesenechse", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/giant-lizard-olive.png", - "data": { - "attributes": { - "body": { - "base": 15, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 14, - "mod": 0 - }, - "agility": { - "base": 5, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 179, - "value": 218 - }, - "defense": { - "mod": -10 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 4.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:16)", - "foeFactor": 25, - "creatureType": "humanoid", - "sizeCategory": "huge", - "experiencePoints": 316, - "description": "" - } - }, - "token": { - "name": "Riesenechse", - "img": "systems/ds4/assets/tokens/devin-night/giant-lizard*.png", - "displayName": 0, - "actorLink": false, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "alpha": 1, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightAlpha": 0.25, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": "" - }, - "flags": {}, - "randomImg": true, - "tint": null, - "lightColor": null, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "0EPSA2vb34Nilg91", - "name": "Grausamer Biss", - "type": "weapon", - "img": "icons/svg/item-bag.svg", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "2C5NsY0F4qndyWGS", - "name": "Schuppenpanzer", - "type": "armor", - "img": "icons/svg/item-bag.svg", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "I5qUZBkW7JLwuCze", - "name": "Kletterläufer", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", - "data": { - "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", - "experiencePoints": 10 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" - } - } - }, - { - "_id": "xtiIwy6EYYRPkXN9", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - } - }, - { - "_id": "OBlOP38tzoxwhNuj", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - } - }, - { - "_id": "WiyqJV69YblM42Ot", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - } - }, - { - "_id": "T8SibpTZqhohwVkB", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält. Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "Qm2toXbf6EVmvRS1", - "name": "Hund", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dog-pitbull-2.png", - "data": { - "attributes": { - "body": { - "base": 5, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -4, - "value": 11 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 1, - "creatureType": "animal", - "sizeCategory": "small", - "experiencePoints": 31, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Hund", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dog*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "DjEbRcq3oupJv8Lp", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "j0NbwyhdJPipL7Rl", - "name": "Biss", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "PlB4iu4DBqxypeR0", - "name": "Fell", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lmc1Llwdx3k697VS", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "QudriM5XZhEC7D6v", - "name": "Oger", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/ogre-blue.png", - "data": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 2, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 25, - "value": 50 - }, - "defense": { - "mod": 1 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:8, #1B18", - "foeFactor": 10, - "creatureType": "humanoid", - "sizeCategory": "large", - "experiencePoints": 121, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Oger", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/ogre*.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "jcTaTrzuwKW7eY97", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": "" - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "hYNvoybPpmNB7ldb", - "name": "Massive Keule", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "M90M3KCsByyNno2f", - "name": "Felle", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yIAptcyyzAytAPRc", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "u8EFs9MhGH4cjqzI", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "THrZ1zvzJTdJ0413", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "RWNocIHuXIWwUwJu", - "name": "Jungdrache (Gold)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "data": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Jungdrache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "wEXEZPwdakd6bfC3", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Licht-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yTFT0UXNa9s9pbM4", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tWwaC91MGIR4k3Uy", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "Rvu16XzEjizdqNsu", - "name": "Skelett", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/skeleton-green.png", - "data": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 22 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 4, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 72, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Skelett", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/skeleton*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "lOyUeRfKbRRa7xfE", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "PhvbJ2VSw3ivWS3F", - "name": "Knochenklaue", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "jmoVrv9FCX28B4PJ", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "e5PbQLkYj3kldXil", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "RxSUSzQBSTFYHOlV", - "name": "Niederer Dämon", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 5, - "mod": 0 - }, - "mobility": { - "base": 5, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -8, - "value": 9 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 1, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 71, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Niederer Dämon", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "QF8cn9yh7Bwez4rU", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "bXEiQJc7aJmLW1K4", - "name": "Pranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "N6MfjihlDL9hfse6", - "name": "Dämonenhaut", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BDsxMEuEKfjEgFk3", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "AHJhJgRCvw2dKx78", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "DURD01IkVxPAwlxf", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hvOFruV5fmieLXnk", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "S8DNL5XpmNRSNJhD", - "name": "Erdelementar II", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 17, - "mod": 0 - }, - "mobility": { - "base": 2, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 1, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 32 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 15, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 70, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "token": { - "flags": {}, - "name": "Erdelementar II", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "2osE2nTUS4wPNznk", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "VHt6K5ArvzyfTEje", - "name": "Steinpranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "fIoBfLmNCxGfGzEX", - "name": "Steinwesen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "23wk4FP7dNTkLgB5", - "name": "Anfällig (Luft)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "SQv63FQBjA5jW5xv", - "name": "Einhorn", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 13, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 6, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 1, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:12, #2B:17", - "foeFactor": 9, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 189, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Einhorn", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "fryx8sTaxHdzSF7D", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "o8CRX0tj3mrixbeV", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "k4syi7gvtjmG6yVt", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ywm8DSneqBXy2Pk9", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "RWRBDrcHL1YK6MvZ", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "m78risNOMkOZtoix", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

 Kann 1 zusätzlichen Angriff (Horn oder Hufe) in jeder Runde aktionsfrei ausführen.

\n

 

", - "experiencePoints": -1 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "WLc6j329EiSfsRj5", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ysPz3YM2HzR9rptL", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "As31RtyHN8S4aN7O", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "aF0UJRVuctjViXMK", - "name": "Spurt", - "type": "spell", - "data": { - "description": "

Der Laufen-Wert des Ziels wird für die Dauer des Zaubers verdoppelt.

\n

Kann jederzeit aktionsfrei und ohne Probe gewirkt werden (Ablinkgzeiten gelten weiterhin).

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 7, - "wizard": 7, - "sorcerer": 7 - } - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.KUbT1gBeThcLY7vU" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/run.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "T9YRYe0vnR4Qg4UM", - "name": "Schatten", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/shadow.png", - "data": { - "attributes": { - "body": { - "base": 11, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 25 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 14, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 126, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Schatten", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/shadow.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "UAhG6X5OTSSAwjvc", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "yFI8eLZ0z1PSjGYH", - "name": "Geisterklaue", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "PxhF7w8cBdqE2pBa", - "name": "Körperlos", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "gfZuHfJiCyZUskwn", - "name": "Alterung (1 Jahr pro Treffer)", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Treffer altert das Ziel um 1 Jahr.

", - "experiencePoints": 1 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.e9F812racwKeZPgR" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "po7mBrqpDWKlXbtu", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LAAz2aBZoHatDHqJ", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "6eLzanLV8RG4p2Da", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "US32MfI48tX5x8Kz", - "name": "Drachenwelpe (Blau)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "U9pMNRDfFvurG3pT", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "4JCW7iKb2e9I2ZSj", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Blitz-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "2lkp7kvBk98s2WcR", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "WYvb8G0z5GuNi7kO", - "name": "Rostassel", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/rust-bug.png", - "data": { - "attributes": { - "body": { - "base": 8, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 11, - "value": 33 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:6)", - "foeFactor": 8, - "creatureType": "animal", - "sizeCategory": "normal", - "experiencePoints": 111, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Rostassel", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/rust-bug.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "jb06wL2PGY3Ve9cQ", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "FQMPNxKTTpOynbsK", - "name": "Tentakelfühler", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "b1YoPObYAlp0qgLo", - "name": "Chitinpanzer", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "oT9c8PFOqW9NjOKA", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "OgwADTLcESeGWMih", - "name": "Mehrere Angriffe (+3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann mit seinen insgesamt vier Tentakelfühlern 3 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

\n

 

", - "experiencePoints": -1 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "vZZ50RNjZbkNI0Ha", - "name": "Mehrere Angriffglieder (+3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit insgesamt vier Tentakelfühlern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg  abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt

", - "experiencePoints": 0 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.8HmrA97ZqN7nEYgm" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "iuxp4uQYS1XdH0gG", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pBC4SwfIsoVZ5Org", - "name": "Rost", - "type": "specialCreatureAbility", - "data": { - "description": "

Jeder Treffer der Tentakelfühler reduziert die PA eines zufälligen, metallischen, nichtmagischen Rüstungsstückes des Ziels um 1. Gleiches gilt für den WB nichtmagischer Metallwaffen, die die Rostassel treffen.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oPTuLvZOEsXnRPed" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/rust.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "WboyONCY2UZildi9", - "name": "Baumherr", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 20, - "mod": 0 - }, - "mobility": { - "base": 1, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 35, - "value": 70 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Lediglich Brennholz", - "foeFactor": 23, - "creatureType": "plantBeing", - "sizeCategory": "large", - "experiencePoints": 158, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Baumherr", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "CEYi2gFp6B3EZJK9", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "CM1yKVLm6mhG2eQE", - "name": "Asthiebe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "sZw8glq3cnPHu6yq", - "name": "Dicke Rinde", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "X9jyAzrnyxuikyg3", - "name": "Anfällig (Feuer)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "B1Sw09kZopPZB8ys", - "name": "Mehrere Angriffe (+3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 3 zusätzliche Asthiebe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "x0mAm5abWWHlKJLz", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "2bA1MnqkTTwKtMoS", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "fKCcOlyaebvj1HuL", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "Xn7g2PB1rXvllwRi", - "name": "Wasserelementar II", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 11, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 24 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 9, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 83, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

\n

 

" - } - }, - "token": { - "flags": {}, - "name": "Wasserelementar II", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "stsXXyb5Ffse05mc", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "HPT4hAgQnGf1gbJR", - "name": "Wasserstrahl", - "type": "weapon", - "data": { - "description": "

-1 WB / 2 Meter

", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "OIKYSareGFhHJxAB", - "name": "Keine feste Gestalt", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "NKUKD1KfNTpKZygj", - "name": "Anfällig (Feuer)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VCmj5YFjcDb1Slay", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion “Rennen” schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "XxrCtx56f0njVodK", - "name": "Schlingwurzelbusch", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 6, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 10, - "value": 30 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Lediglich Brennholz", - "foeFactor": 7, - "creatureType": "plantBeing", - "sizeCategory": "normal", - "experiencePoints": 122, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Schlingwurzelbusch", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "qPlKCnyMqojZt5uu", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "eOBJ9tJLFizjQW0e", - "name": "Wurzelhiebe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "23MVIoRbK0X5AudH", - "name": "Gehölz", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3YSmdA5G9MS2g4Dn", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "0QUScCjMSupBxEo4", - "name": "Mehrere Angriffe (+4)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 4 zusätzliche Hiebe mit seinen unzähligen Wurzeln in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "uoE0EQZy2aEQGJWp", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "SMDvuSaB2M06xcg5", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "Z5eEkZjZ525N90ai", - "name": "Eulerich", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/owldritch-brown.png", - "data": { - "attributes": { - "body": { - "base": 14, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 27, - "value": 54 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:14)", - "foeFactor": 11, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 115, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Eulerich", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/owldritch*.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "Xugd0ZDrqXT6og2c", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "3yCyEbqp9F3TgJkS", - "name": "Pranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3L2HJX2p7uIpxTjJ", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "gzsgGDcT6pGXHxIZ", - "name": "Federkleid", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "Z7Dt5epXbuKn20US", - "name": "Riesenkrake", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 22, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 8, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 234, - "value": 270 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 4 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:18)", - "foeFactor": 35, - "creatureType": "animal", - "sizeCategory": "huge", - "experiencePoints": 397, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Riesenkrake", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "eh1V05ZcuBSNpN8w", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "uhUCjZsudH4tikXb", - "name": "Fangarme", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "dm1gTdRLMsRP3dYJ", - "name": "Mehrere Angriffe (+5)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann mit seinen insgesamt sechs Fangarmen 5 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "Pk39V01Z4NKJ07oI", - "name": "Mehrere Angriffglieder (+5)", - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit insgesamt 6 Fangarmen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg  btrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "JQuu3LzkV71R3eHr", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "E5gJyppsFCHmEQLT", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion “Rennen” schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "ZJF6ieo8O0GXfgwz", - "name": "Wasserelementar I", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 6, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -9, - "value": 10 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 3, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 60, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "token": { - "flags": {}, - "name": "Wasserelementar I", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "YitLuboAB8nL31Ok", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "HPT4hAgQnGf1gbJR", - "name": "Wasserstrahl", - "type": "weapon", - "data": { - "description": "

-1 WB / 2 Meter

", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "OIKYSareGFhHJxAB", - "name": "Keine feste Gestalt", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "NKUKD1KfNTpKZygj", - "name": "Anfällig (Feuer)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VCmj5YFjcDb1Slay", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion “Rennen” schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "ZZEBR9R04TlNXU5q", - "name": "Schwarm", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 0, - "mod": 0 - }, - "mobility": { - "base": 0, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -10, - "value": 0 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 8 - }, - "movement": { - "mod": 6.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 5, - "creatureType": "animal", - "sizeCategory": "small", - "experiencePoints": 68, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Schwarm", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "EBfWXBS51JlpR9nK", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "2Da0MbWQ8gy1WXBI", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pII9BR3ndtlMaL4l", - "name": "Schwarm", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt als einzelner Gegner. Der Schwarmwert (SCW) entspricht seiner aktuellen Mitgliederanzahl/10 (zu Beginn und max. 200 Mitglieder pro Schwarm = SCW 20). Pro 1 LK Schaden sterben 10 Mitglieder (= SCW -1). Schwärme können Mitglieder an benachbarte Felder abgeben und ihr eigenes sowie jedes angrenzende Feld gleichzeitig angreifen (mit jeweils vollen Schlagen-Wert).

\n

Schlagen/Abwehr/LK entsprechen dem aktuellen SCW

", - "experiencePoints": 0 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rPbbTLUtSXZpdFjp" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swarm.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "apBf4qnMODBmEWHU", - "name": "Jungdrache (Gelb)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "data": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Jungdrache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "wEXEZPwdakd6bfC3", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Sandsturm-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tWwaC91MGIR4k3Uy", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "d4qTXCVuiStZW2tY", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "asPZBajREGsJYoht", - "name": "Pferd", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/horse-white.png", - "data": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 7, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 44, - "value": 66 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 4, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 101, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Pferd", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/horse*.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "QCtm8zGJPxPniASj", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fEZBZH6sYKbblf6g", - "name": "Huf, in Notwehr", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "zsouNfDc7ZOepbeR", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "bEKen2GJBc6d0nix", - "name": "Erwachsener Drache (Gelb)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "data": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "tint": null, - "width": 4, - "height": 4, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "nylQOskI33K0K84V", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Sandsturm-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pX6BSfPqftBLxuhf", - "name": "Angst (3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XdTwK8lRxVvGfKja", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "cE5kI3uqXWQrCaI5", - "name": "Geist", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/ghost-1.png", - "data": { - "attributes": { - "body": { - "base": 1, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 3, - "mod": 0 - }, - "aura": { - "base": 6, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 27 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 8 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 17, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 245, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Geist", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/ghost*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "ZuiMUxhFAfV0NwNW", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "EGknWGHQszJHJHnV", - "name": "Geisterklaue", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "FR4dQPwgDCH9Ruox", - "name": "Körperlos", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "U95WXWQaKfIPiJZK", - "name": "Alterung (1 Jahr pro Schadenspunkt)", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", - "experiencePoints": -1 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "QkZT7930qdhuLFxw", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "I31y8QW6HoMJn5Ar", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "2VOjRedLceEPleW7", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "2NixNLo8G3DqU3pt", - "name": "Nur durch Magie verletzbar", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", - "experiencePoints": 50 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "DNSCPQ1kOSiiyvOK", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "jP3c9iA0GT4gwt3c", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nxI5N5pXEhdR1aah", - "name": "Terror", - "type": "spell", - "data": { - "description": "

Bei Erfolg fliehen betroffene Ziele - maximal eine Anzahl gleich der Stufe des Zauberwirkers - so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren.

\n

Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", - "equipped": true, - "spellType": "spellcasting", - "bonus": "-(GEI+VE)/2 des Ziels", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 5, - "wizard": 9, - "sorcerer": 7 - } - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.SgDFje4OTxqPEzoA" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/terror.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "02uWHUcM8MBPKqb6", - "name": "Totenkraft", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", - "data": { - "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", - "experiencePoints": 10 - }, - "effects": [ - { - "_id": "xw1OyyTdDwkNe2jC", - "changes": [ - { - "key": "data.traits.strength.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - }, - { - "key": "data.traits.constitution.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "GEI + AU als Bonus auf Stärke und Härte", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 800000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" - } - } - } - ], - "effects": [ - { - "_id": "RzCEjaZBI6Rk6bt4", - "changes": [ - { - "key": "data.traits.strength.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - }, - { - "key": "data.traits.constitution.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - } - ], - "disabled": false, - "duration": { - "startTime": 0 - }, - "icon": "icons/svg/aura.svg", - "label": "GEI + AU als Bonus auf Stärke und Härte", - "origin": "Compendium.ds4.creatures.cE5kI3uqXWQrCaI5.Item.02uWHUcM8MBPKqb6", - "tint": null, - "transfer": false, - "flags": {} - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "cf8BOIAxMKvuxYYW", - "name": "Golem, Stein-", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 18, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 4, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 33, - "value": 66 - }, - "defense": { - "mod": 1 - }, - "initiative": { - "mod": 2 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 23, - "creatureType": "construct", - "sizeCategory": "large", - "experiencePoints": 160, - "description": "

Herstellung: 3338 GM + Steinmetz

" - } - }, - "token": { - "flags": {}, - "name": "Golem, Stein-", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "7gU87wP52hnbnwJz", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "KzEfCqb54s8Ju7x1", - "name": "Steinpranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "HjZd5t1xvRNoHZdX", - "name": "Steinwesen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "clWF2wt2WK7eWuxW", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lB0BTGi2Qp2IpbTp", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "QTbksMwiH60vH9lT", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "7HsvjAKlmOXSvm6e", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "y8yRArJSJhHTdPXU", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "clsDFbLFEIbh6Mg4", - "name": "Jungdrache (Bronze)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "data": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Jungdrache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "wEXEZPwdakd6bfC3", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Schallwellen-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yTFT0UXNa9s9pbM4", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tWwaC91MGIR4k3Uy", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "dFL9UUXHq9heme4T", - "name": "Tentakelhirn", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 4, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -4, - "value": 11 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 10 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 7, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 89, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Tentakelhirn", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "8BlGNX63GIp3ribf", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "DuBcMQTb1e7mIe79", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "z80WCPwmoMsdzYWD", - "name": "Schweben", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion “Rennen” ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", - "experiencePoints": 10 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "8lyV8jx9ZVqPA4kF", - "name": "Werteverlust (GEI)", - "type": "specialCreatureAbility", - "data": { - "description": "

Pro schadensverursachenden Treffer mit dem Gedankenzehrerstrahl-Zauber wird GEI um 1 gesenkt (bei GEI Null ist das Opfer wahnsinnig). Pro Anwendung des Zaubers Allheilung wird 1 verlorener Attributspunkt regeneriert.

\n

 

", - "experiencePoints": 15 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.m52MTRs1GMXScTki" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3sJtgHHEkOmTNLEL", - "name": "Gedankenzehrerstrahl", - "type": "spell", - "data": { - "description": "

 Gedankenzehrerstrahl (nicht sichtbar) verursacht mental Schaden und führt zu Werteverlust)

\n

 

", - "equipped": true, - "spellType": "targetedSpellcasting", - "bonus": "", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "", - "unit": "custom" - }, - "cooldownDuration": { - "value": "", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": null - } - }, - "sort": 400000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "dlrDPQ3is4NkzZJB", - "name": "Wasserelementar III", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 15, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 31, - "value": 62 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 16, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 133, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

\n

 

" - } - }, - "token": { - "flags": {}, - "name": "Wasserelementar III", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "4llrjUwW6sz48c8L", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "HPT4hAgQnGf1gbJR", - "name": "Wasserstrahl", - "type": "weapon", - "data": { - "description": "

-1 WB / 2 Meter

", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "OIKYSareGFhHJxAB", - "name": "Keine feste Gestalt", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "NKUKD1KfNTpKZygj", - "name": "Anfällig (Feuer)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VCmj5YFjcDb1Slay", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion “Rennen” schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "dnX0uQXQCEnGs7dM", - "name": "Golem, Eisen-", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 20, - "mod": 0 - }, - "mobility": { - "base": 5, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 36, - "value": 72 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 27, - "creatureType": "construct", - "sizeCategory": "large", - "experiencePoints": 173, - "description": "

Herstellung: 3750 GM + Rüstungsschmied

" - } - }, - "token": { - "flags": {}, - "name": "Golem, Eisen-", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "7gU87wP52hnbnwJz", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "KzEfCqb54s8Ju7x1", - "name": "Eisenpranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "HjZd5t1xvRNoHZdX", - "name": "Metallwesen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "clWF2wt2WK7eWuxW", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lB0BTGi2Qp2IpbTp", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "QTbksMwiH60vH9lT", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "7HsvjAKlmOXSvm6e", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "y8yRArJSJhHTdPXU", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "e1oy4levSO4VOQx8", - "name": "Erwachsener Drache (Blau)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "data": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "tint": null, - "width": 4, - "height": 4, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "nylQOskI33K0K84V", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Blitz-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "pX6BSfPqftBLxuhf", - "name": "Angst (3)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "6oHGA6nCXRiuAY2O", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "htgryhd630WQgeD8", - "name": "Jungdrache (Rot)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "data": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Jungdrache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "wEXEZPwdakd6bfC3", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Feuer-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tWwaC91MGIR4k3Uy", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "HFksDdMTR1oh3gDo", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "huPL6cx3RadJNhL0", - "name": "Feuerelementar II", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 13, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 29 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": -2 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 15, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 95, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "token": { - "flags": {}, - "name": "Feuerelementar II", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "lFOmsh3CDWTyvEye", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "JI4hW2uyULt2cKs2", - "name": "Flammenhieb", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "eofu8kICYeEpxUT1", - "name": "Keine feste Gestalt", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "c95cnrJtMG20InKV", - "name": "Anfällig (Wasser)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "xtwmRcp2CEGdK5C6", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "iIvMTzBji28VVQ0v", - "name": "Schimmerross", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 6, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 44, - "value": 66 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 4, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 106, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Schimmerross", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "0OHqkBFSnkRtiwWs", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "NB8EGOwqOiFbSwRT", - "name": "Huf, in Notwehr", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "EpT6dAyNtbw1l4TN", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "Di77ms6LCDcCtam5", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "kFieLVdVz8XittRw", - "name": "Drachenwelpe (Grün)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "U9pMNRDfFvurG3pT", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "4JCW7iKb2e9I2ZSj", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Giftgas-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "qYO8vFpNBw2wQLIJ", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "lZgvjMSqh5FuA1JK", - "name": "Ratte", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/rat-brown-2.png", - "data": { - "attributes": { - "body": { - "base": 2, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 1, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -9, - "value": 3 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 1, - "creatureType": "animal", - "sizeCategory": "tiny", - "experiencePoints": 26, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Ratte", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/rat*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.5, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "i6k3JJR3YorRBEyC", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "CtIA409ycFJcoNdq", - "name": "Spitze Zähne", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LNrmUjNRidA3PoHN", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XcMeQEVeni94uQWk", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "bvbaa9gsGyGocDA0", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion “Rennen” schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "lys4bJc7GL5f5ORp", - "name": "Vampirfledermaus", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/vampire-bat.png", - "data": { - "attributes": { - "body": { - "base": 5, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -13, - "value": 4 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 1, - "creatureType": "animal", - "sizeCategory": "tiny", - "experiencePoints": 55, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Vampirfledermaus", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/vampire-bat.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.5, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "symU6Wmd3ak5LEJi", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "G08O3BP9HQ0mLjAQ", - "name": "Krallen", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hdTEWmE6saO2W7FI", - "name": "Sonar", - "type": "specialCreatureAbility", - "data": { - "description": "

“Sieht” per Sonar.

", - "experiencePoints": 10 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.BtjiEmhGyje6YghP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/sonar.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "OfL0gyUOJjAOW3xA", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "eH5vkCneA5sLHkmp", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "1zKUlljm7MEYc3l8", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "m9uwTf6binQeuVAb", - "name": "Ork", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/orc-blue.png", - "data": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 2, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 23 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 1 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:14, #1B16", - "foeFactor": 2, - "creatureType": "humanoid", - "sizeCategory": "normal", - "experiencePoints": 63, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Ork", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/orc*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "UjK1svQv7NbSg9xm", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "YozSzwoqjCJcs2NR", - "name": "Speer", - "type": "weapon", - "data": { - "description": "

Zerbricht bei Schießen-Patzer

", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q" - } - }, - "img": "icons/weapons/polearms/spear-hooked-simple.webp", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "KlJJytTJybNcvjU3", - "name": "Lederpanzer", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 4, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.60MhQmXh0c2cT5nx" - } - }, - "img": "icons/equipment/chest/breastplate-banded-leather-brown.webp", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "rL8UVTzpLdTVqd9W", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "0x83GMWxMjm02G5r", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "mOQ21HFNisTfu7ve", - "name": "Erdelementar III", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 22, - "mod": 0 - }, - "mobility": { - "base": 2, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 7, - "mod": 0 - }, - "agility": { - "base": 1, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 39, - "value": 78 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 23, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 124, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "token": { - "flags": {}, - "name": "Erdelementar III", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "vOHGTbpad4Prqo7v", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "VHt6K5ArvzyfTEje", - "name": "Steinpranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "fIoBfLmNCxGfGzEX", - "name": "Steinwesen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "23wk4FP7dNTkLgB5", - "name": "Anfällig (Luft)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "mPcmJ9nHpy1AbKVr", - "name": "Feuerelementar III", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 18, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 7, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 35, - "value": 70 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 24, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 145, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "token": { - "flags": {}, - "name": "Feuerelementar III", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "zfRpsR3anJXT6IsX", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "JI4hW2uyULt2cKs2", - "name": "Flammenhieb", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "eofu8kICYeEpxUT1", - "name": "Keine feste Gestalt", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "c95cnrJtMG20InKV", - "name": "Anfällig (Wasser)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "xtwmRcp2CEGdK5C6", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "nDRdljcZzkonbU0s", - "name": "Jungdrache (Blau)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "data": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Jungdrache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "wEXEZPwdakd6bfC3", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Blitz-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tWwaC91MGIR4k3Uy", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "bH4dBG5AeJ442465", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "nZ9u6G3D3Q9oUXM8", - "name": "Wolf", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/wolf-2.png", - "data": { - "attributes": { - "body": { - "base": 8, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 10, - "value": 29 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:10)", - "foeFactor": 2, - "creatureType": "humanoid", - "sizeCategory": "normal", - "experiencePoints": 81, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Wolf", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/wolf*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "QFSA7hIyJjmVsd6Z", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "CbeR35FgiGzc1xtl", - "name": "Kräftiger Biss", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "PZ9G8IZoP5eiPQEx", - "name": "Wolfspelz", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ZDZ9qHG17DjQWhSE", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nvwGqdzQA4Mf37Ci", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "PQZ9xUYQyQHv8gEy", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "oVKL6zJ2kYMmBuYx", - "name": "Leichnam", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/lich.png", - "data": { - "attributes": { - "body": { - "base": 7, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 9, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 8, - "mod": 0 - }, - "aura": { - "base": 8, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 1, - "value": 39 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW #(A:20)x10, #10M:20", - "foeFactor": 26, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 299, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Leichnam", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/lich.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "9ioIzodwZpa1EdpD", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": "" - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "J2eP8hBIWtgayfhH", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "sNIMYcSm0y83hby7", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "exyyjDtEIdHRcx4n", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "H5OFCD08Z8qzqwm7", - "name": "Arkanes Schwert", - "type": "spell", - "data": { - "description": "

Ein Schwert aus hellem (oder je nach Belieben auch dunklem) Licht erscheint innerhalb eines Radius von VE in Metern um den Zauberwirker herum.

\n

Innerhalb  dieses  Wirkungsbereiches kämpft es völlig selbstständig, hört jedoch auf gedankliche Kampfkommandos seines Beschwöreres wie „Greif den großen Troll an“ oder „Schütze mich“.

\n

Bewegt sich der Zauberwirker, wandert der Wirkungsbereich des Schwertes mit ihm mit, so dass die magische Klinge niemals mehr als VE in Metern von ihm getrennt sein kann.
Das Schwert löst sich in seine arkanen Bestandteile auf, sobald seine (nicht heilbaren) LK auf Null oder niedriger sinken bzw. die Zauberdauer verstrichen ist.

\n

Sämtliche Kampfwerte des Schwertes entsprechen der Stufe des Zauberwirkers +10.
Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Zauberwirkers entspricht.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 8 - } - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.VjvrapwDmBvGYmfj" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/sword-wound.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "MWFkDanoUA9nJqOI", - "name": "Ebenentor", - "type": "spell", - "data": { - "description": "

Öffnet ein Tor zu einer anderen Existenzebene, die der Zauberwirker namentlich nennen muss. Das Tor  schließt sich, sobald VE/2 Wesen es durchschritten haben, oder die Spruchdauer abgelaufen ist.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-8", - "spellCategory": "unset", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "W20", - "unit": "days" - }, - "minimumLevels": { - "healer": null, - "wizard": 18, - "sorcerer": 16 - } - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.MKlGqhjQa3GZu4gq" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/magic-portal.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "QH2FwPCZBMbSuu4w", - "name": "Einschläfern", - "type": "spell", - "data": { - "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u.ä. erwachen kann.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(KÖR+VE)/2 des jeweiligen Ziels", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 2, - "wizard": 5, - "sorcerer": 5 - } - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BL9g5R24sZ4pl2SN", - "name": "Flammeninferno", - "type": "spell", - "data": { - "description": "

Effekt: Eine kreisrunde Fläche mit einem Radius von VE in Metern geht in Flammen auf. Jeder in dem Inferno erhält pro Kampfrunde nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "5", - "spellCategory": "fire", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 15 - } - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.7ybmodIkWDP1z1D6" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-wave.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "7qXCfQZMPpbaQaDg", - "name": "Frostschock", - "type": "spell", - "data": { - "description": "

Effekt: Ein Eisstrahl schießt aus den Händen des Zauberwirkers. Gegen den Schaden dieses frostigen Zauber ist keine Abwehr zulässig.

\n

Zudem wird das Ziel magisch eingefroren, bis VE Kampfrunden verstrichen sind oder es Schaden erhält.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "3", - "spellCategory": "ice", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 12, - "sorcerer": 16 - } - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.iH2NtsJtMfG0ZAU3" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/frozen-body.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "wH1muHo8xH5Msy3I", - "name": "Gasgestalt", - "type": "spell", - "data": { - "description": "

Effekt: Das Ziel - samt seiner getragenen Ausrüstung - wird gasförmig und kann durch jede noch so kleine Öffnung gleiten. Das Ziel kann jederzeit die Wirkung des Zaubers als freie Aktion beenden. In Gasform wird der Laufen-Wert vervierfacht, der Charakter kann seine Umgebung weiterhin wahrnehmen. In Gastgestalt ist es allerdings nicht möglich, zu zaubern, zu sprechen, anzugreifen oder in andere Wesen einzudringen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 5", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 18 - } - }, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.tZJoj1PGrRGe9eMV" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/steam.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lMO6aaalvxfiUTQh", - "name": "Gehorche", - "type": "spell", - "data": { - "description": "

Effekt: Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(GEI+VE)/2 des Ziels", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE/2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 12, - "sorcerer": 10 - } - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "2gJxw0LaVolyoj5u", - "name": "Kontrollieren", - "type": "spell", - "data": { - "description": "

Effekt: Bei Erfolg bringt der Zauberwirker eine maximale Anzahl untoter Ziele gleich seiner Stufe unter Kontrolle, selbst wenn diese einem anderen Zauberwirker unterstehen.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche durch den Zauber betroffen sind. Alternativ kann auch ein einzelner Untoter als Ziel bestimmt werden.

\n

Kontrollierte Untote unterstehen dem Zauberwirker, führen bedingungslos seine Befehle aus und können nur auf Wunsch des Zauberwirkers wieder ihren Frieden finden, oder wenn dieser stirbt.

\n

Ein Zauberwirker kann nicht mehr Untote gleichzeitig kontrollieren, als seine eigene Stufe beträgt.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(GEI+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis erlöst", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 8, - "sorcerer": 4 - } - }, - "sort": 1400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.9gc1CF70165NXymH" - } - }, - "img": "systems/ds4/assets/icons/game-icons/cathelineau/fomorian.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3wEduJKdB86YQpD6", - "name": "Magisches Schloss", - "type": "spell", - "data": { - "description": "

Dieser Zauber verschließt auf magische Weise eine Klappe, Truhe, Tür oder ähnliche Öffnung.
Das Probenergebnis stellt die Erschwernis dar, um dieses Schloss zu öffnen (ob nun mit einem Dietrich, roher Gewalt oder Magie), nur der Zauberwirker selbst kann es ohne Probleme öffnen.
Der Zauber kann auch auf ein mechanisches Schloss gesprochen werden, um dessen Schlosswert (SW) zu verstärken.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis Schloss geöffnet", - "unit": "custom" - }, - "cooldownDuration": { - "value": "5", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 3, - "wizard": 1, - "sorcerer": 1 - } - }, - "sort": 1500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.dzYAc9ti7ghhkyiX" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/padlock.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "0nFQAiOAHwhRSbbI", - "name": "Netz", - "type": "spell", - "data": { - "description": "

Ein Netz aus klebriger Astralmasse mit einem Radius von VE/2 in Metern erscheint.
Vom Netz getroffene Wesen, welche keine Abwehr dagegen würfeln dürfen, halbieren für die Dauer des Zaubers Initiative, Laufen und Schlagen.

\n

Der Zauber wirkt nicht gegen Wesen, die 2+ Größenkategorien (DS4 S. 104) größer sind.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(AGI+ST)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb./2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 4, - "wizard": 9, - "sorcerer": 9 - } - }, - "sort": 1600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.73bT47FtQgPp9Snq" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/spider-web.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "TGbp60nPUtBMoirH", - "name": "Schatten", - "type": "spell", - "data": { - "description": "

Dunkle Schatten umhüllen das Ziel (welches keine Abwehr dagegen würfeln darf), wodurch es -8 auf alle Handlungen hat, bei denen es besser sehen können sollte.Augenlosen Untoten, wie beispielsweise Skeletten, aber auch blinden Lebewesen, kann der Zauber nichts anhaben.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(AGI+AU)/2 des Ziels", - "spellCategory": "darkness", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb./2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "5", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 2 - } - }, - "sort": 1700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.5mF59XCsZffF0cSp" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/shadow-follower.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "eRGWQb4owl3f0dMu", - "name": "Schatten erwecken", - "type": "spell", - "data": { - "description": "

Der Schwarzmagier kann die Seelen von einer maximalen Anzahl von Toten im Wirkungsradius gleich seiner eigenen Stufe verderben und in Form tödlicher Schatten (DS4 S. 121) zu gequältem Unleben erwecken. Die Schatten benötigen drei Kampfrunden, um sich zu bilden, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber Kontrollieren zu beherrschen.
Charaktere mit dem Talent Diener des Lichts können den Zauber nicht anwenden.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "darkness", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 13 - } - }, - "sort": 1800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.dPGm1Ji2U0fJxnT3" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/two-shadows.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hzo9YSBoe3FkU0bQ", - "name": "Schattenlanze", - "type": "spell", - "data": { - "description": "

Dies ist eine mächtigere Variante des Zaubers Schattenpfeil, gegen dessen Schaden Wesen des Lichts einen Malus von 2 auf ihre Abwehr erhalten.
Charaktere mit dem Talent Diener des Lichts können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "5", - "spellCategory": "darkness", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 10 - } - }, - "sort": 1900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.b5RFJWPaYbpXNpsv" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/spear-hook.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "vuh1APxxnVOwwzur", - "name": "Springen", - "type": "spell", - "data": { - "description": "

Der Zauberwirker springt augenblicklich bis zu Probenergebnis/2 Meter weit und landet dabei wieder sicher auf seinen Beinen. Alternativ kann man auch hoch oder runter springen, beispielsweise um einen Balkon zu erreichen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 5, - "wizard": 2, - "sorcerer": 3 - } - }, - "sort": 2000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.L6NrH3AEmS2I3NWG" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "Z7oEa3cGhg45e5hG", - "name": "Stolpern", - "type": "spell", - "data": { - "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, stürzt augenblicklich zu Boden.

\n

Misslingt ihm außerdem eine Probe auf AGI+GE, lässt er alles Gehaltene fallen.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(AGI+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 4, - "sorcerer": 3 - } - }, - "sort": 2100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.KIyVOdiXZnXJIAh6" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/tripwire.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tiu03zgZ7y6jx6A0", - "name": "Trugbild", - "type": "spell", - "data": { - "description": "

Dieser Zauber erschafft eine rein optische, unbewegliche Illusion, deren Ausmaße maximal VE/2 Kubikmeter betragen können. Die Illusion ist mit einer erfolgreichen Bemerken-Probe (DS4 S. 89) - abzüglich des halbierten Probenergebnisses der Trugbild Zaubern-Probe - durchschaubar.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE/2", - "unit": "hours" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 7 - } - }, - "sort": 2200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.eMilydZd4gqDUsff" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/mirror-mirror.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "2JimM7RKV3moTwIN", - "name": "Unsichtbarkeit", - "type": "spell", - "data": { - "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

\n

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", - "equipped": true, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 20, - "wizard": 12, - "sorcerer": 12 - } - }, - "sort": 2300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lAOnBjrmtgdIBwT4", - "name": "Verwirren", - "type": "spell", - "data": { - "description": "

Effekt: Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte...
1-5... greift die Charaktere an
6-10... läuft verwirrt in eine zuf. Richtung
11-15... steht verwirrt herum
16+... greift die eigenen Verbündeten an
", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(GEI+AU)/2", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 8, - "wizard": 5, - "sorcerer": 5 - } - }, - "sort": 2400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.niQVUxJHzdMDlwXc" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "v66wkDx9aatfmYLx", - "name": "Wandöffnung", - "type": "spell", - "data": { - "description": "

Effekt: Der Zauberwirker öffnet ein kreisrundes Loch von 1m Durchmesser in einer bis zu VE x 10 cm dicken, nichtmagischen Steinwand.

\n

Nach Ablauf des Zaubers verschwindet das Loch ohne Spuren zu hinterlassen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb./2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 14 - } - }, - "sort": 2500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.7foZzrxZuX0dCh3C" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/hole.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "WlBDpkjalZgmTNHp", - "name": "Wolke des Todes", - "type": "spell", - "data": { - "description": "

Eine schwarze, qualmende Wolke des Todes mit einem Radius von maximal VE in Metern entsteht.

\n

Zwar ist die Wolke nicht undurchsichtig, dennoch werden Angriffe gegen Ziele darin um 2 erschwert, gleichsam erhalten alle innerhalb der Wolke -2 auf alle Proben, bei denen man besser sehen können sollte.

\n

Jeder Charakter innerhalb der Wolke erleidet pro Runde automatisch einen nicht abwehrbaren Punkt Schaden.

\n

Sollte der Schwarzmagier über das Talent Diener der Dunkelheit verfügen, wird sein Talentrang auf den nicht abwehrbaren Schaden, den jedes Opfer pro Kampfrunde erleidet, addiert.

\n

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-4", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 13 - } - }, - "sort": 2600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.xs7tx8K3ZdQ76u0b" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/skull-mask.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hhfDDfFrDlscQ3tN", - "name": "Zeitstop", - "type": "spell", - "data": { - "description": "

Der Zauberwirker hält die Zeit an, bis die Zauberdauer endet oder er Schaden verursacht bzw. selber erleidet.

\n

Andere Objekte und Lebewesen können nicht bewegt werden - sie sind starr in der Zeit eingefroren.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-5", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "W20", - "unit": "days" - }, - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 20 - } - }, - "sort": 2700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.BGnY1p1qZXwpzXFA" - } - }, - "img": "systems/ds4/assets/icons/game-icons/lorc/time-trap.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "L6i191M3m9QXN9aJ", - "name": "Totenkraft", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", - "data": { - "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", - "experiencePoints": 10 - }, - "effects": [ - { - "_id": "xw1OyyTdDwkNe2jC", - "changes": [ - { - "key": "data.traits.strength.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - }, - { - "key": "data.traits.constitution.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "GEI + AU als Bonus auf Stärke und Härte", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 500000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" - } - } - }, - { - "_id": "Yv7u9FcT21lq7xW8", - "name": "Robe +3", - "type": "armor", - "img": "icons/equipment/chest/robe-layered-purple.webp", - "data": { - "description": "", - "quantity": 1, - "price": 3251, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "effects": [ - { - "_id": "Qpy3XcHOokbU7ZaS", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": "3", - "mode": 2 - } - ], - "duration": { - "startTime": null - }, - "label": "Panzerung +3 (magisch)", - "transfer": true, - "disabled": false - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.cFMcSg7PFIcQvf0B" - } - } - } - ], - "effects": [ - { - "_id": "fmyWjY4g3kUO22no", - "changes": [ - { - "key": "data.traits.strength.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - }, - { - "key": "data.traits.constitution.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - } - ], - "disabled": false, - "duration": { - "startTime": 0 - }, - "icon": "icons/svg/aura.svg", - "label": "GEI + AU als Bonus auf Stärke und Härte", - "origin": "Compendium.ds4.creatures.oVKL6zJ2kYMmBuYx.Item.L6i191M3m9QXN9aJ", - "tint": null, - "transfer": false, - "flags": {} - }, - { - "_id": "Z7hdBZ7Rm4qFPnHo", - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": "3", - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": 0 - }, - "label": "Panzerung +3 (magisch)", - "origin": "Compendium.ds4.creatures.oVKL6zJ2kYMmBuYx.Item.Yv7u9FcT21lq7xW8", - "transfer": false, - "flags": {} - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "ojzkDbyYSlpHtGHq", - "name": "Kobold", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/kobold-green.png", - "data": { - "attributes": { - "body": { - "base": 3, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 2, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 1, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 1, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -7, - "value": 7 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1B:8)", - "foeFactor": 1, - "creatureType": "humanoid", - "sizeCategory": "small", - "experiencePoints": 25, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Kobold", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/kobold*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "pKIjvXJX0NNL0pzz", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "hnuIJBq2btoSK88F", - "name": "Kleiner Knüppel", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "owGq4n7KX2P1o9em", - "name": "Drachenwelpe (Gold)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "U9pMNRDfFvurG3pT", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "4JCW7iKb2e9I2ZSj", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Licht-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yTFT0UXNa9s9pbM4", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "rLUCyWfSBebB8cSC", - "name": "Zombie", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/zombie-female-red.png", - "data": { - "attributes": { - "body": { - "base": 13, - "mod": 0 - }, - "mobility": { - "base": 3, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 28 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:4", - "foeFactor": 10, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 78, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Zombie", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/zombie*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "hZm5I59xgR2jDneS", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "NdunVanOXm7hG0rX", - "name": "Fäulnispranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ZjRYyfjMWlmtGUJ0", - "name": "Merkt nichts", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "HT4yv3mKyIcwaLKr", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "rCzeYlfYzbGpNQOe", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "Y2r3v6U8Grn619HR", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "rULL0cHbyACJsHDC", - "name": "Riese", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 27, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 2, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 7, - "mod": 0 - }, - "constitution": { - "base": 7, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 176, - "value": 220 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": -3 - }, - "movement": { - "mod": 4 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 3 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:20)", - "foeFactor": 30, - "creatureType": "humanoid", - "sizeCategory": "huge", - "experiencePoints": 387, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Riese", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "mL8QheidkXD9NMc5", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "ndjWMSfPfmPY9AUY", - "name": "Baumstamm", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "p8OAUiSFSEBq94mf", - "name": "Geworfener Fels", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "xbi9dJjtVxeUoLK4", - "name": "Felle", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "eTfSg6U4xZdJN7ec", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFyr7vCp12na7Z3c", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "raKKehH8QctnDtMM", - "name": "Jungdrache (Weiss)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "data": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Jungdrache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "wEXEZPwdakd6bfC3", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Frost-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tWwaC91MGIR4k3Uy", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "frBW7LCCpTlwh7hr", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "s56U2LeRInrje3xh", - "name": "Harpyie", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/harpy-brown.png", - "data": { - "attributes": { - "body": { - "base": 8, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 6, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 1, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 20 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:8)", - "foeFactor": 10, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 128, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Harpyie", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/harpy*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "GkacxILaX9m88nw6", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "lwAvXPfZk0RxGnDi", - "name": "Krallenklaue", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "62o19BMYU8dc4Qwa", - "name": "Federkleid", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ug1FMtAeMh64aWwR", - "name": "Bezaubern", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann Gegner mit einem “Lockruf” bezaubern. Dieser Zauber funktioniert wie der Zauberspruch Gehorche. Abklingzeit des Lockrufs: 10 Kampfrunden

", - "experiencePoints": 25 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.HMCFkxVzU2b3KkSA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charm.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nEwzPUfWSwdHPNIe", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "mgxKRHjfYd8eRdl4", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "iJ5vdPZt9tIyY3g4", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "6L8whKMrzwGWDTCg", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "GZfpSw5mnT7CLpYH", - "name": "Lockruf", - "type": "spell", - "data": { - "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", - "equipped": true, - "spellType": "spellcasting", - "bonus": "", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE/2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": null - } - }, - "sort": 800000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "s7yuHMW75JDcFQYB", - "name": "Lebende Rüstung", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 24 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 8, - "creatureType": "construct", - "sizeCategory": "normal", - "experiencePoints": 72, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Lebende Rüstung", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "Zp65bGO8cpsTf0jC", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "c9cGRVHyd3IPSSbX", - "name": "Langschwert", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" - } - }, - "img": "icons/weapons/swords/sword-guard-blue.webp", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "5t0R0cwzApnRQpSR", - "name": "Metallwesen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "JxIUfRCSTQ3e5BFg", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "SoGfBCWyVZsQGBLk", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "sCBrVIDh2umWr63g", - "name": "Golem, Kristall-", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 8, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 4, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 5, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 21, - "value": 42 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 6 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 10, - "creatureType": "construct", - "sizeCategory": "large", - "experiencePoints": 134, - "description": "

Herstellung: 2513 GM + Steinmetz

" - } - }, - "token": { - "flags": {}, - "name": "Golem, Kristall-", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "0qB6zRQvvux1jEOR", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "KzEfCqb54s8Ju7x1", - "name": "Kirstallpranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lB0BTGi2Qp2IpbTp", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "QTbksMwiH60vH9lT", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "7HsvjAKlmOXSvm6e", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "y8yRArJSJhHTdPXU", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "mJi3ylBo7yPG5vMw", - "name": "Kristallwesen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 800000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "aa8a89EaVy8fjgLn", - "name": "Blitz", - "type": "spell", - "data": { - "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind. Gegner in Metallrüstung dürfen keine Abwehr gegen Blitze würfeln.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "3", - "spellCategory": "electricity", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "1", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 10, - "wizard": 7, - "sorcerer": 7 - } - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.Senq5ub2Cx0agJgi" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/bolt-spell-cast.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "tYcKw69Feoy3B6hG", - "name": "Feuerelementar I", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 5, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -12, - "value": 12 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 9, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 70, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "token": { - "flags": {}, - "name": "Feuerelementar I", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "nkLfuqibPss3QKN4", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "JI4hW2uyULt2cKs2", - "name": "Flammenhieb", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "eofu8kICYeEpxUT1", - "name": "Keine feste Gestalt", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "c95cnrJtMG20InKV", - "name": "Anfällig (Wasser)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "xtwmRcp2CEGdK5C6", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "tchJggykZKx2ctBv", - "name": "Drachenwelpe (Bronze)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "U9pMNRDfFvurG3pT", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "4JCW7iKb2e9I2ZSj", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Schallwellen-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yTFT0UXNa9s9pbM4", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "ttzlBKtMWz981WF3", - "name": "Alligator", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/alligator-green.png", - "data": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 5, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 52, - "value": 78 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:14)", - "foeFactor": 10, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 151, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Alligator", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/alligator*.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "QCCPBSTU52SAhDox", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "Z4ZEuB2l0vo2dJcK", - "name": "Großer Biss", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ACGvtQk97Udg1rih", - "name": "Schuppenpanzer", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "Buv9Nzqx0hpPPsew", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ree4HN3j8tv7b18k", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion “Rennen” schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "8Aq23UcNNFecGbk9", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "uomniEHbTAek8ERH", - "name": "Drachenwelpe (Gelb)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "U9pMNRDfFvurG3pT", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "4JCW7iKb2e9I2ZSj", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Sandsturm-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3wfMRBF49WH74mt2", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1200000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "vXmTcBUKZkB2UBD7", - "name": "Goblin", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/goblin-knife.png", - "data": { - "attributes": { - "body": { - "base": 5, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 3, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -8, - "value": 8 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:10", - "foeFactor": 1, - "creatureType": "humanoid", - "sizeCategory": "small", - "experiencePoints": 42, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Goblin", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/goblin*.png", - "tint": null, - "width": 1, - "height": 1, - "scale": 0.7, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "zpJ0iPtktAVE44Uc", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "joNh3JSsqfqXk4lU", - "name": "Ast", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "effects": [], - "img": "icons/svg/item-bag.svg", - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ftCrAdxpJlnc85aU", - "name": "Messer", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "sort": 200000, - "flags": {}, - "effects": [], - "img": "icons/svg/item-bag.svg", - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "G6OoqVDTk9jwOU7r", - "name": "Fellflicken", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "uHVUAMh8QgcoNDno", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yW9EtSEtM40owDQt", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "vsIywRHMnJM7u4ts", - "name": "Jungdrache (Grün)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "data": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Jungdrache", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "tint": null, - "width": 3, - "height": 3, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "wEXEZPwdakd6bfC3", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Giftgas-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "tWwaC91MGIR4k3Uy", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "CdZkMCsLB0EwUdqv", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "vsKKpweX6I1TQYBj", - "name": "Drachenwelpe (Weiß)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "U9pMNRDfFvurG3pT", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "4JCW7iKb2e9I2ZSj", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Frost-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "xUH4ga5oyxeT3mW2", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1150000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "wBgO5Hc4oHKfRN6f", - "name": "Riesenschlange", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/giant-snake-brown.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 44, - "value": 66 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:18)", - "foeFactor": 8, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 143, - "description": "" - } - }, - "token": { - "flags": {}, - "name": "Riesenschlange", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/giant-snake*.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "gGgAFw8OpTDKqnt8", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "ndAkzrcRKXbgY9rR", - "name": "Großer Biss", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "vyuWg112c2jjiFgN", - "name": "Schuppenpanzer", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "RX89OLfp965CuRDs", - "name": "Gift (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine “Gift trotzen”-Probe, ansonsten erhält es W20 Kampfrunden lang 1 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.TY1ZV1YsyaFtfX7U" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "2QXz0iopabnNNlQA", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "wYVw1a5UjPS09YxS", - "name": "Luftelementar II", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 25 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 9, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 92, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der  Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "token": { - "flags": {}, - "name": "Luftelementar II", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 1, - "height": 1, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "fLSzkLvgekRLZ2DE", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1 - }, - "items": [ - { - "_id": "PL4rUPVh5MRMW796", - "name": "Luftstoß", - "type": "weapon", - "data": { - "description": "

-1 WB / 2m

", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ghW7FO5d2do95peV", - "name": "Keine feste Gestalt", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "wqzMhcBGP8qbClRW", - "name": "Anfällig (Erde)", - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.

", - "experiencePoints": 0 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.mAWyVCfTFH6JiEIu" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "3yeOHhXD8iJrtRJL", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "wqgUDJc7Qb28hBBo", - "name": "Drachenwelpe (schwarz)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "data": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "token": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 0, - "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "U9pMNRDfFvurG3pT", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "4JCW7iKb2e9I2ZSj", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

\n

 

", - "experiencePoints": -1 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Säure-Odem", - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "hoqMl7N1bv8BKJA5", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "effects": [], - "folder": null, - "sort": 1200000, - "permission": { - "default": 0 - }, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "yisaQaEFqduLmAJe", - "name": "Golem, Lehm-", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "data": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 4, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 23, - "value": 46 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 8, - "creatureType": "construct", - "sizeCategory": "large", - "experiencePoints": 110, - "description": "

Herstellung: 2338 GM + Steinmetz

" - } - }, - "token": { - "flags": {}, - "name": "Golem, Lehm-", - "displayName": 0, - "img": "icons/svg/mystery-man.svg", - "tint": null, - "width": 2, - "height": 2, - "scale": 1, - "mirrorX": false, - "mirrorY": false, - "lockRotation": false, - "rotation": 0, - "vision": false, - "dimSight": 0, - "brightSight": 0, - "dimLight": 0, - "brightLight": 0, - "sightAngle": 0, - "lightAngle": 0, - "lightColor": null, - "lightAlpha": 1, - "lightAnimation": { - "speed": 5, - "intensity": 5 - }, - "actorId": "7gU87wP52hnbnwJz", - "actorLink": false, - "disposition": -1, - "displayBars": 30, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "x": null, - "y": null, - "elevation": null - }, - "items": [ - { - "_id": "KzEfCqb54s8Ju7x1", - "name": "Lehmpranke", - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": 0 - }, - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "lB0BTGi2Qp2IpbTp", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "QTbksMwiH60vH9lT", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "7HsvjAKlmOXSvm6e", - "name": "Schleudern", - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - }, - { - "_id": "y8yRArJSJhHTdPXU", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "permission": { - "default": 0 - } - } - ], - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - } -] diff --git a/packs/creatures.json.license b/packs/creatures.json.license deleted file mode 100644 index a3e7092f..00000000 --- a/packs/creatures.json.license +++ /dev/null @@ -1,4 +0,0 @@ -SPDX-FileCopyrightText: 2021 Sascha Martens -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: CC-BY-NC-SA-4.0 diff --git a/packs/creatures/Adler_HjpxMlpyjPr3hd3r.json b/packs/creatures/Adler_HjpxMlpyjPr3hd3r.json new file mode 100644 index 00000000..7f36fabd --- /dev/null +++ b/packs/creatures/Adler_HjpxMlpyjPr3hd3r.json @@ -0,0 +1,357 @@ +{ + "_id": "HjpxMlpyjPr3hd3r", + "name": "Adler", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/eagle.png", + "items": [ + { + "_id": "9vJL3lyC4RTQCZ7e", + "name": "Krallen", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!HjpxMlpyjPr3hd3r.9vJL3lyC4RTQCZ7e" + }, + { + "_id": "zYQAanmjVsNytqBl", + "name": "Federkleid", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!HjpxMlpyjPr3hd3r.zYQAanmjVsNytqBl" + }, + { + "_id": "ysyoJA3dYTu4XXvt", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!HjpxMlpyjPr3hd3r.ysyoJA3dYTu4XXvt" + }, + { + "_id": "k9Ng7RdfvSRN5JVW", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!HjpxMlpyjPr3hd3r.k9Ng7RdfvSRN5JVW" + }, + { + "_id": "zUXT2ZkY12TAu5CU", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", + "duplicateSource": null + }, + "_key": "!actors.items!HjpxMlpyjPr3hd3r.zUXT2ZkY12TAu5CU" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 3, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 1, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 1, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 1, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -6, + "value": 7 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:11)", + "foeFactor": 1, + "creatureType": "animal", + "sizeCategory": "small", + "experiencePoints": 52, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Adler", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/eagle.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346489, + "modifiedTime": 1740227862866, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!HjpxMlpyjPr3hd3r" +} diff --git a/packs/creatures/Alligator_ttzlBKtMWz981WF3.json b/packs/creatures/Alligator_ttzlBKtMWz981WF3.json new file mode 100644 index 00000000..00931fbd --- /dev/null +++ b/packs/creatures/Alligator_ttzlBKtMWz981WF3.json @@ -0,0 +1,357 @@ +{ + "_id": "ttzlBKtMWz981WF3", + "name": "Alligator", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/alligator-green.png", + "items": [ + { + "_id": "Z4ZEuB2l0vo2dJcK", + "name": "Großer Biss", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!ttzlBKtMWz981WF3.Z4ZEuB2l0vo2dJcK" + }, + { + "_id": "ACGvtQk97Udg1rih", + "name": "Schuppenpanzer", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!ttzlBKtMWz981WF3.ACGvtQk97Udg1rih" + }, + { + "_id": "Buv9Nzqx0hpPPsew", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!ttzlBKtMWz981WF3.Buv9Nzqx0hpPPsew" + }, + { + "_id": "ree4HN3j8tv7b18k", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!ttzlBKtMWz981WF3.ree4HN3j8tv7b18k" + }, + { + "_id": "8Aq23UcNNFecGbk9", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!ttzlBKtMWz981WF3.8Aq23UcNNFecGbk9" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 12, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 5, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 52, + "value": 78 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:14)", + "foeFactor": 10, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 151, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Alligator", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/alligator*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347112, + "modifiedTime": 1740227862918, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!ttzlBKtMWz981WF3" +} diff --git a/packs/creatures/Augenball_8E7Mm0LsiqFm6syY.json b/packs/creatures/Augenball_8E7Mm0LsiqFm6syY.json new file mode 100644 index 00000000..555f1a58 --- /dev/null +++ b/packs/creatures/Augenball_8E7Mm0LsiqFm6syY.json @@ -0,0 +1,1168 @@ +{ + "_id": "8E7Mm0LsiqFm6syY", + "name": "Augenball", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "V7Qw97Fk5MJgijNs", + "name": "Warzenhaut", + "type": "armor", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.V7Qw97Fk5MJgijNs" + }, + { + "_id": "z3o1FUNSKhEWkcpX", + "name": "Antimagie (10 Meter)", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.oUR6JglLxmJZduZz" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/anti-magic.png", + "effects": [], + "folder": null, + "system": { + "description": "

Sämtliche Magie in einem Radius von 10 Metern um die Kreatur herum ist wirkungslos. Dies gilt nicht für die eigene Magie der Kreatur oder deren Zauber.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.oUR6JglLxmJZduZz", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.z3o1FUNSKhEWkcpX" + }, + { + "_id": "tKiwh730ZOGMICdg", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.tKiwh730ZOGMICdg" + }, + { + "_id": "SZ8rvHDbY67EqjDN", + "name": "Mehrere Angriffe (+4)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 4 zusätzliche Zaubersprüche in jeder Runde aktionsfrei wirken, keinen einzelnen Zauberspruch jedoch mehr als einmal. Abklingzeiten müssen weiterhin berücksichtigt werden.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.SZ8rvHDbY67EqjDN" + }, + { + "_id": "v6ojDNs7V5QqwKgT", + "name": "Mehrere Angriffglieder (+4)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit 5 von insgesamt 10 Augen gleichzeitig an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.v6ojDNs7V5QqwKgT" + }, + { + "_id": "coIsPp1V166g8IAm", + "name": "Schweben", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion „Rennen“ ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.coIsPp1V166g8IAm" + }, + { + "_id": "kY4uQF3t99ANzx5T", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.kY4uQF3t99ANzx5T" + }, + { + "_id": "JMp5LjImHvoKsbGo", + "name": "Kettenblitz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-lightning.svg", + "effects": [], + "folder": null, + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.gePnhgqnsmdEbj3Z" + } + }, + "system": { + "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind, der auf bis zu VE weitere Gegner in seiner Nähe überspringt. Nur Gegner, die 2 oder mehr Meter von einem ihrer getroffenen Mitstreiter entfernt stehen, kann der Kettenblitz nicht erreichen.

\n

Getroffene Gegner in Metallrüstung dürfen keine Abwehr gegen einen Kettenblitz würfeln.

", + "equipped": true, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": true, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 16, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.gePnhgqnsmdEbj3Z", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.JMp5LjImHvoKsbGo" + }, + { + "_id": "K3QPHlqz66xolbzw", + "name": "Schleudern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/heavenly-dog/catapult.svg", + "effects": [], + "folder": null, + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.bKCGwIne0uoWZiY0" + } + }, + "system": { + "description": "

Dieser Zauberspruch, gegen den das Ziel keine Abwehr würfeln kann, schleudert das Ziel (Probenergebnis/3) Meter weit fort.

\n

Das Ziel erhält für die Distanz, die es geschleudert wird (auch wenn eine Wand den Flug bremst) Sturzschaden (DS4 S. 85), gegen den es ganz normal Abwehr würfelt.

\n

Nach dem Fortschleudern liegt das Ziel immer am Boden.

", + "equipped": true, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE / 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 16, + "wizard": 12, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.bKCGwIne0uoWZiY0", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.K3QPHlqz66xolbzw" + }, + { + "_id": "16dN0fMIjJwdhvGF", + "name": "Blenden", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/laser-sparks.svg", + "effects": [], + "folder": null, + "sort": 100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.JldAx8a91vVO2wUf" + } + }, + "system": { + "description": "

Ein gleißender Lichtstrahl schießt aus der Hand des Zauberwirkers und blendet bei Erfolg das Ziel (welches dagegen keine Abwehr würfeln darf).

Ein geblendetes Ziel hat -8 auf alle Handlungen, bei denen es sehen können sollte.

Selbst augenlose Untote, wie beispielsweise Skelette, werden durch das magische Licht geblendet. Blinde Lebewesen sind dagegen nicht betroffen.

", + "equipped": true, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(AGI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 1, + "wizard": 5, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.JldAx8a91vVO2wUf", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.16dN0fMIjJwdhvGF" + }, + { + "_id": "u3CLqxahFyF7kVpa", + "name": "Einschläfern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", + "effects": [], + "folder": null, + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0" + } + }, + "system": { + "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u. ä. erwachen kann.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+VE)/2 des jeweiligen Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.u3CLqxahFyF7kVpa" + }, + { + "_id": "BkokuzUTP9U6LtBp", + "name": "Gehorche", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", + "effects": [], + "folder": null, + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ" + } + }, + "system": { + "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 12, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.BkokuzUTP9U6LtBp" + }, + { + "_id": "lIchGK1m7Y7fMcKG", + "name": "Schutzschild", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/bell-shield.svg", + "effects": [], + "folder": null, + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.dpz383XbGFXEsGot" + } + }, + "system": { + "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis die Dauer des Zaubers abgelaufen ist.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 4, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.dpz383XbGFXEsGot", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.lIchGK1m7Y7fMcKG" + }, + { + "_id": "f0MedvERq1s8hy4z", + "name": "Schutzfeld", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/omega.svg", + "effects": [], + "folder": null, + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.NWPoiZHCmZ7ZJud4" + } + }, + "system": { + "description": "

Ein Schutzfeld mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, an dem nichtmagische Geschosse von außen her wirkungslos abprallen.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 4, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.NWPoiZHCmZ7ZJud4", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.f0MedvERq1s8hy4z" + }, + { + "_id": "cnl7AuqByHHjW1zd", + "name": "Telekinese", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/sbed/weight-crush.svg", + "effects": [], + "folder": null, + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.VGeMfTNSKWzNGm6r" + } + }, + "system": { + "description": "

Mit diesem Zauber lässt der Zauberwirker einen unbelebten Gegenstand mit einer Geschwindigkeit von 1 m pro Kampfrunde schweben, solange er sich ununterbrochen konzentriert (zählt als ganze Aktion).

", + "equipped": true, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-1 pro (Stufe x 5) kg Gewicht" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Konzentration", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.VGeMfTNSKWzNGm6r", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.cnl7AuqByHHjW1zd" + }, + { + "_id": "D3McezCJz6afqzmR", + "name": "Unsichtbarkeit", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", + "effects": [], + "folder": null, + "sort": 1000000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw" + } + }, + "system": { + "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 20, + "wizard": 12, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.D3McezCJz6afqzmR" + }, + { + "_id": "bKyT6b0j4wLXbL7O", + "name": "Verwirren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", + "effects": [], + "folder": null, + "sort": 1200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.niQVUxJHzdMDlwXc" + } + }, + "system": { + "description": "

Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte…
1–5… greift die Charaktere an
6–10… läuft verwirrt in eine zufällige Richtung
11–15… steht verwirrt herum
16+… greift die eigenen Verbündeten an
", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 8, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.niQVUxJHzdMDlwXc", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.bKyT6b0j4wLXbL7O" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 8, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 66, + "value": 88 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW #5A:20, #5M:20", + "foeFactor": 23, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Augenball", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346257, + "modifiedTime": 1740227862847, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!8E7Mm0LsiqFm6syY" +} diff --git a/packs/creatures/B_r_InLjj4RGxfkDrtXr.json b/packs/creatures/B_r_InLjj4RGxfkDrtXr.json new file mode 100644 index 00000000..cccee1e8 --- /dev/null +++ b/packs/creatures/B_r_InLjj4RGxfkDrtXr.json @@ -0,0 +1,325 @@ +{ + "_id": "InLjj4RGxfkDrtXr", + "name": "Bär", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/bear-1.png", + "items": [ + { + "_id": "qZayWokGcZreHpfI", + "name": "Pranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!InLjj4RGxfkDrtXr.qZayWokGcZreHpfI" + }, + { + "_id": "ayDGYJevUkbQ3N0c", + "name": "Fell", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!InLjj4RGxfkDrtXr.ayDGYJevUkbQ3N0c" + }, + { + "_id": "PKewYpkEmAWTc1j5", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!InLjj4RGxfkDrtXr.PKewYpkEmAWTc1j5" + }, + { + "_id": "WbEsNLQpzoWJlJyj", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!InLjj4RGxfkDrtXr.WbEsNLQpzoWJlJyj" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 12, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 50, + "value": 75 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:16)", + "foeFactor": 9, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 139, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Bär", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/bear*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346499, + "modifiedTime": 1740227862866, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!InLjj4RGxfkDrtXr" +} diff --git a/packs/creatures/Basilisk_GVLSLNSoMybeWhBP.json b/packs/creatures/Basilisk_GVLSLNSoMybeWhBP.json new file mode 100644 index 00000000..45ed7c2c --- /dev/null +++ b/packs/creatures/Basilisk_GVLSLNSoMybeWhBP.json @@ -0,0 +1,389 @@ +{ + "_id": "GVLSLNSoMybeWhBP", + "name": "Basilisk", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/basilisk-green.png", + "items": [ + { + "_id": "y5i2zrZBp74DKQrQ", + "name": "Großer Biss", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.y5i2zrZBp74DKQrQ" + }, + { + "_id": "3CFakJA3eQJYSFN7", + "name": "Schuppenpanzer", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.3CFakJA3eQJYSFN7" + }, + { + "_id": "x7vdeybwnlRnlqTu", + "name": "Blickangriff", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97", + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.x7vdeybwnlRnlqTu" + }, + { + "_id": "kQZnCtDlaCaKc38S", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.kQZnCtDlaCaKc38S" + }, + { + "_id": "cZa7Ms69DWYg8Pgz", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.cZa7Ms69DWYg8Pgz" + }, + { + "_id": "Hn8EIElYWelAKxiD", + "name": "Versteinern", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber Allheilung aufgehoben werden.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe", + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.Hn8EIElYWelAKxiD" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 14, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 1, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 140, + "value": 168 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:20)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 206, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Basilisk", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/basilisk*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346388, + "modifiedTime": 1740227862861, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!GVLSLNSoMybeWhBP" +} diff --git a/packs/creatures/Baumherr_WboyONCY2UZildi9.json b/packs/creatures/Baumherr_WboyONCY2UZildi9.json new file mode 100644 index 00000000..2d29a1bd --- /dev/null +++ b/packs/creatures/Baumherr_WboyONCY2UZildi9.json @@ -0,0 +1,421 @@ +{ + "_id": "WboyONCY2UZildi9", + "name": "Baumherr", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "CM1yKVLm6mhG2eQE", + "name": "Asthiebe", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.CM1yKVLm6mhG2eQE" + }, + { + "_id": "sZw8glq3cnPHu6yq", + "name": "Dicke Rinde", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.sZw8glq3cnPHu6yq" + }, + { + "_id": "X9jyAzrnyxuikyg3", + "name": "Anfällig (Feuer)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "system": { + "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C", + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.X9jyAzrnyxuikyg3" + }, + { + "_id": "B1Sw09kZopPZB8ys", + "name": "Mehrere Angriffe (+3)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 3 zusätzliche Asthiebe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG", + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.B1Sw09kZopPZB8ys" + }, + { + "_id": "x0mAm5abWWHlKJLz", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.x0mAm5abWWHlKJLz" + }, + { + "_id": "2bA1MnqkTTwKtMoS", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.2bA1MnqkTTwKtMoS" + }, + { + "_id": "fKCcOlyaebvj1HuL", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.fKCcOlyaebvj1HuL" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 20, + "mod": 0 + }, + "mobility": { + "base": 1, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 35, + "value": 70 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Lediglich Brennholz", + "foeFactor": 23, + "creatureType": "plantBeing", + "sizeCategory": "large", + "experiencePoints": 158, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Baumherr", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346710, + "modifiedTime": 1740227862885, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!WboyONCY2UZildi9" +} diff --git a/packs/creatures/D_monenf_rst_PKPmkOMLDGwS9QZJ.json b/packs/creatures/D_monenf_rst_PKPmkOMLDGwS9QZJ.json new file mode 100644 index 00000000..0cd78b36 --- /dev/null +++ b/packs/creatures/D_monenf_rst_PKPmkOMLDGwS9QZJ.json @@ -0,0 +1,190 @@ +{ + "_id": "PKPmkOMLDGwS9QZJ", + "name": "Dämonenfürst", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 20, + "mod": 0 + }, + "mobility": { + "base": 20, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 10, + "mod": 0 + }, + "constitution": { + "base": 10, + "mod": 0 + }, + "agility": { + "base": 10, + "mod": 0 + }, + "dexterity": { + "base": 10, + "mod": 0 + }, + "intellect": { + "base": 5, + "mod": 0 + }, + "aura": { + "base": 5, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 360, + "value": 400 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 42, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 579, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Dämonenfürst", + "displayName": 20, + "width": 4, + "height": 4, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346629, + "modifiedTime": 1740227862874, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!PKPmkOMLDGwS9QZJ" +} diff --git a/packs/creatures/Drachenwelpe__Blau__US32MfI48tX5x8Kz.json b/packs/creatures/Drachenwelpe__Blau__US32MfI48tX5x8Kz.json new file mode 100644 index 00000000..cdf26f93 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Blau__US32MfI48tX5x8Kz.json @@ -0,0 +1,223 @@ +{ + "_id": "US32MfI48tX5x8Kz", + "name": "Drachenwelpe (Blau)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "items": [ + { + "_id": "2lkp7kvBk98s2WcR", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!US32MfI48tX5x8Kz.2lkp7kvBk98s2WcR" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346697, + "modifiedTime": 1740227862883, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!US32MfI48tX5x8Kz" +} diff --git a/packs/creatures/Drachenwelpe__Bronze__tchJggykZKx2ctBv.json b/packs/creatures/Drachenwelpe__Bronze__tchJggykZKx2ctBv.json new file mode 100644 index 00000000..dccb05c5 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Bronze__tchJggykZKx2ctBv.json @@ -0,0 +1,255 @@ +{ + "_id": "tchJggykZKx2ctBv", + "name": "Drachenwelpe (Bronze)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Schallwellen-Odem", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!tchJggykZKx2ctBv.yjkoipelFXEzcy1x" + }, + { + "_id": "yTFT0UXNa9s9pbM4", + "name": "Wesen des Lichts (Settingoption)", + "type": "specialCreatureAbility", + "sort": 1200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA", + "duplicateSource": null + }, + "_key": "!actors.items!tchJggykZKx2ctBv.yTFT0UXNa9s9pbM4" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347091, + "modifiedTime": 1740227862917, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!tchJggykZKx2ctBv" +} diff --git a/packs/creatures/Drachenwelpe__Gelb__uomniEHbTAek8ERH.json b/packs/creatures/Drachenwelpe__Gelb__uomniEHbTAek8ERH.json new file mode 100644 index 00000000..84f980e6 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Gelb__uomniEHbTAek8ERH.json @@ -0,0 +1,255 @@ +{ + "_id": "uomniEHbTAek8ERH", + "name": "Drachenwelpe (Gelb)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Sandsturm-Odem", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!uomniEHbTAek8ERH.yjkoipelFXEzcy1x" + }, + { + "_id": "3wfMRBF49WH74mt2", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!uomniEHbTAek8ERH.3wfMRBF49WH74mt2" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347121, + "modifiedTime": 1740227862919, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!uomniEHbTAek8ERH" +} diff --git a/packs/creatures/Drachenwelpe__Gold__owGq4n7KX2P1o9em.json b/packs/creatures/Drachenwelpe__Gold__owGq4n7KX2P1o9em.json new file mode 100644 index 00000000..ad3dfa1a --- /dev/null +++ b/packs/creatures/Drachenwelpe__Gold__owGq4n7KX2P1o9em.json @@ -0,0 +1,223 @@ +{ + "_id": "owGq4n7KX2P1o9em", + "name": "Drachenwelpe (Gold)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Licht-Odem", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!owGq4n7KX2P1o9em.yjkoipelFXEzcy1x" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346962, + "modifiedTime": 1740227862910, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!owGq4n7KX2P1o9em" +} diff --git a/packs/creatures/Drachenwelpe__Gr_n__kFieLVdVz8XittRw.json b/packs/creatures/Drachenwelpe__Gr_n__kFieLVdVz8XittRw.json new file mode 100644 index 00000000..000b3503 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Gr_n__kFieLVdVz8XittRw.json @@ -0,0 +1,223 @@ +{ + "_id": "kFieLVdVz8XittRw", + "name": "Drachenwelpe (Grün)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "items": [ + { + "_id": "qYO8vFpNBw2wQLIJ", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!kFieLVdVz8XittRw.qYO8vFpNBw2wQLIJ" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346875, + "modifiedTime": 1740227862900, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!kFieLVdVz8XittRw" +} diff --git a/packs/creatures/Drachenwelpe__Rot__7CvWSMFqWHvwajP1.json b/packs/creatures/Drachenwelpe__Rot__7CvWSMFqWHvwajP1.json new file mode 100644 index 00000000..366fc944 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Rot__7CvWSMFqWHvwajP1.json @@ -0,0 +1,223 @@ +{ + "_id": "7CvWSMFqWHvwajP1", + "name": "Drachenwelpe (Rot)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "items": [ + { + "_id": "F5KCKyCC8nD8lrn2", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!7CvWSMFqWHvwajP1.F5KCKyCC8nD8lrn2" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346249, + "modifiedTime": 1740227862845, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!7CvWSMFqWHvwajP1" +} diff --git a/packs/creatures/Drachenwelpe__Silber__GeUXlf57uWcGVGRH.json b/packs/creatures/Drachenwelpe__Silber__GeUXlf57uWcGVGRH.json new file mode 100644 index 00000000..668c0565 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Silber__GeUXlf57uWcGVGRH.json @@ -0,0 +1,190 @@ +{ + "_id": "GeUXlf57uWcGVGRH", + "name": "Drachenwelpe (Silber)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346414, + "modifiedTime": 1740227862862, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!GeUXlf57uWcGVGRH" +} diff --git a/packs/creatures/Drachenwelpe__Wei___vsKKpweX6I1TQYBj.json b/packs/creatures/Drachenwelpe__Wei___vsKKpweX6I1TQYBj.json new file mode 100644 index 00000000..a29a4868 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Wei___vsKKpweX6I1TQYBj.json @@ -0,0 +1,255 @@ +{ + "_id": "vsKKpweX6I1TQYBj", + "name": "Drachenwelpe (Weiß)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Frost-Odem", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!vsKKpweX6I1TQYBj.yjkoipelFXEzcy1x" + }, + { + "_id": "xUH4ga5oyxeT3mW2", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!vsKKpweX6I1TQYBj.xUH4ga5oyxeT3mW2" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347204, + "modifiedTime": 1740227862921, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!vsKKpweX6I1TQYBj" +} diff --git a/packs/creatures/Drachenwelpe__schwarz__wqgUDJc7Qb28hBBo.json b/packs/creatures/Drachenwelpe__schwarz__wqgUDJc7Qb28hBBo.json new file mode 100644 index 00000000..92702f04 --- /dev/null +++ b/packs/creatures/Drachenwelpe__schwarz__wqgUDJc7Qb28hBBo.json @@ -0,0 +1,613 @@ +{ + "_id": "wqgUDJc7Qb28hBBo", + "name": "Drachenwelpe (schwarz)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "items": [ + { + "_id": "fogg4p9NQnpcBTUp", + "name": "Mehrere Angriffe", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "meleeRanged", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.fogg4p9NQnpcBTUp" + }, + { + "_id": "BwxnkXHThNRptudp", + "name": "Panzerschuppen", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 3, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.BwxnkXHThNRptudp" + }, + { + "_id": "4JCW7iKb2e9I2ZSj", + "name": "Angst (1)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.4JCW7iKb2e9I2ZSj" + }, + { + "_id": "VFP6bNPYcASg0JWE", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.VFP6bNPYcASg0JWE" + }, + { + "_id": "o4o3thrxtXrhRWYT", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.o4o3thrxtXrhRWYT" + }, + { + "_id": "nFNJLYh2O5rOFY89", + "name": "Mehrere Angriffe (+1)", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.nFNJLYh2O5rOFY89" + }, + { + "_id": "h5HdNw0r06ffdOwr", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.h5HdNw0r06ffdOwr" + }, + { + "_id": "yjkoipelFXEzcy1x", + "name": "Säure-Odem", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.yjkoipelFXEzcy1x" + }, + { + "_id": "LHdWF7tVc3uHC0LW", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 900000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.LHdWF7tVc3uHC0LW" + }, + { + "_id": "ltDNoswX7EaA2d2X", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "sort": 1000000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.ltDNoswX7EaA2d2X" + }, + { + "_id": "lOr6f4vMoBBOEPB7", + "name": "Verschlingen", + "type": "specialCreatureAbility", + "sort": 1100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.lOr6f4vMoBBOEPB7" + }, + { + "_id": "XsKjxXO7k3vIMyfQ", + "name": "Zerstampfen", + "type": "specialCreatureAbility", + "sort": 1300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.XsKjxXO7k3vIMyfQ" + }, + { + "_id": "hoqMl7N1bv8BKJA5", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.hoqMl7N1bv8BKJA5" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347224, + "modifiedTime": 1740227862923, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!wqgUDJc7Qb28hBBo" +} diff --git a/packs/creatures/Echsenmensch_HgTRHAjq1YBk40sO.json b/packs/creatures/Echsenmensch_HgTRHAjq1YBk40sO.json new file mode 100644 index 00000000..c203716b --- /dev/null +++ b/packs/creatures/Echsenmensch_HgTRHAjq1YBk40sO.json @@ -0,0 +1,329 @@ +{ + "_id": "HgTRHAjq1YBk40sO", + "name": "Echsenmensch", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/lizard-man-green-dark.png", + "items": [ + { + "_id": "5X3YrQ6PeuexE5QD", + "name": "Speer", + "type": "weapon", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q" + } + }, + "img": "icons/weapons/polearms/spear-hooked-simple.webp", + "effects": [], + "folder": null, + "system": { + "description": "

Zerbricht bei Schießen-Patzer

", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "attackType": "meleeRanged", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q", + "duplicateSource": null + }, + "_key": "!actors.items!HgTRHAjq1YBk40sO.5X3YrQ6PeuexE5QD" + }, + { + "_id": "CylYyspqzzOiD3QA", + "name": "Schuppenpanzer", + "type": "armor", + "sort": 300000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!HgTRHAjq1YBk40sO.CylYyspqzzOiD3QA" + }, + { + "_id": "tOY9c09eNSqmJHki", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!HgTRHAjq1YBk40sO.tOY9c09eNSqmJHki" + }, + { + "_id": "G0avaPXmxplRB8al", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!HgTRHAjq1YBk40sO.G0avaPXmxplRB8al" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 3, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 21 + }, + "defense": { + "mod": 2 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:12, #2B:17", + "foeFactor": 3, + "creatureType": "humanoid", + "sizeCategory": "normal", + "experiencePoints": 71, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Echsenmensch", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/lizard-man*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346458, + "modifiedTime": 1740227862864, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!HgTRHAjq1YBk40sO" +} diff --git a/packs/creatures/Einhorn_SQv63FQBjA5jW5xv.json b/packs/creatures/Einhorn_SQv63FQBjA5jW5xv.json new file mode 100644 index 00000000..db0c055b --- /dev/null +++ b/packs/creatures/Einhorn_SQv63FQBjA5jW5xv.json @@ -0,0 +1,525 @@ +{ + "_id": "SQv63FQBjA5jW5xv", + "name": "Einhorn", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "o8CRX0tj3mrixbeV", + "name": "Mehrere Angriffe", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.o8CRX0tj3mrixbeV" + }, + { + "_id": "k4syi7gvtjmG6yVt", + "name": "Angst (1)", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.k4syi7gvtjmG6yVt" + }, + { + "_id": "ywm8DSneqBXy2Pk9", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.ywm8DSneqBXy2Pk9" + }, + { + "_id": "RWRBDrcHL1YK6MvZ", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.RWRBDrcHL1YK6MvZ" + }, + { + "_id": "m78risNOMkOZtoix", + "name": "Mehrere Angriffe (+1)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 1 zusätzlichen Angriff (Horn oder Hufe) in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.m78risNOMkOZtoix" + }, + { + "_id": "WLc6j329EiSfsRj5", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.WLc6j329EiSfsRj5" + }, + { + "_id": "ysPz3YM2HzR9rptL", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.ysPz3YM2HzR9rptL" + }, + { + "_id": "As31RtyHN8S4aN7O", + "name": "Wesen des Lichts (Settingoption)", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.As31RtyHN8S4aN7O" + }, + { + "_id": "mwMtV9vS293KeF3Q", + "name": "Spurt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/run.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.KUbT1gBeThcLY7vU" + } + }, + "system": { + "description": "

Der Laufen-Wert des Ziels wird für die Dauer des Zaubers verdoppelt.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 7, + "wizard": 7, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.KUbT1gBeThcLY7vU", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.mwMtV9vS293KeF3Q" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 13, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 6, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 1, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:12, #2B:17", + "foeFactor": 9, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 189, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Einhorn", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346679, + "modifiedTime": 1740227862881, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!SQv63FQBjA5jW5xv" +} diff --git a/packs/creatures/Erdelementar_III_mOQ21HFNisTfu7ve.json b/packs/creatures/Erdelementar_III_mOQ21HFNisTfu7ve.json new file mode 100644 index 00000000..ebc3a4ab --- /dev/null +++ b/packs/creatures/Erdelementar_III_mOQ21HFNisTfu7ve.json @@ -0,0 +1,293 @@ +{ + "_id": "mOQ21HFNisTfu7ve", + "name": "Erdelementar III", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "VHt6K5ArvzyfTEje", + "name": "Steinpranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!mOQ21HFNisTfu7ve.VHt6K5ArvzyfTEje" + }, + { + "_id": "fIoBfLmNCxGfGzEX", + "name": "Steinwesen", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 4, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!mOQ21HFNisTfu7ve.fIoBfLmNCxGfGzEX" + }, + { + "_id": "23wk4FP7dNTkLgB5", + "name": "Anfällig (Luft)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "system": { + "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY", + "duplicateSource": null + }, + "_key": "!actors.items!mOQ21HFNisTfu7ve.23wk4FP7dNTkLgB5" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 22, + "mod": 0 + }, + "mobility": { + "base": 2, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 7, + "mod": 0 + }, + "agility": { + "base": 1, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 39, + "value": 78 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 23, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 124, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erdelementar III", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346894, + "modifiedTime": 1740227862904, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!mOQ21HFNisTfu7ve" +} diff --git a/packs/creatures/Erdelementar_II_S8DNL5XpmNRSNJhD.json b/packs/creatures/Erdelementar_II_S8DNL5XpmNRSNJhD.json new file mode 100644 index 00000000..dfd9560f --- /dev/null +++ b/packs/creatures/Erdelementar_II_S8DNL5XpmNRSNJhD.json @@ -0,0 +1,190 @@ +{ + "_id": "S8DNL5XpmNRSNJhD", + "name": "Erdelementar II", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 17, + "mod": 0 + }, + "mobility": { + "base": 2, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 1, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 32 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 15, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 70, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erdelementar II", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346676, + "modifiedTime": 1740227862880, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!S8DNL5XpmNRSNJhD" +} diff --git a/packs/creatures/Erdelementar_I_1PYYg60DHC6RA3oO.json b/packs/creatures/Erdelementar_I_1PYYg60DHC6RA3oO.json new file mode 100644 index 00000000..aabdad52 --- /dev/null +++ b/packs/creatures/Erdelementar_I_1PYYg60DHC6RA3oO.json @@ -0,0 +1,190 @@ +{ + "_id": "1PYYg60DHC6RA3oO", + "name": "Erdelementar I", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 12, + "mod": 0 + }, + "mobility": { + "base": 2, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 1, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -13, + "value": 13 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 8, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 44, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erdelementar I", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346142, + "modifiedTime": 1740227862839, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!1PYYg60DHC6RA3oO" +} diff --git a/packs/creatures/Erwachsener_Drache__Blau__e1oy4levSO4VOQx8.json b/packs/creatures/Erwachsener_Drache__Blau__e1oy4levSO4VOQx8.json new file mode 100644 index 00000000..e1af749b --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Blau__e1oy4levSO4VOQx8.json @@ -0,0 +1,255 @@ +{ + "_id": "e1oy4levSO4VOQx8", + "name": "Erwachsener Drache (Blau)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "items": [ + { + "_id": "pX6BSfPqftBLxuhf", + "name": "Angst (3)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 30 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU", + "duplicateSource": null + }, + "_key": "!actors.items!e1oy4levSO4VOQx8.pX6BSfPqftBLxuhf" + }, + { + "_id": "6oHGA6nCXRiuAY2O", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!e1oy4levSO4VOQx8.6oHGA6nCXRiuAY2O" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "displayName": 20, + "width": 4, + "height": 4, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346843, + "modifiedTime": 1740227862898, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!e1oy4levSO4VOQx8" +} diff --git a/packs/creatures/Erwachsener_Drache__Bronze__Ko3jVM757Kr89IQr.json b/packs/creatures/Erwachsener_Drache__Bronze__Ko3jVM757Kr89IQr.json new file mode 100644 index 00000000..18100cc8 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Bronze__Ko3jVM757Kr89IQr.json @@ -0,0 +1,190 @@ +{ + "_id": "Ko3jVM757Kr89IQr", + "name": "Erwachsener Drache (Bronze)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "displayName": 20, + "width": 4, + "height": 4, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346542, + "modifiedTime": 1740227862868, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Ko3jVM757Kr89IQr" +} diff --git a/packs/creatures/Erwachsener_Drache__Gelb__bEKen2GJBc6d0nix.json b/packs/creatures/Erwachsener_Drache__Gelb__bEKen2GJBc6d0nix.json new file mode 100644 index 00000000..e0112fc6 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Gelb__bEKen2GJBc6d0nix.json @@ -0,0 +1,223 @@ +{ + "_id": "bEKen2GJBc6d0nix", + "name": "Erwachsener Drache (Gelb)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "items": [ + { + "_id": "XdTwK8lRxVvGfKja", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!bEKen2GJBc6d0nix.XdTwK8lRxVvGfKja" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "displayName": 20, + "width": 4, + "height": 4, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346793, + "modifiedTime": 1740227862891, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!bEKen2GJBc6d0nix" +} diff --git a/packs/creatures/Erwachsener_Drache__Gold__6Ezz8k1SB64HQ9o5.json b/packs/creatures/Erwachsener_Drache__Gold__6Ezz8k1SB64HQ9o5.json new file mode 100644 index 00000000..10dbf9cb --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Gold__6Ezz8k1SB64HQ9o5.json @@ -0,0 +1,190 @@ +{ + "_id": "6Ezz8k1SB64HQ9o5", + "name": "Erwachsener Drache (Gold)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "displayName": 20, + "width": 4, + "height": 4, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346215, + "modifiedTime": 1740227862843, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!6Ezz8k1SB64HQ9o5" +} diff --git a/packs/creatures/Erwachsener_Drache__Gr_n__FYpSMLagk6Qs6MWS.json b/packs/creatures/Erwachsener_Drache__Gr_n__FYpSMLagk6Qs6MWS.json new file mode 100644 index 00000000..777b71b2 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Gr_n__FYpSMLagk6Qs6MWS.json @@ -0,0 +1,223 @@ +{ + "_id": "FYpSMLagk6Qs6MWS", + "name": "Erwachsener Drache (Grün)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "items": [ + { + "_id": "3bhEx0YT3KTgl19E", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!FYpSMLagk6Qs6MWS.3bhEx0YT3KTgl19E" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "displayName": 20, + "width": 4, + "height": 4, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346356, + "modifiedTime": 1740227862857, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!FYpSMLagk6Qs6MWS" +} diff --git a/packs/creatures/Erwachsener_Drache__Rot__7B1AJKsZ9OBmj46R.json b/packs/creatures/Erwachsener_Drache__Rot__7B1AJKsZ9OBmj46R.json new file mode 100644 index 00000000..0d792062 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Rot__7B1AJKsZ9OBmj46R.json @@ -0,0 +1,223 @@ +{ + "_id": "7B1AJKsZ9OBmj46R", + "name": "Erwachsener Drache (Rot)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "items": [ + { + "_id": "WG8AshF0brFilFXB", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!7B1AJKsZ9OBmj46R.WG8AshF0brFilFXB" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "displayName": 20, + "width": 4, + "height": 4, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346243, + "modifiedTime": 1740227862845, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!7B1AJKsZ9OBmj46R" +} diff --git a/packs/creatures/Erwachsener_Drache__Schwarz__DoaYEZc7DgLJQ8yg.json b/packs/creatures/Erwachsener_Drache__Schwarz__DoaYEZc7DgLJQ8yg.json new file mode 100644 index 00000000..fbeb37ba --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Schwarz__DoaYEZc7DgLJQ8yg.json @@ -0,0 +1,223 @@ +{ + "_id": "DoaYEZc7DgLJQ8yg", + "name": "Erwachsener Drache (Schwarz)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "items": [ + { + "_id": "YH44ChGg43M1zfJV", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!DoaYEZc7DgLJQ8yg.YH44ChGg43M1zfJV" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "displayName": 20, + "width": 4, + "height": 4, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346320, + "modifiedTime": 1740227862854, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!DoaYEZc7DgLJQ8yg" +} diff --git a/packs/creatures/Erwachsener_Drache__Silber__OsCyBwPcejWRSqLr.json b/packs/creatures/Erwachsener_Drache__Silber__OsCyBwPcejWRSqLr.json new file mode 100644 index 00000000..a55b9d82 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Silber__OsCyBwPcejWRSqLr.json @@ -0,0 +1,223 @@ +{ + "_id": "OsCyBwPcejWRSqLr", + "name": "Erwachsener Drache (Silber)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Quecksilber-Odem", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!OsCyBwPcejWRSqLr.yjkoipelFXEzcy1x" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "displayName": 20, + "width": 4, + "height": 4, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346608, + "modifiedTime": 1740227862871, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!OsCyBwPcejWRSqLr" +} diff --git a/packs/creatures/Erwachsener_Drache__Weiss__KlpfMH3L3pL82SSd.json b/packs/creatures/Erwachsener_Drache__Weiss__KlpfMH3L3pL82SSd.json new file mode 100644 index 00000000..733bcc64 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Weiss__KlpfMH3L3pL82SSd.json @@ -0,0 +1,223 @@ +{ + "_id": "KlpfMH3L3pL82SSd", + "name": "Erwachsener Drache (Weiss)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "items": [ + { + "_id": "27WSvh2zN2Th7iAs", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!KlpfMH3L3pL82SSd.27WSvh2zN2Th7iAs" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": "

Drachenarten

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FarbeOdemWesen...
BlauBlitz-...der Dunkelheit
BronzeSchallwellen-...des Lichts
GelbSandsturm-...der Dunkelheit
GoldLicht-...des Lichts
GrünGiftgas-...der Dunkelheit
RotFeuer-...der Dunkelheit
SchwarzSäure-...der Dunkelheit
SilberQuecksilber-...des Lichts
WeissFrost-...der Dunkelheit
" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "displayName": 20, + "width": 4, + "height": 4, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346527, + "modifiedTime": 1740227862868, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!KlpfMH3L3pL82SSd" +} diff --git a/packs/creatures/Eulerich_Z5eEkZjZ525N90ai.json b/packs/creatures/Eulerich_Z5eEkZjZ525N90ai.json new file mode 100644 index 00000000..b7ecfaf6 --- /dev/null +++ b/packs/creatures/Eulerich_Z5eEkZjZ525N90ai.json @@ -0,0 +1,293 @@ +{ + "_id": "Z5eEkZjZ525N90ai", + "name": "Eulerich", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/owldritch-brown.png", + "items": [ + { + "_id": "3yCyEbqp9F3TgJkS", + "name": "Pranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Z5eEkZjZ525N90ai.3yCyEbqp9F3TgJkS" + }, + { + "_id": "3L2HJX2p7uIpxTjJ", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!Z5eEkZjZ525N90ai.3L2HJX2p7uIpxTjJ" + }, + { + "_id": "gzsgGDcT6pGXHxIZ", + "name": "Federkleid", + "type": "armor", + "sort": 300000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Z5eEkZjZ525N90ai.gzsgGDcT6pGXHxIZ" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 14, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 27, + "value": 54 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:14)", + "foeFactor": 11, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 115, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Eulerich", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/owldritch*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346738, + "modifiedTime": 1740227862887, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Z5eEkZjZ525N90ai" +} diff --git a/packs/creatures/Feuerelementar_III_mPcmJ9nHpy1AbKVr.json b/packs/creatures/Feuerelementar_III_mPcmJ9nHpy1AbKVr.json new file mode 100644 index 00000000..e9421bd4 --- /dev/null +++ b/packs/creatures/Feuerelementar_III_mPcmJ9nHpy1AbKVr.json @@ -0,0 +1,190 @@ +{ + "_id": "mPcmJ9nHpy1AbKVr", + "name": "Feuerelementar III", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 18, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 7, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 35, + "value": 70 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 24, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 145, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Feuerelementar III", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346897, + "modifiedTime": 1740227862905, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!mPcmJ9nHpy1AbKVr" +} diff --git a/packs/creatures/Feuerelementar_II_huPL6cx3RadJNhL0.json b/packs/creatures/Feuerelementar_II_huPL6cx3RadJNhL0.json new file mode 100644 index 00000000..3d273fce --- /dev/null +++ b/packs/creatures/Feuerelementar_II_huPL6cx3RadJNhL0.json @@ -0,0 +1,190 @@ +{ + "_id": "huPL6cx3RadJNhL0", + "name": "Feuerelementar II", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 13, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 29 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": -2 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 15, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 95, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Feuerelementar II", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346851, + "modifiedTime": 1740227862899, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!huPL6cx3RadJNhL0" +} diff --git a/packs/creatures/Feuerelementar_I_tYcKw69Feoy3B6hG.json b/packs/creatures/Feuerelementar_I_tYcKw69Feoy3B6hG.json new file mode 100644 index 00000000..5de33753 --- /dev/null +++ b/packs/creatures/Feuerelementar_I_tYcKw69Feoy3B6hG.json @@ -0,0 +1,325 @@ +{ + "_id": "tYcKw69Feoy3B6hG", + "name": "Feuerelementar I", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "JI4hW2uyULt2cKs2", + "name": "Flammenhieb", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!tYcKw69Feoy3B6hG.JI4hW2uyULt2cKs2" + }, + { + "_id": "eofu8kICYeEpxUT1", + "name": "Keine feste Gestalt", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!tYcKw69Feoy3B6hG.eofu8kICYeEpxUT1" + }, + { + "_id": "c95cnrJtMG20InKV", + "name": "Anfällig (Wasser)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "system": { + "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e", + "duplicateSource": null + }, + "_key": "!actors.items!tYcKw69Feoy3B6hG.c95cnrJtMG20InKV" + }, + { + "_id": "xtwmRcp2CEGdK5C6", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!tYcKw69Feoy3B6hG.xtwmRcp2CEGdK5C6" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -12, + "value": 12 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 9, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 70, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Feuerelementar I", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347078, + "modifiedTime": 1740227862916, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!tYcKw69Feoy3B6hG" +} diff --git a/packs/creatures/Fliegendes_Schwert_ABiPZtu7q8KhWzXL.json b/packs/creatures/Fliegendes_Schwert_ABiPZtu7q8KhWzXL.json new file mode 100644 index 00000000..957b0533 --- /dev/null +++ b/packs/creatures/Fliegendes_Schwert_ABiPZtu7q8KhWzXL.json @@ -0,0 +1,297 @@ +{ + "_id": "ABiPZtu7q8KhWzXL", + "name": "Fliegendes Schwert", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "iVH3BR6wH35UTmmW", + "name": "Langschwert", + "type": "weapon", + "sort": 100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" + } + }, + "img": "icons/weapons/swords/sword-guard-blue.webp", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.htmQWmMCQN620KrE", + "duplicateSource": null + }, + "_key": "!actors.items!ABiPZtu7q8KhWzXL.iVH3BR6wH35UTmmW" + }, + { + "_id": "r0mQXKDTdvRjlSze", + "name": "Metallwesen", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 5, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!ABiPZtu7q8KhWzXL.r0mQXKDTdvRjlSze" + }, + { + "_id": "XfgWdbwMTVhcS3A9", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!ABiPZtu7q8KhWzXL.XfgWdbwMTVhcS3A9" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -12, + "value": 12 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 8, + "creatureType": "construct", + "sizeCategory": "small", + "experiencePoints": 57, + "description": "

Herstellung: 1513 GM + Waffenschmied

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Fliegendes Schwert", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346283, + "modifiedTime": 1740227862850, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!ABiPZtu7q8KhWzXL" +} diff --git a/packs/creatures/Gargyl_GnW2ELzTtLoJmUQ1.json b/packs/creatures/Gargyl_GnW2ELzTtLoJmUQ1.json new file mode 100644 index 00000000..4d066451 --- /dev/null +++ b/packs/creatures/Gargyl_GnW2ELzTtLoJmUQ1.json @@ -0,0 +1,485 @@ +{ + "_id": "GnW2ELzTtLoJmUQ1", + "name": "Gargyl", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/gargoyle-gray.png", + "items": [ + { + "_id": "XGrSqryhxGUlUJkC", + "name": "Steinklaue", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.XGrSqryhxGUlUJkC" + }, + { + "_id": "e28wsq9gdMv8u94N", + "name": "Steinwesen", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 4, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.e28wsq9gdMv8u94N" + }, + { + "_id": "ur7rgX6JTOwscpm5", + "name": "Anfällig (Luft)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "system": { + "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.ur7rgX6JTOwscpm5" + }, + { + "_id": "XSowCGPLnuUUt0gb", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.XSowCGPLnuUUt0gb" + }, + { + "_id": "IEf4b9ukDhSecShW", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.IEf4b9ukDhSecShW" + }, + { + "_id": "7x3a6bQcUXDNNjfx", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.7x3a6bQcUXDNNjfx" + }, + { + "_id": "ILpCHZ6o5GV4NakU", + "name": "Kletterläufer", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.ILpCHZ6o5GV4NakU" + }, + { + "_id": "iZL3YxmtOHvZvYgW", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.iZL3YxmtOHvZvYgW" + }, + { + "_id": "FydhkYVuUuHNXzxS", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "sort": 900000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.FydhkYVuUuHNXzxS" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 7, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 1, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 1, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -9, + "value": 10 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:8)", + "foeFactor": 6, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 91, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Gargyl", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/gargoyle*.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346440, + "modifiedTime": 1740227862863, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!GnW2ELzTtLoJmUQ1" +} diff --git a/packs/creatures/Geist_cE5kI3uqXWQrCaI5.json b/packs/creatures/Geist_cE5kI3uqXWQrCaI5.json new file mode 100644 index 00000000..2e373291 --- /dev/null +++ b/packs/creatures/Geist_cE5kI3uqXWQrCaI5.json @@ -0,0 +1,592 @@ +{ + "_id": "cE5kI3uqXWQrCaI5", + "name": "Geist", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/ghost-1.png", + "items": [ + { + "_id": "EGknWGHQszJHJHnV", + "name": "Geisterklaue", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.EGknWGHQszJHJHnV" + }, + { + "_id": "FR4dQPwgDCH9Ruox", + "name": "Körperlos", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.FR4dQPwgDCH9Ruox" + }, + { + "_id": "U95WXWQaKfIPiJZK", + "name": "Alterung (1 Jahr pro Schadenspunkt)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.U95WXWQaKfIPiJZK" + }, + { + "_id": "QkZT7930qdhuLFxw", + "name": "Angst (2)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 20 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.QkZT7930qdhuLFxw" + }, + { + "_id": "I31y8QW6HoMJn5Ar", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.I31y8QW6HoMJn5Ar" + }, + { + "_id": "2VOjRedLceEPleW7", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.2VOjRedLceEPleW7" + }, + { + "_id": "2NixNLo8G3DqU3pt", + "name": "Nur durch Magie verletzbar", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.2NixNLo8G3DqU3pt" + }, + { + "_id": "DNSCPQ1kOSiiyvOK", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 900000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.DNSCPQ1kOSiiyvOK" + }, + { + "_id": "jP3c9iA0GT4gwt3c", + "name": "Wesen des Lichts (Settingoption)", + "type": "specialCreatureAbility", + "sort": 1000000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.jP3c9iA0GT4gwt3c" + }, + { + "_id": "02uWHUcM8MBPKqb6", + "name": "Totenkraft", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", + "effects": [], + "folder": null, + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" + } + }, + "system": { + "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.02uWHUcM8MBPKqb6" + }, + { + "_id": "YZgaOumzBst1OTtb", + "name": "Terror", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/terror.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.SgDFje4OTxqPEzoA" + } + }, + "system": { + "description": "

Bei Erfolg fliehen betroffene Ziele – maximal eine Anzahl gleich der Stufe des Zauberwirkers – so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren.

Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 5, + "wizard": 9, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.SgDFje4OTxqPEzoA", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.YZgaOumzBst1OTtb" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 1, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 3, + "mod": 0 + }, + "aura": { + "base": 6, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 27 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 8 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 17, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 245, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Geist", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/ghost*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346804, + "modifiedTime": 1740227862892, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!cE5kI3uqXWQrCaI5" +} diff --git a/packs/creatures/Goblin_vXmTcBUKZkB2UBD7.json b/packs/creatures/Goblin_vXmTcBUKZkB2UBD7.json new file mode 100644 index 00000000..f96667c2 --- /dev/null +++ b/packs/creatures/Goblin_vXmTcBUKZkB2UBD7.json @@ -0,0 +1,360 @@ +{ + "_id": "vXmTcBUKZkB2UBD7", + "name": "Goblin", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/goblin-knife.png", + "items": [ + { + "_id": "joNh3JSsqfqXk4lU", + "name": "Ast", + "type": "weapon", + "sort": 100000, + "flags": {}, + "effects": [], + "img": "icons/svg/item-bag.svg", + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!vXmTcBUKZkB2UBD7.joNh3JSsqfqXk4lU" + }, + { + "_id": "ftCrAdxpJlnc85aU", + "name": "Messer", + "type": "weapon", + "sort": 200000, + "flags": {}, + "effects": [], + "img": "icons/svg/item-bag.svg", + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!vXmTcBUKZkB2UBD7.ftCrAdxpJlnc85aU" + }, + { + "_id": "G6OoqVDTk9jwOU7r", + "name": "Fellflicken", + "type": "armor", + "sort": 300000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!vXmTcBUKZkB2UBD7.G6OoqVDTk9jwOU7r" + }, + { + "_id": "uHVUAMh8QgcoNDno", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!vXmTcBUKZkB2UBD7.uHVUAMh8QgcoNDno" + }, + { + "_id": "yW9EtSEtM40owDQt", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!vXmTcBUKZkB2UBD7.yW9EtSEtM40owDQt" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 5, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 3, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 1, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -8, + "value": 8 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:10", + "foeFactor": 1, + "creatureType": "humanoid", + "sizeCategory": "small", + "experiencePoints": 42, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Goblin", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/goblin*.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347151, + "modifiedTime": 1740227862919, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!vXmTcBUKZkB2UBD7" +} diff --git a/packs/creatures/Golem__Eisen__dnX0uQXQCEnGs7dM.json b/packs/creatures/Golem__Eisen__dnX0uQXQCEnGs7dM.json new file mode 100644 index 00000000..2f088da4 --- /dev/null +++ b/packs/creatures/Golem__Eisen__dnX0uQXQCEnGs7dM.json @@ -0,0 +1,293 @@ +{ + "_id": "dnX0uQXQCEnGs7dM", + "name": "Golem, Eisen-", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "KzEfCqb54s8Ju7x1", + "name": "Eisenpranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!dnX0uQXQCEnGs7dM.KzEfCqb54s8Ju7x1" + }, + { + "_id": "HjZd5t1xvRNoHZdX", + "name": "Metallwesen", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 5, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!dnX0uQXQCEnGs7dM.HjZd5t1xvRNoHZdX" + }, + { + "_id": "clWF2wt2WK7eWuxW", + "name": "Zerstampfen", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", + "duplicateSource": null + }, + "_key": "!actors.items!dnX0uQXQCEnGs7dM.clWF2wt2WK7eWuxW" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 20, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 36, + "value": 72 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 27, + "creatureType": "construct", + "sizeCategory": "large", + "experiencePoints": 173, + "description": "

Herstellung: 3750 GM + Rüstungsschmied

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Golem, Eisen-", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346836, + "modifiedTime": 1740227862897, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!dnX0uQXQCEnGs7dM" +} diff --git a/packs/creatures/Golem__Knochen__HSgR2FXUmsT2zfIc.json b/packs/creatures/Golem__Knochen__HSgR2FXUmsT2zfIc.json new file mode 100644 index 00000000..133141f1 --- /dev/null +++ b/packs/creatures/Golem__Knochen__HSgR2FXUmsT2zfIc.json @@ -0,0 +1,290 @@ +{ + "_id": "HSgR2FXUmsT2zfIc", + "name": "Golem, Knochen-", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "KzEfCqb54s8Ju7x1", + "name": "Knochenpranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!HSgR2FXUmsT2zfIc.KzEfCqb54s8Ju7x1" + }, + { + "_id": "43U10Znpq4coew6C", + "name": "Mehrere Angriffe (+3)", + "type": "specialCreatureAbility", + "sort": 550000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit seinen insgesamt vier Armen 3 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG", + "duplicateSource": null + }, + "_key": "!actors.items!HSgR2FXUmsT2zfIc.43U10Znpq4coew6C" + }, + { + "_id": "Lu7kcH5ekEpY8YDU", + "name": "Mehrere Angriffglieder (+4)", + "type": "specialCreatureAbility", + "sort": 575000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit insgesamt 4 Armen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0", + "duplicateSource": null + }, + "_key": "!actors.items!HSgR2FXUmsT2zfIc.Lu7kcH5ekEpY8YDU" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 6, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 20, + "value": 40 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 11, + "creatureType": "construct", + "sizeCategory": "large", + "experiencePoints": 148, + "description": "

Herstellung: 2613 GM + Schreinern

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Golem, Knochen-", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346447, + "modifiedTime": 1740227862864, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!HSgR2FXUmsT2zfIc" +} diff --git a/packs/creatures/Golem__Kristall__sCBrVIDh2umWr63g.json b/packs/creatures/Golem__Kristall__sCBrVIDh2umWr63g.json new file mode 100644 index 00000000..1848719d --- /dev/null +++ b/packs/creatures/Golem__Kristall__sCBrVIDh2umWr63g.json @@ -0,0 +1,336 @@ +{ + "_id": "sCBrVIDh2umWr63g", + "name": "Golem, Kristall-", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "KzEfCqb54s8Ju7x1", + "name": "Kirstallpranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!sCBrVIDh2umWr63g.KzEfCqb54s8Ju7x1" + }, + { + "_id": "mJi3ylBo7yPG5vMw", + "name": "Kristallwesen", + "type": "armor", + "sort": 800000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 3, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!sCBrVIDh2umWr63g.mJi3ylBo7yPG5vMw" + }, + { + "_id": "aa8a89EaVy8fjgLn", + "name": "Blitz", + "type": "spell", + "sort": 900000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.Senq5ub2Cx0agJgi" + } + }, + "img": "systems/ds4/assets/icons/game-icons/delapouite/bolt-spell-cast.svg", + "effects": [], + "folder": null, + "system": { + "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind. Gegner in Metallrüstung dürfen keine Abwehr gegen Blitze würfeln.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": true, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": 10, + "wizard": 7, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.Senq5ub2Cx0agJgi", + "duplicateSource": null + }, + "_key": "!actors.items!sCBrVIDh2umWr63g.aa8a89EaVy8fjgLn" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 8, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 4, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 5, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 21, + "value": 42 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 6 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 10, + "creatureType": "construct", + "sizeCategory": "large", + "experiencePoints": 134, + "description": "

Herstellung: 2513 GM + Steinmetz

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Golem, Kristall-", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347061, + "modifiedTime": 1740227862915, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!sCBrVIDh2umWr63g" +} diff --git a/packs/creatures/Golem__Lehm__yisaQaEFqduLmAJe.json b/packs/creatures/Golem__Lehm__yisaQaEFqduLmAJe.json new file mode 100644 index 00000000..bf0b030e --- /dev/null +++ b/packs/creatures/Golem__Lehm__yisaQaEFqduLmAJe.json @@ -0,0 +1,354 @@ +{ + "_id": "yisaQaEFqduLmAJe", + "name": "Golem, Lehm-", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "KzEfCqb54s8Ju7x1", + "name": "Lehmpranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!yisaQaEFqduLmAJe.KzEfCqb54s8Ju7x1" + }, + { + "_id": "lB0BTGi2Qp2IpbTp", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!yisaQaEFqduLmAJe.lB0BTGi2Qp2IpbTp" + }, + { + "_id": "QTbksMwiH60vH9lT", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!yisaQaEFqduLmAJe.QTbksMwiH60vH9lT" + }, + { + "_id": "7HsvjAKlmOXSvm6e", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!yisaQaEFqduLmAJe.7HsvjAKlmOXSvm6e" + }, + { + "_id": "y8yRArJSJhHTdPXU", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!yisaQaEFqduLmAJe.y8yRArJSJhHTdPXU" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 4, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 23, + "value": 46 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 8, + "creatureType": "construct", + "sizeCategory": "large", + "experiencePoints": 110, + "description": "

Herstellung: 2338 GM + Steinmetz

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Golem, Lehm-", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347232, + "modifiedTime": 1740227862924, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!yisaQaEFqduLmAJe" +} diff --git a/packs/creatures/Golem__Stein__cf8BOIAxMKvuxYYW.json b/packs/creatures/Golem__Stein__cf8BOIAxMKvuxYYW.json new file mode 100644 index 00000000..1699a95e --- /dev/null +++ b/packs/creatures/Golem__Stein__cf8BOIAxMKvuxYYW.json @@ -0,0 +1,261 @@ +{ + "_id": "cf8BOIAxMKvuxYYW", + "name": "Golem, Stein-", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "KzEfCqb54s8Ju7x1", + "name": "Steinpranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!cf8BOIAxMKvuxYYW.KzEfCqb54s8Ju7x1" + }, + { + "_id": "HjZd5t1xvRNoHZdX", + "name": "Steinwesen", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 4, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!cf8BOIAxMKvuxYYW.HjZd5t1xvRNoHZdX" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 18, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 4, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 33, + "value": 66 + }, + "defense": { + "mod": 1 + }, + "initiative": { + "mod": 2 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 23, + "creatureType": "construct", + "sizeCategory": "large", + "experiencePoints": 160, + "description": "

Herstellung: 3338 GM + Steinmetz

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Golem, Stein-", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346809, + "modifiedTime": 1740227862893, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!cf8BOIAxMKvuxYYW" +} diff --git a/packs/creatures/Hai_7kXHNCARsD0nZCqr.json b/packs/creatures/Hai_7kXHNCARsD0nZCqr.json new file mode 100644 index 00000000..0a055edc --- /dev/null +++ b/packs/creatures/Hai_7kXHNCARsD0nZCqr.json @@ -0,0 +1,322 @@ +{ + "_id": "7kXHNCARsD0nZCqr", + "name": "Hai", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "LddIU7JRhnrzFzgr", + "name": "Großer Biss", + "type": "weapon", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!7kXHNCARsD0nZCqr.LddIU7JRhnrzFzgr" + }, + { + "_id": "4QWPtzkl6EncykP4", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!7kXHNCARsD0nZCqr.4QWPtzkl6EncykP4" + }, + { + "_id": "ncn9gc2yJOMhWGhb", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!7kXHNCARsD0nZCqr.ncn9gc2yJOMhWGhb" + }, + { + "_id": "Q5TlvXVEyjer5YIG", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!7kXHNCARsD0nZCqr.Q5TlvXVEyjer5YIG" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 13, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 13, + "value": 39 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:12)", + "foeFactor": 9, + "creatureType": "animal", + "sizeCategory": "normal", + "experiencePoints": 106, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Hai", + "displayName": 20, + "actorLink": false, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "alpha": 1, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": {}, + "randomImg": false, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346252, + "modifiedTime": 1740227862846, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!7kXHNCARsD0nZCqr" +} diff --git a/packs/creatures/Harpyie_s56U2LeRInrje3xh.json b/packs/creatures/Harpyie_s56U2LeRInrje3xh.json new file mode 100644 index 00000000..b8982435 --- /dev/null +++ b/packs/creatures/Harpyie_s56U2LeRInrje3xh.json @@ -0,0 +1,492 @@ +{ + "_id": "s56U2LeRInrje3xh", + "name": "Harpyie", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/harpy-brown.png", + "items": [ + { + "_id": "lwAvXPfZk0RxGnDi", + "name": "Krallenklaue", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.lwAvXPfZk0RxGnDi" + }, + { + "_id": "62o19BMYU8dc4Qwa", + "name": "Federkleid", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.62o19BMYU8dc4Qwa" + }, + { + "_id": "nEwzPUfWSwdHPNIe", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.nEwzPUfWSwdHPNIe" + }, + { + "_id": "mgxKRHjfYd8eRdl4", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.mgxKRHjfYd8eRdl4" + }, + { + "_id": "iJ5vdPZt9tIyY3g4", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.iJ5vdPZt9tIyY3g4" + }, + { + "_id": "6L8whKMrzwGWDTCg", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.6L8whKMrzwGWDTCg" + }, + { + "_id": "GZfpSw5mnT7CLpYH", + "name": "Lockruf", + "type": "spell", + "sort": 800000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.GZfpSw5mnT7CLpYH" + }, + { + "_id": "VXyznv68DT2Guc0A", + "name": "Bezaubern", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charm.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.HMCFkxVzU2b3KkSA" + } + }, + "system": { + "description": "

Kann Gegner mit einem „Lockruf“ bezaubern. Dieser Zauber funktioniert wie der Zauberspruch @Compendium[ds4.spells.wZYElRaDmhqgzUvQ]{Gehorche}. Abklingzeit des Lockrufs: 10 Kampfrunden

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.HMCFkxVzU2b3KkSA", + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.VXyznv68DT2Guc0A" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 8, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 6, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 1, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 20 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:8)", + "foeFactor": 10, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 128, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Harpyie", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/harpy*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347013, + "modifiedTime": 1740227862913, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!s56U2LeRInrje3xh" +} diff --git a/packs/creatures/Hobgoblin_C4xijAwQdhRHz0Cs.json b/packs/creatures/Hobgoblin_C4xijAwQdhRHz0Cs.json new file mode 100644 index 00000000..8ee3f983 --- /dev/null +++ b/packs/creatures/Hobgoblin_C4xijAwQdhRHz0Cs.json @@ -0,0 +1,580 @@ +{ + "_id": "C4xijAwQdhRHz0Cs", + "name": "Hobgoblin", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/hobgoblin-sword-purple.png", + "items": [ + { + "_id": "wTcga48GOVD8cQV3", + "name": "Kettenpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "EkJB0kpYFHRMYSgl", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!actors.items.effects!C4xijAwQdhRHz0Cs.wTcga48GOVD8cQV3.EkJB0kpYFHRMYSgl" + } + ], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.09Hp2c2jgoXx7cV0" + } + }, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 10, + "availability": "village", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.09Hp2c2jgoXx7cV0", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.wTcga48GOVD8cQV3" + }, + { + "_id": "whLRBkMseej6C3IG", + "name": "Metallhelm", + "type": "armor", + "img": "icons/equipment/head/helm-barbute-reinforced.webp", + "effects": [ + { + "_id": "wlQWjU1kXovR5G1J", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "-1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!actors.items.effects!C4xijAwQdhRHz0Cs.whLRBkMseej6C3IG.wlQWjU1kXovR5G1J" + } + ], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.fKhTsMO4YXDYY8GX" + } + }, + "system": { + "description": "

Initiative -1

", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "helmet" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.fKhTsMO4YXDYY8GX", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.whLRBkMseej6C3IG" + }, + { + "_id": "n3SYaxRnVV0nTKtq", + "name": "Holzschild", + "type": "shield", + "img": "icons/equipment/shield/round-wooden-boss-steel-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.J7d2zx4kqKEdMR1j" + } + }, + "system": { + "description": "

Zerbricht bei einem Abwehr-Patzer

", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.J7d2zx4kqKEdMR1j", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.n3SYaxRnVV0nTKtq" + }, + { + "_id": "QXzGnyknBZaJqCIc", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.QXzGnyknBZaJqCIc" + }, + { + "_id": "xAd7jo7Ni2KSl16I", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.xAd7jo7Ni2KSl16I" + }, + { + "_id": "MSuVIzM2MRDSyujQ", + "name": "Langschwert", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" + } + }, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.htmQWmMCQN620KrE", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.MSuVIzM2MRDSyujQ" + }, + { + "_id": "lXtH1PL4nnpzMGkI", + "name": "Kurzbogen", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-leather.webp", + "effects": [ + { + "_id": "zgiIGlRMVCgAzrn7", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!actors.items.effects!C4xijAwQdhRHz0Cs.lXtH1PL4nnpzMGkI.zgiIGlRMVCgAzrn7" + } + ], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.QsnvAep80sSVJToD" + } + }, + "system": { + "description": "

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.QsnvAep80sSVJToD", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.lXtH1PL4nnpzMGkI" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 11, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 3, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 24 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:18", + "foeFactor": 4, + "creatureType": "humanoid", + "sizeCategory": "normal", + "experiencePoints": 71, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Hobgoblin", + "displayName": 20, + "actorLink": false, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "alpha": 1, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": {}, + "randomImg": true, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/hobgoblin-*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346292, + "modifiedTime": 1740227862851, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!C4xijAwQdhRHz0Cs" +} diff --git a/packs/creatures/Hoher_D_mon_LtsbT2DHYKs9Catm.json b/packs/creatures/Hoher_D_mon_LtsbT2DHYKs9Catm.json new file mode 100644 index 00000000..5624094c --- /dev/null +++ b/packs/creatures/Hoher_D_mon_LtsbT2DHYKs9Catm.json @@ -0,0 +1,190 @@ +{ + "_id": "LtsbT2DHYKs9Catm", + "name": "Hoher Dämon", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 7, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 6, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 3, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 20 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 4, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 104, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Hoher Dämon", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346576, + "modifiedTime": 1740227862870, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!LtsbT2DHYKs9Catm" +} diff --git a/packs/creatures/Hund_Qm2toXbf6EVmvRS1.json b/packs/creatures/Hund_Qm2toXbf6EVmvRS1.json new file mode 100644 index 00000000..8041f326 --- /dev/null +++ b/packs/creatures/Hund_Qm2toXbf6EVmvRS1.json @@ -0,0 +1,293 @@ +{ + "_id": "Qm2toXbf6EVmvRS1", + "name": "Hund", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dog-pitbull-2.png", + "items": [ + { + "_id": "j0NbwyhdJPipL7Rl", + "name": "Biss", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Qm2toXbf6EVmvRS1.j0NbwyhdJPipL7Rl" + }, + { + "_id": "PlB4iu4DBqxypeR0", + "name": "Fell", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Qm2toXbf6EVmvRS1.PlB4iu4DBqxypeR0" + }, + { + "_id": "lmc1Llwdx3k697VS", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!Qm2toXbf6EVmvRS1.lmc1Llwdx3k697VS" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 5, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -4, + "value": 11 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 1, + "creatureType": "animal", + "sizeCategory": "small", + "experiencePoints": 31, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Hund", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dog*.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346645, + "modifiedTime": 1740227862876, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Qm2toXbf6EVmvRS1" +} diff --git a/packs/creatures/Hydra_GMUTgcbmahiwgXSj.json b/packs/creatures/Hydra_GMUTgcbmahiwgXSj.json new file mode 100644 index 00000000..66e2a18a --- /dev/null +++ b/packs/creatures/Hydra_GMUTgcbmahiwgXSj.json @@ -0,0 +1,453 @@ +{ + "_id": "GMUTgcbmahiwgXSj", + "name": "Hydra", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/hydra-blue.png", + "items": [ + { + "_id": "TEjCLP10Mjf8XqCl", + "name": "Großer Biss", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.TEjCLP10Mjf8XqCl" + }, + { + "_id": "jcgmsC6XoKcSpu6a", + "name": "Schuppenpanzer", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.jcgmsC6XoKcSpu6a" + }, + { + "_id": "jtnlL78QKAyrNEey", + "name": "Mehrere Angriffe (+5)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit seinen insgesamt sechs Köpfen 5 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.jtnlL78QKAyrNEey" + }, + { + "_id": "dnGDZ0R98VlEskVv", + "name": "Mehrere Angriffglieder (+5)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit insgesamt 6 Köpfen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.dnGDZ0R98VlEskVv" + }, + { + "_id": "KwCXBwhluHD0uHIW", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.KwCXBwhluHD0uHIW" + }, + { + "_id": "CIzNpB4GXHkdFsAI", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.CIzNpB4GXHkdFsAI" + }, + { + "_id": "HOykiW9ZmatUSUKm", + "name": "Regeneration", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", + "effects": [], + "folder": null, + "system": { + "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations-Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.HOykiW9ZmatUSUKm" + }, + { + "_id": "YvT74RD5F3M4DMEx", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.YvT74RD5F3M4DMEx" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 14, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 60, + "value": 90 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 4 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:20)", + "foeFactor": 23, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 246, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Hydra", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/hydra*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346375, + "modifiedTime": 1740227862860, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!GMUTgcbmahiwgXSj" +} diff --git a/packs/creatures/Jungdrache__Blau__nDRdljcZzkonbU0s.json b/packs/creatures/Jungdrache__Blau__nDRdljcZzkonbU0s.json new file mode 100644 index 00000000..3cce7a06 --- /dev/null +++ b/packs/creatures/Jungdrache__Blau__nDRdljcZzkonbU0s.json @@ -0,0 +1,255 @@ +{ + "_id": "nDRdljcZzkonbU0s", + "name": "Jungdrache (Blau)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Blitz-Odem", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!nDRdljcZzkonbU0s.yjkoipelFXEzcy1x" + }, + { + "_id": "bH4dBG5AeJ442465", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!nDRdljcZzkonbU0s.bH4dBG5AeJ442465" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346901, + "modifiedTime": 1740227862906, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!nDRdljcZzkonbU0s" +} diff --git a/packs/creatures/Jungdrache__Bronze__clsDFbLFEIbh6Mg4.json b/packs/creatures/Jungdrache__Bronze__clsDFbLFEIbh6Mg4.json new file mode 100644 index 00000000..a4428cb2 --- /dev/null +++ b/packs/creatures/Jungdrache__Bronze__clsDFbLFEIbh6Mg4.json @@ -0,0 +1,190 @@ +{ + "_id": "clsDFbLFEIbh6Mg4", + "name": "Jungdrache (Bronze)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346812, + "modifiedTime": 1740227862894, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!clsDFbLFEIbh6Mg4" +} diff --git a/packs/creatures/Jungdrache__Gelb__apBf4qnMODBmEWHU.json b/packs/creatures/Jungdrache__Gelb__apBf4qnMODBmEWHU.json new file mode 100644 index 00000000..09237540 --- /dev/null +++ b/packs/creatures/Jungdrache__Gelb__apBf4qnMODBmEWHU.json @@ -0,0 +1,223 @@ +{ + "_id": "apBf4qnMODBmEWHU", + "name": "Jungdrache (Gelb)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "items": [ + { + "_id": "d4qTXCVuiStZW2tY", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!apBf4qnMODBmEWHU.d4qTXCVuiStZW2tY" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346771, + "modifiedTime": 1740227862889, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!apBf4qnMODBmEWHU" +} diff --git a/packs/creatures/Jungdrache__Gold__RWNocIHuXIWwUwJu.json b/packs/creatures/Jungdrache__Gold__RWNocIHuXIWwUwJu.json new file mode 100644 index 00000000..f85b9bcc --- /dev/null +++ b/packs/creatures/Jungdrache__Gold__RWNocIHuXIWwUwJu.json @@ -0,0 +1,190 @@ +{ + "_id": "RWNocIHuXIWwUwJu", + "name": "Jungdrache (Gold)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346651, + "modifiedTime": 1740227862878, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!RWNocIHuXIWwUwJu" +} diff --git a/packs/creatures/Jungdrache__Gr_n__vsIywRHMnJM7u4ts.json b/packs/creatures/Jungdrache__Gr_n__vsIywRHMnJM7u4ts.json new file mode 100644 index 00000000..a4fb1ecf --- /dev/null +++ b/packs/creatures/Jungdrache__Gr_n__vsIywRHMnJM7u4ts.json @@ -0,0 +1,287 @@ +{ + "_id": "vsIywRHMnJM7u4ts", + "name": "Jungdrache (Grün)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Giftgas-Odem", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!vsIywRHMnJM7u4ts.yjkoipelFXEzcy1x" + }, + { + "_id": "tWwaC91MGIR4k3Uy", + "name": "Angst (2)", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 20 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X", + "duplicateSource": null + }, + "_key": "!actors.items!vsIywRHMnJM7u4ts.tWwaC91MGIR4k3Uy" + }, + { + "_id": "CdZkMCsLB0EwUdqv", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!vsIywRHMnJM7u4ts.CdZkMCsLB0EwUdqv" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347174, + "modifiedTime": 1740227862920, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!vsIywRHMnJM7u4ts" +} diff --git a/packs/creatures/Jungdrache__Rot__htgryhd630WQgeD8.json b/packs/creatures/Jungdrache__Rot__htgryhd630WQgeD8.json new file mode 100644 index 00000000..6c4e31d7 --- /dev/null +++ b/packs/creatures/Jungdrache__Rot__htgryhd630WQgeD8.json @@ -0,0 +1,255 @@ +{ + "_id": "htgryhd630WQgeD8", + "name": "Jungdrache (Rot)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Feuer-Odem", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!htgryhd630WQgeD8.yjkoipelFXEzcy1x" + }, + { + "_id": "HFksDdMTR1oh3gDo", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!htgryhd630WQgeD8.HFksDdMTR1oh3gDo" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346846, + "modifiedTime": 1740227862898, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!htgryhd630WQgeD8" +} diff --git a/packs/creatures/Jungdrache__Schwarz__A4zxgFGkMQpm67TR.json b/packs/creatures/Jungdrache__Schwarz__A4zxgFGkMQpm67TR.json new file mode 100644 index 00000000..c02625f3 --- /dev/null +++ b/packs/creatures/Jungdrache__Schwarz__A4zxgFGkMQpm67TR.json @@ -0,0 +1,223 @@ +{ + "_id": "A4zxgFGkMQpm67TR", + "name": "Jungdrache (Schwarz)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "items": [ + { + "_id": "TVxn2FjSGirdC90w", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!A4zxgFGkMQpm67TR.TVxn2FjSGirdC90w" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346280, + "modifiedTime": 1740227862849, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!A4zxgFGkMQpm67TR" +} diff --git a/packs/creatures/Jungdrache__Silber__3iMmLEmB0NEpyFGd.json b/packs/creatures/Jungdrache__Silber__3iMmLEmB0NEpyFGd.json new file mode 100644 index 00000000..b736f730 --- /dev/null +++ b/packs/creatures/Jungdrache__Silber__3iMmLEmB0NEpyFGd.json @@ -0,0 +1,190 @@ +{ + "_id": "3iMmLEmB0NEpyFGd", + "name": "Jungdrache (Silber)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346186, + "modifiedTime": 1740227862841, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!3iMmLEmB0NEpyFGd" +} diff --git a/packs/creatures/Jungdrache__Weiss__raKKehH8QctnDtMM.json b/packs/creatures/Jungdrache__Weiss__raKKehH8QctnDtMM.json new file mode 100644 index 00000000..bdace5b5 --- /dev/null +++ b/packs/creatures/Jungdrache__Weiss__raKKehH8QctnDtMM.json @@ -0,0 +1,223 @@ +{ + "_id": "raKKehH8QctnDtMM", + "name": "Jungdrache (Weiss)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "items": [ + { + "_id": "frBW7LCCpTlwh7hr", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!raKKehH8QctnDtMM.frBW7LCCpTlwh7hr" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346999, + "modifiedTime": 1740227862912, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!raKKehH8QctnDtMM" +} diff --git a/packs/creatures/Kampfd_mon_LgtcLrKtCa496ih6.json b/packs/creatures/Kampfd_mon_LgtcLrKtCa496ih6.json new file mode 100644 index 00000000..0702e017 --- /dev/null +++ b/packs/creatures/Kampfd_mon_LgtcLrKtCa496ih6.json @@ -0,0 +1,190 @@ +{ + "_id": "LgtcLrKtCa496ih6", + "name": "Kampfdämon", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 8, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 4, + "mod": 0 + }, + "aura": { + "base": 4, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 23, + "value": 46 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 1 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 8, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 152, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Kampfdämon", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346560, + "modifiedTime": 1740227862869, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!LgtcLrKtCa496ih6" +} diff --git a/packs/creatures/Keiler_FxGhbznQbwd0jRUT.json b/packs/creatures/Keiler_FxGhbznQbwd0jRUT.json new file mode 100644 index 00000000..5988aed7 --- /dev/null +++ b/packs/creatures/Keiler_FxGhbznQbwd0jRUT.json @@ -0,0 +1,325 @@ +{ + "_id": "FxGhbznQbwd0jRUT", + "name": "Keiler", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/boar-brown-1.png", + "items": [ + { + "_id": "wQm8AMxYF0NKZhQE", + "name": "Hauer", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!FxGhbznQbwd0jRUT.wQm8AMxYF0NKZhQE" + }, + { + "_id": "DDaq3xgZrGuEl4Dc", + "name": "Dicke Borstenhaut", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!FxGhbznQbwd0jRUT.DDaq3xgZrGuEl4Dc" + }, + { + "_id": "yru5VWx93wWmOXZA", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!FxGhbznQbwd0jRUT.yru5VWx93wWmOXZA" + }, + { + "_id": "DyCGJ2kxHV5QYgWK", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!FxGhbznQbwd0jRUT.DyCGJ2kxHV5QYgWK" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 13, + "value": 38 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:10)", + "foeFactor": 6, + "creatureType": "animal", + "sizeCategory": "normal", + "experiencePoints": 79, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Keiler", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/boar*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346363, + "modifiedTime": 1740227862859, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!FxGhbznQbwd0jRUT" +} diff --git a/packs/creatures/Kobold_ojzkDbyYSlpHtGHq.json b/packs/creatures/Kobold_ojzkDbyYSlpHtGHq.json new file mode 100644 index 00000000..0549b907 --- /dev/null +++ b/packs/creatures/Kobold_ojzkDbyYSlpHtGHq.json @@ -0,0 +1,226 @@ +{ + "_id": "ojzkDbyYSlpHtGHq", + "name": "Kobold", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/kobold-green.png", + "items": [ + { + "_id": "hnuIJBq2btoSK88F", + "name": "Kleiner Knüppel", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!ojzkDbyYSlpHtGHq.hnuIJBq2btoSK88F" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 3, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 2, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 1, + "mod": 0 + }, + "constitution": { + "base": 1, + "mod": 0 + }, + "agility": { + "base": 1, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -7, + "value": 7 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1B:8)", + "foeFactor": 1, + "creatureType": "humanoid", + "sizeCategory": "small", + "experiencePoints": 25, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Kobold", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/kobold*.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346953, + "modifiedTime": 1740227862909, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!ojzkDbyYSlpHtGHq" +} diff --git a/packs/creatures/Kriegsd_mon_JGpIh3oCK1Vx3NnZ.json b/packs/creatures/Kriegsd_mon_JGpIh3oCK1Vx3NnZ.json new file mode 100644 index 00000000..1f30f523 --- /dev/null +++ b/packs/creatures/Kriegsd_mon_JGpIh3oCK1Vx3NnZ.json @@ -0,0 +1,190 @@ +{ + "_id": "JGpIh3oCK1Vx3NnZ", + "name": "Kriegsdämon", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 15, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 7, + "mod": 0 + }, + "constitution": { + "base": 7, + "mod": 0 + }, + "agility": { + "base": 5, + "mod": 0 + }, + "dexterity": { + "base": 5, + "mod": 0 + }, + "intellect": { + "base": 5, + "mod": 0 + }, + "aura": { + "base": 5, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 128, + "value": 160 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 23, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 297, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Kriegsdämon", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346506, + "modifiedTime": 1740227862867, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!JGpIh3oCK1Vx3NnZ" +} diff --git a/packs/creatures/Kriegselefant_BIyY1wlxWtJ5FRQJ.json b/packs/creatures/Kriegselefant_BIyY1wlxWtJ5FRQJ.json new file mode 100644 index 00000000..dae776a2 --- /dev/null +++ b/packs/creatures/Kriegselefant_BIyY1wlxWtJ5FRQJ.json @@ -0,0 +1,325 @@ +{ + "_id": "BIyY1wlxWtJ5FRQJ", + "name": "Kriegselefant", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "5qBHfTnJAXibKNWs", + "name": "Rammen", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.5qBHfTnJAXibKNWs" + }, + { + "_id": "OehvVDNjDg4xbsW7", + "name": "Dickhäuter", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.OehvVDNjDg4xbsW7" + }, + { + "_id": "QwtwJGcSVFimiHM0", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.QwtwJGcSVFimiHM0" + }, + { + "_id": "iVORjCynScc6kVsS", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.iVORjCynScc6kVsS" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 62, + "value": 93 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2.5 + }, + "meleeAttack": { + "mod": -1 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:20)", + "foeFactor": 16, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 142, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Kriegselefant", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346286, + "modifiedTime": 1740227862850, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!BIyY1wlxWtJ5FRQJ" +} diff --git a/packs/creatures/Lebende_R_stung_s7yuHMW75JDcFQYB.json b/packs/creatures/Lebende_R_stung_s7yuHMW75JDcFQYB.json new file mode 100644 index 00000000..bf2a7641 --- /dev/null +++ b/packs/creatures/Lebende_R_stung_s7yuHMW75JDcFQYB.json @@ -0,0 +1,329 @@ +{ + "_id": "s7yuHMW75JDcFQYB", + "name": "Lebende Rüstung", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "c9cGRVHyd3IPSSbX", + "name": "Langschwert", + "type": "weapon", + "sort": 100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" + } + }, + "img": "icons/weapons/swords/sword-guard-blue.webp", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.htmQWmMCQN620KrE", + "duplicateSource": null + }, + "_key": "!actors.items!s7yuHMW75JDcFQYB.c9cGRVHyd3IPSSbX" + }, + { + "_id": "5t0R0cwzApnRQpSR", + "name": "Metallwesen", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 5, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!s7yuHMW75JDcFQYB.5t0R0cwzApnRQpSR" + }, + { + "_id": "JxIUfRCSTQ3e5BFg", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!s7yuHMW75JDcFQYB.JxIUfRCSTQ3e5BFg" + }, + { + "_id": "SoGfBCWyVZsQGBLk", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!s7yuHMW75JDcFQYB.SoGfBCWyVZsQGBLk" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 24 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 8, + "creatureType": "construct", + "sizeCategory": "normal", + "experiencePoints": 72, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Lebende Rüstung", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347048, + "modifiedTime": 1740227862914, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!s7yuHMW75JDcFQYB" +} diff --git a/packs/creatures/Leichnam_oVKL6zJ2kYMmBuYx.json b/packs/creatures/Leichnam_oVKL6zJ2kYMmBuYx.json new file mode 100644 index 00000000..65534f57 --- /dev/null +++ b/packs/creatures/Leichnam_oVKL6zJ2kYMmBuYx.json @@ -0,0 +1,2027 @@ +{ + "_id": "oVKL6zJ2kYMmBuYx", + "name": "Leichnam", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/lich.png", + "items": [ + { + "_id": "J2eP8hBIWtgayfhH", + "name": "Angst (1)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.J2eP8hBIWtgayfhH" + }, + { + "_id": "sNIMYcSm0y83hby7", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.sNIMYcSm0y83hby7" + }, + { + "_id": "exyyjDtEIdHRcx4n", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.exyyjDtEIdHRcx4n" + }, + { + "_id": "L6i191M3m9QXN9aJ", + "name": "Totenkraft", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", + "effects": [ + { + "_id": "xw1OyyTdDwkNe2jC", + "changes": [ + { + "key": "system.traits.strength.total", + "mode": 2, + "value": "@system.attributes.mind.total + @system.traits.aura.total", + "priority": null + }, + { + "key": "system.traits.constitution.total", + "mode": 2, + "value": "@system.attributes.mind.total + @system.traits.aura.total", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "GEI + AU als Bonus auf Stärke und Härte", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!actors.items.effects!oVKL6zJ2kYMmBuYx.L6i191M3m9QXN9aJ.xw1OyyTdDwkNe2jC" + } + ], + "folder": null, + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" + } + }, + "system": { + "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.L6i191M3m9QXN9aJ" + }, + { + "_id": "Yv7u9FcT21lq7xW8", + "name": "Robe +3", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-purple.webp", + "effects": [ + { + "_id": "Qpy3XcHOokbU7ZaS", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "3", + "mode": 2, + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "origin": null, + "tint": "#ffffff", + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": null, + "type": "base", + "system": {}, + "sort": 0, + "_key": "!actors.items.effects!oVKL6zJ2kYMmBuYx.Yv7u9FcT21lq7xW8.Qpy3XcHOokbU7ZaS" + } + ], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.cFMcSg7PFIcQvf0B" + } + }, + "system": { + "description": "", + "quantity": 1, + "price": 3251, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.cFMcSg7PFIcQvf0B", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.Yv7u9FcT21lq7xW8" + }, + { + "_id": "quDuDAGeMVUvF3WD", + "name": "Arkanes Schwert", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sword-wound.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.VjvrapwDmBvGYmfj" + } + }, + "system": { + "description": "

Ein Schwert aus hellem (oder je nach Belieben auch dunklem) Licht erscheint innerhalb eines Radius von VE in Metern um den Zauberwirker herum.

\n

Innerhalb dieses Wirkungsbereiches kämpft es völlig selbstständig, hört jedoch auf gedankliche Kampfkommandos seines Beschwöreres wie „Greif den großen Troll an“ oder „Schütze mich“.

\n

Bewegt sich der Zauberwirker, wandert der Wirkungsbereich des Schwertes mit ihm mit, so dass die magische Klinge niemals mehr als VE in Metern von ihm getrennt sein kann.

\n

Das Schwert löst sich in seine arkanen Bestandteile auf, sobald seine (nicht heilbaren) LK auf Null oder niedriger sinken bzw. die Zauberdauer verstrichen ist.

\n

Sämtliche Kampfwerte des Schwertes entsprechen der Stufe des Zauberwirkers +10.

\n

Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Zauberwirkers entspricht.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.VjvrapwDmBvGYmfj", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.quDuDAGeMVUvF3WD" + }, + { + "_id": "NeFjvRQWZSKtxAMm", + "name": "Ebenentor", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/magic-portal.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.MKlGqhjQa3GZu4gq" + } + }, + "system": { + "description": "

Öffnet ein Tor zu einer anderen Existenzebene, die der Zauberwirker namentlich nennen muss. Das Tor schließt sich, sobald VE/2 Wesen es durchschritten haben, oder die Spruchdauer abgelaufen ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -8, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": 18, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.MKlGqhjQa3GZu4gq", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.NeFjvRQWZSKtxAMm" + }, + { + "_id": "1q93yorTXMMaRAcg", + "name": "Einschläfern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0" + } + }, + "system": { + "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u. ä. erwachen kann.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+VE)/2 des jeweiligen Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.1q93yorTXMMaRAcg" + }, + { + "_id": "29SYRu3tP8sSILyX", + "name": "Flammeninferno", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-wave.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.7ybmodIkWDP1z1D6" + } + }, + "system": { + "description": "

Eine kreisrunde Fläche mit einem Radius von VE in Metern geht in Flammen auf. Jeder in dem Inferno erhält pro Kampfrunde nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 5, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 15 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.7ybmodIkWDP1z1D6", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.29SYRu3tP8sSILyX" + }, + { + "_id": "wRp2U7ZSNdZndBmq", + "name": "Frostschock", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/frozen-body.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.iH2NtsJtMfG0ZAU3" + } + }, + "system": { + "description": "

Ein Eisstrahl schießt aus den Händen des Zauberwirkers. Gegen den Schaden dieses frostigen Zauber ist keine Abwehr zulässig.

\n

Zudem wird das Ziel magisch eingefroren, bis VE Kampfrunden verstrichen sind oder es Schaden erhält.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": true, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 12, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.iH2NtsJtMfG0ZAU3", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.wRp2U7ZSNdZndBmq" + }, + { + "_id": "3ybAKe4uHnD5q5zD", + "name": "Gasgestalt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/steam.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.tZJoj1PGrRGe9eMV" + } + }, + "system": { + "description": "

Das Ziel – samt seiner getragenen Ausrüstung – wird gasförmig und kann durch jede noch so kleine Öffnung gleiten. Das Ziel kann jederzeit die Wirkung des Zaubers als freie Aktion beenden. In Gasform wird der Laufen-Wert vervierfacht, der Charakter kann seine Umgebung weiterhin wahrnehmen. In Gastgestalt ist es allerdings nicht möglich, zu zaubern, zu sprechen, anzugreifen oder in andere Wesen einzudringen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 5", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 18 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.tZJoj1PGrRGe9eMV", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.3ybAKe4uHnD5q5zD" + }, + { + "_id": "tYncs86pwaeg5XAl", + "name": "Gehorche", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ" + } + }, + "system": { + "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 12, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.tYncs86pwaeg5XAl" + }, + { + "_id": "MaTZSyGMQDIMXhLe", + "name": "Kontrollieren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/cathelineau/fomorian.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.9gc1CF70165NXymH" + } + }, + "system": { + "description": "

Bei Erfolg bringt der Zauberwirker eine maximale Anzahl untoter Ziele gleich seiner Stufe unter Kontrolle, selbst wenn diese einem anderen Zauberwirker unterstehen.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche durch den Zauber betroffen sind. Alternativ kann auch ein einzelner Untoter als Ziel bestimmt werden.

\n

Kontrollierte Untote unterstehen dem Zauberwirker, führen bedingungslos seine Befehle aus und können nur auf Wunsch des Zauberwirkers wieder ihren Frieden finden, oder wenn dieser stirbt.

\n

Ein Zauberwirker kann nicht mehr Untote gleichzeitig kontrollieren, als seine eigene Stufe beträgt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis erlöst", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 8, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.9gc1CF70165NXymH", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.MaTZSyGMQDIMXhLe" + }, + { + "_id": "bu4UNbRP2WGwKFLg", + "name": "Magisches Schloss", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/padlock.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.dzYAc9ti7ghhkyiX" + } + }, + "system": { + "description": "

Dieser Zauber verschließt auf magische Weise eine Klappe, Truhe, Tür oder ähnliche Öffnung.

\n

Das Probenergebnis stellt die Erschwernis dar, um dieses Schloss zu öffnen (ob nun mit einem Dietrich, roher Gewalt oder Magie), nur der Zauberwirker selbst kann es ohne Probleme öffnen.

\n

Der Zauber kann auch auf ein mechanisches Schloss gesprochen werden, um dessen Schlosswert (SW) zu verstärken.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis Schloss geöffnet", + "unit": "custom" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 3, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.dzYAc9ti7ghhkyiX", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.bu4UNbRP2WGwKFLg" + }, + { + "_id": "WFfjqz7dfZrxNdOn", + "name": "Netz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/spider-web.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.73bT47FtQgPp9Snq" + } + }, + "system": { + "description": "

Ein Netz aus klebriger Astralmasse mit einem Radius von VE/2 in Metern erscheint.

\n

Vom Netz getroffene Wesen, welche keine Abwehr dagegen würfeln dürfen, halbieren für die Dauer des Zaubers Initiative, Laufen und Schlagen.

\n

Der Zauber wirkt nicht gegen Wesen, die 2+ Größenkategorien (DS4 S. 104) größer sind.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(AGI+ST)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 4, + "wizard": 9, + "sorcerer": 9 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.73bT47FtQgPp9Snq", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.WFfjqz7dfZrxNdOn" + }, + { + "_id": "h4Xf5AZuuDR1HwdD", + "name": "Schatten", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/shadow-follower.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.5mF59XCsZffF0cSp" + } + }, + "system": { + "description": "

Dunkle Schatten umhüllen das Ziel (welches keine Abwehr dagegen würfeln darf), wodurch es -8 auf alle Handlungen hat, bei denen es besser sehen können sollte. Augenlosen Untoten, wie beispielsweise @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skeletten}, aber auch blinden Lebewesen, kann der Zauber nichts anhaben.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(AGI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "rounds" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.5mF59XCsZffF0cSp", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.h4Xf5AZuuDR1HwdD" + }, + { + "_id": "sZicJQ2tu0pHKLT3", + "name": "Schatten erwecken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/two-shadows.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.dPGm1Ji2U0fJxnT3" + } + }, + "system": { + "description": "

Der Schwarzmagier kann die Seelen von einer maximalen Anzahl von Toten im Wirkungsradius gleich seiner eigenen Stufe verderben und in Form tödlicher @Compendium[ds4.creatures.T9YRYe0vnR4Qg4UM]{Schatten} (DS4 S. 121) zu gequältem Unleben erwecken. Die Schatten benötigen drei Kampfrunden, um sich zu bilden, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 13 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.dPGm1Ji2U0fJxnT3", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.sZicJQ2tu0pHKLT3" + }, + { + "_id": "80m8uuYxkvkMY8O6", + "name": "Schattenlanze", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/spear-hook.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.b5RFJWPaYbpXNpsv" + } + }, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.tPFiElqQuvih76gd]{Schattenpfeil}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 5, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.b5RFJWPaYbpXNpsv", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.80m8uuYxkvkMY8O6" + }, + { + "_id": "eVZKdojeGbmnlO7r", + "name": "Springen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.L6NrH3AEmS2I3NWG" + } + }, + "system": { + "description": "

Der Zauberwirker springt augenblicklich bis zu Probenergebnis/2 Meter weit und landet dabei wieder sicher auf seinen Beinen. Alternativ kann man auch hoch oder runter springen, beispielsweise um einen Balkon zu erreichen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 5, + "wizard": 2, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.L6NrH3AEmS2I3NWG", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.eVZKdojeGbmnlO7r" + }, + { + "_id": "TyemqVxXHyajaeQ0", + "name": "Stolpern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/tripwire.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.KIyVOdiXZnXJIAh6" + } + }, + "system": { + "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, stürzt augenblicklich zu Boden.

Misslingt ihm außerdem eine Probe auf AGI+GE, lässt er alles Gehaltene fallen.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(AGI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 4, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.KIyVOdiXZnXJIAh6", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.TyemqVxXHyajaeQ0" + }, + { + "_id": "8yzQEtT02oPB3gQT", + "name": "Trugbild", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/mirror-mirror.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.eMilydZd4gqDUsff" + } + }, + "system": { + "description": "

Dieser Zauber erschafft eine rein optische, unbewegliche Illusion, deren Ausmaße maximal VE/2 Kubikmeter betragen können. Die Illusion ist mit einer erfolgreichen Bemerken-Probe (DS4 S. 89) – abzüglich des halbierten Probenergebnisses der Trugbild Zaubern-Probe – durchschaubar.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "hours" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.eMilydZd4gqDUsff", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.8yzQEtT02oPB3gQT" + }, + { + "_id": "WcTIZrzNl287ClsD", + "name": "Unsichtbarkeit", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw" + } + }, + "system": { + "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 20, + "wizard": 12, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.WcTIZrzNl287ClsD" + }, + { + "_id": "WgItN1MKxhGmbISB", + "name": "Verwirren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.niQVUxJHzdMDlwXc" + } + }, + "system": { + "description": "

Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte…
1–5… greift die Charaktere an
6–10… läuft verwirrt in eine zufällige Richtung
11–15… steht verwirrt herum
16+… greift die eigenen Verbündeten an
", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 8, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.niQVUxJHzdMDlwXc", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.WgItN1MKxhGmbISB" + }, + { + "_id": "sNZcw4ywoelqwcFi", + "name": "Wandöffnung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/hole.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.7foZzrxZuX0dCh3C" + } + }, + "system": { + "description": "

Der Zauberwirker öffnet ein kreisrundes Loch von 1 m Durchmesser in einer bis zu VE x 10 cm dicken, nichtmagischen Steinwand.

\n

Nach Ablauf des Zaubers verschwindet das Loch ohne Spuren zu hinterlassen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": true, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 14 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.7foZzrxZuX0dCh3C", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.sNZcw4ywoelqwcFi" + }, + { + "_id": "m0sMPFGCoDjzT9jz", + "name": "Wolke des Todes", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/skull-mask.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.xs7tx8K3ZdQ76u0b" + } + }, + "system": { + "description": "

Eine schwarze, qualmende Wolke des Todes mit einem Radius von maximal VE in Metern entsteht.

\n

Zwar ist die Wolke nicht undurchsichtig, dennoch werden Angriffe gegen Ziele darin um 2 erschwert, gleichsam erhalten alle innerhalb der Wolke -2 auf alle Proben, bei denen man besser sehen können sollte.

\n

Jeder Charakter innerhalb der Wolke erleidet pro Runde automatisch einen nicht abwehrbaren Punkt Schaden.

\n

Sollte der Schwarzmagier über das Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} verfügen, wird sein Talentrang auf den nicht abwehrbaren Schaden, den jedes Opfer pro Kampfrunde erleidet, addiert.

\n

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": true, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 13 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.xs7tx8K3ZdQ76u0b", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.m0sMPFGCoDjzT9jz" + }, + { + "_id": "ozbaYB7x9IHkkxz2", + "name": "Zeitstop", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/time-trap.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.BGnY1p1qZXwpzXFA" + } + }, + "system": { + "description": "

Der Zauberwirker hält die Zeit an, bis die Zauberdauer endet oder er Schaden verursacht bzw. selber erleidet.

Andere Objekte und Lebewesen können nicht bewegt werden – sie sind starr in der Zeit eingefroren.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -5, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 20 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.BGnY1p1qZXwpzXFA", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.ozbaYB7x9IHkkxz2" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 7, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 9, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 8, + "mod": 0 + }, + "aura": { + "base": 8, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 1, + "value": 39 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW #(A:20)x10, #10M:20", + "foeFactor": 26, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 299, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Leichnam", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/lich.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346928, + "modifiedTime": 1740227862908, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!oVKL6zJ2kYMmBuYx" +} diff --git a/packs/creatures/Luftelementar_III_DNbOkqUg7jitTTbw.json b/packs/creatures/Luftelementar_III_DNbOkqUg7jitTTbw.json new file mode 100644 index 00000000..7c65295a --- /dev/null +++ b/packs/creatures/Luftelementar_III_DNbOkqUg7jitTTbw.json @@ -0,0 +1,190 @@ +{ + "_id": "DNbOkqUg7jitTTbw", + "name": "Luftelementar III", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 15, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 7, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 32, + "value": 64 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 16, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 143, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Luftelementar III", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346310, + "modifiedTime": 1740227862853, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!DNbOkqUg7jitTTbw" +} diff --git a/packs/creatures/Luftelementar_II_wYVw1a5UjPS09YxS.json b/packs/creatures/Luftelementar_II_wYVw1a5UjPS09YxS.json new file mode 100644 index 00000000..578e3651 --- /dev/null +++ b/packs/creatures/Luftelementar_II_wYVw1a5UjPS09YxS.json @@ -0,0 +1,325 @@ +{ + "_id": "wYVw1a5UjPS09YxS", + "name": "Luftelementar II", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "PL4rUPVh5MRMW796", + "name": "Luftstoß", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "

-1 WB/2 m

", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "meleeRanged", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wYVw1a5UjPS09YxS.PL4rUPVh5MRMW796" + }, + { + "_id": "ghW7FO5d2do95peV", + "name": "Keine feste Gestalt", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wYVw1a5UjPS09YxS.ghW7FO5d2do95peV" + }, + { + "_id": "wqzMhcBGP8qbClRW", + "name": "Anfällig (Erde)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.mAWyVCfTFH6JiEIu" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "system": { + "description": "

Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.mAWyVCfTFH6JiEIu", + "duplicateSource": null + }, + "_key": "!actors.items!wYVw1a5UjPS09YxS.wqzMhcBGP8qbClRW" + }, + { + "_id": "3yeOHhXD8iJrtRJL", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!wYVw1a5UjPS09YxS.3yeOHhXD8iJrtRJL" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 25 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 9, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 92, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Luftelementar II", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347220, + "modifiedTime": 1740227862922, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!wYVw1a5UjPS09YxS" +} diff --git a/packs/creatures/Luftelementar_I_CIzMY691MK016h4E.json b/packs/creatures/Luftelementar_I_CIzMY691MK016h4E.json new file mode 100644 index 00000000..a5d1cf5c --- /dev/null +++ b/packs/creatures/Luftelementar_I_CIzMY691MK016h4E.json @@ -0,0 +1,190 @@ +{ + "_id": "CIzMY691MK016h4E", + "name": "Luftelementar I", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 6, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -9, + "value": 10 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 4, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 68, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Luftelementar I", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346301, + "modifiedTime": 1740227862852, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!CIzMY691MK016h4E" +} diff --git a/packs/creatures/Medusa_F3zJ4xbHwN9syuK8.json b/packs/creatures/Medusa_F3zJ4xbHwN9syuK8.json new file mode 100644 index 00000000..789b7255 --- /dev/null +++ b/packs/creatures/Medusa_F3zJ4xbHwN9syuK8.json @@ -0,0 +1,424 @@ +{ + "_id": "F3zJ4xbHwN9syuK8", + "name": "Medusa", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/medusa-pale.png", + "items": [ + { + "_id": "08rqhbd0eadzrJxS", + "name": "Klauen", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.08rqhbd0eadzrJxS" + }, + { + "_id": "YL8uGdXD9QX45OvA", + "name": "Schlangen", + "type": "weapon", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.YL8uGdXD9QX45OvA" + }, + { + "_id": "3Gxud5Mn5gy97Qie", + "name": "Schuppen", + "type": "armor", + "sort": 300000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.3Gxud5Mn5gy97Qie" + }, + { + "_id": "MuXvP2TjwvevxLpo", + "name": "Blickangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97", + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.MuXvP2TjwvevxLpo" + }, + { + "_id": "RhdH7ESwq8ukGvTy", + "name": "Mehrere Angriffe (+5)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Von den zahlreichen Geschwindigkeit an Wänden und Decken aktionsfrei Schlangen auf ihrem Kopf können jeweils 5 in jeder Runde klettern. Kann auf Gegner herabfallen, wobei Schlagen um Nahkampfgegner angreifen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg", + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.RhdH7ESwq8ukGvTy" + }, + { + "_id": "CTAZdf7uuEQ4sWA9", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.CTAZdf7uuEQ4sWA9" + }, + { + "_id": "NEEOtiJGhOpZ7RuW", + "name": "Versteinern", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber Allheilung aufgehoben werden.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe", + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.NEEOtiJGhOpZ7RuW" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 11, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 12, + "value": 36 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW A:18), BW #5A:20, #5M:20", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 205, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Medusa", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/medusa*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346341, + "modifiedTime": 1740227862856, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!F3zJ4xbHwN9syuK8" +} diff --git a/packs/creatures/Minotaurus_95N3CQpgVqg4zz0k.json b/packs/creatures/Minotaurus_95N3CQpgVqg4zz0k.json new file mode 100644 index 00000000..c4f4f929 --- /dev/null +++ b/packs/creatures/Minotaurus_95N3CQpgVqg4zz0k.json @@ -0,0 +1,395 @@ +{ + "_id": "95N3CQpgVqg4zz0k", + "name": "Minotaurus", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/minotaur-brown.png", + "items": [ + { + "_id": "WnNygCJUgl9nJVDV", + "name": "Massive Keule", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.WnNygCJUgl9nJVDV" + }, + { + "_id": "hZvwSk1wun8Qjlmk", + "name": "Horn", + "type": "weapon", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.hZvwSk1wun8Qjlmk" + }, + { + "_id": "CES4HTOhBcNY0c6G", + "name": "Huf", + "type": "weapon", + "sort": 300000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.CES4HTOhBcNY0c6G" + }, + { + "_id": "jhC7DbwCOazDTTVU", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.jhC7DbwCOazDTTVU" + }, + { + "_id": "mOcmV58FSVafekAU", + "name": "Zerstampfen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.mOcmV58FSVafekAU" + }, + { + "_id": "gPsGJGaDRosWvEEL", + "name": "Fell", + "type": "armor", + "sort": 600000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.gPsGJGaDRosWvEEL" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 14, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 4, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 1, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 1, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 27, + "value": 54 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 1 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:16), BW 2B:20", + "foeFactor": 12, + "creatureType": "humanoid", + "sizeCategory": "large", + "experiencePoints": 138, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Minotaurus", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/minotaur*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346270, + "modifiedTime": 1740227862848, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!95N3CQpgVqg4zz0k" +} diff --git a/packs/creatures/Monsterspinne_4276kgAddflo3bwN.json b/packs/creatures/Monsterspinne_4276kgAddflo3bwN.json new file mode 100644 index 00000000..f30f9f65 --- /dev/null +++ b/packs/creatures/Monsterspinne_4276kgAddflo3bwN.json @@ -0,0 +1,392 @@ +{ + "_id": "4276kgAddflo3bwN", + "name": "Monsterspinne", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/monster-spider.png", + "items": [ + { + "_id": "5KumsWj49saU3R8P", + "name": "Spinnenbiss", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.5KumsWj49saU3R8P" + }, + { + "_id": "nU2FCLS66oVDnMkw", + "name": "Netzflüssigkeit", + "type": "weapon", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.nU2FCLS66oVDnMkw" + }, + { + "_id": "b80BR5n1f6WvGavG", + "name": "Dicke Spinnenhaut", + "type": "armor", + "sort": 300000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.b80BR5n1f6WvGavG" + }, + { + "_id": "v7zlqw9oygaGg5RF", + "name": "Kletterläufer", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N", + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.v7zlqw9oygaGg5RF" + }, + { + "_id": "vNnnWKNHFzvSlquf", + "name": "Lähmungseffekt", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5maJ8tHAVZCxHGW6" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/paralysis-effect.png", + "effects": [], + "folder": null, + "system": { + "description": "

Netzflüssigkeit (nur alle 10 Kampfrunden einsetzbar) macht Ziel für Probenergebnis in Kamprunden bewegungsunfähig, sofern ihm nicht KÖR+ST gelingt.

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5maJ8tHAVZCxHGW6", + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.vNnnWKNHFzvSlquf" + }, + { + "_id": "vYPD5Je4xRUgTqcp", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.vYPD5Je4xRUgTqcp" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 12, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 48, + "value": 72 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:12)", + "foeFactor": 11, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 165, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Monsterspinne", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/monster-spider.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346201, + "modifiedTime": 1740227862842, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!4276kgAddflo3bwN" +} diff --git a/packs/creatures/Mumie_P3mlpN2JrbnDtLwJ.json b/packs/creatures/Mumie_P3mlpN2JrbnDtLwJ.json new file mode 100644 index 00000000..a3b6c944 --- /dev/null +++ b/packs/creatures/Mumie_P3mlpN2JrbnDtLwJ.json @@ -0,0 +1,485 @@ +{ + "_id": "P3mlpN2JrbnDtLwJ", + "name": "Mumie", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "MxXeRwM7Mw1OqmAC", + "name": "Fäulnispranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.MxXeRwM7Mw1OqmAC" + }, + { + "_id": "Icq7W8YrjXTIlb7C", + "name": "Bandagen", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.Icq7W8YrjXTIlb7C" + }, + { + "_id": "Kf2kAdMidDaK1SVD", + "name": "Anfällig (Feuer)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "system": { + "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.Kf2kAdMidDaK1SVD" + }, + { + "_id": "yUtiK9PSMcNcvXfr", + "name": "Angst (1)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.yUtiK9PSMcNcvXfr" + }, + { + "_id": "F3UjrYhsbCLoyFm3", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.F3UjrYhsbCLoyFm3" + }, + { + "_id": "hewKWM2G62KKAj7L", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.hewKWM2G62KKAj7L" + }, + { + "_id": "PFpQT1jYCeKy2yuk", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 900000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.PFpQT1jYCeKy2yuk" + }, + { + "_id": "nX0rcnKD1xHYwysw", + "name": "Totenkraft", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", + "effects": [], + "folder": null, + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" + } + }, + "system": { + "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.nX0rcnKD1xHYwysw" + }, + { + "_id": "fdt4YJVWp3XylED1", + "name": "Werteverlust (KÖR)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", + "effects": [], + "folder": null, + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.RwT0NBwkc1TuAR1e" + } + }, + "system": { + "description": "

Pro schadensverursachendem Treffer wird KÖR um 1 gesenkt (bei KÖR Null ist das Opfer tot). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.RwT0NBwkc1TuAR1e", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.fdt4YJVWp3XylED1" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 12, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 4, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 32 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 1 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW #2A:18, #1M:16", + "foeFactor": 18, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 124, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Mumie", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346620, + "modifiedTime": 1740227862873, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!P3mlpN2JrbnDtLwJ" +} diff --git a/packs/creatures/Niederer_D_mon_RxSUSzQBSTFYHOlV.json b/packs/creatures/Niederer_D_mon_RxSUSzQBSTFYHOlV.json new file mode 100644 index 00000000..d86502ca --- /dev/null +++ b/packs/creatures/Niederer_D_mon_RxSUSzQBSTFYHOlV.json @@ -0,0 +1,389 @@ +{ + "_id": "RxSUSzQBSTFYHOlV", + "name": "Niederer Dämon", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "bXEiQJc7aJmLW1K4", + "name": "Pranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.bXEiQJc7aJmLW1K4" + }, + { + "_id": "N6MfjihlDL9hfse6", + "name": "Dämonenhaut", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.N6MfjihlDL9hfse6" + }, + { + "_id": "BDsxMEuEKfjEgFk3", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.BDsxMEuEKfjEgFk3" + }, + { + "_id": "AHJhJgRCvw2dKx78", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.AHJhJgRCvw2dKx78" + }, + { + "_id": "DURD01IkVxPAwlxf", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.DURD01IkVxPAwlxf" + }, + { + "_id": "hvOFruV5fmieLXnk", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.hvOFruV5fmieLXnk" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 5, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -8, + "value": 9 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 1, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 71, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Niederer Dämon", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346666, + "modifiedTime": 1740227862879, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!RxSUSzQBSTFYHOlV" +} diff --git a/packs/creatures/Oger_QudriM5XZhEC7D6v.json b/packs/creatures/Oger_QudriM5XZhEC7D6v.json new file mode 100644 index 00000000..99a5ad46 --- /dev/null +++ b/packs/creatures/Oger_QudriM5XZhEC7D6v.json @@ -0,0 +1,357 @@ +{ + "_id": "QudriM5XZhEC7D6v", + "name": "Oger", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/ogre-blue.png", + "items": [ + { + "_id": "hYNvoybPpmNB7ldb", + "name": "Massive Keule", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!QudriM5XZhEC7D6v.hYNvoybPpmNB7ldb" + }, + { + "_id": "M90M3KCsByyNno2f", + "name": "Felle", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!QudriM5XZhEC7D6v.M90M3KCsByyNno2f" + }, + { + "_id": "yIAptcyyzAytAPRc", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!QudriM5XZhEC7D6v.yIAptcyyzAytAPRc" + }, + { + "_id": "u8EFs9MhGH4cjqzI", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!QudriM5XZhEC7D6v.u8EFs9MhGH4cjqzI" + }, + { + "_id": "THrZ1zvzJTdJ0413", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!QudriM5XZhEC7D6v.THrZ1zvzJTdJ0413" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 12, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 2, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 25, + "value": 50 + }, + "defense": { + "mod": 1 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:8, #1B18", + "foeFactor": 10, + "creatureType": "humanoid", + "sizeCategory": "large", + "experiencePoints": 121, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Oger", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/ogre*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346647, + "modifiedTime": 1740227862877, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!QudriM5XZhEC7D6v" +} diff --git a/packs/creatures/Ork_m9uwTf6binQeuVAb.json b/packs/creatures/Ork_m9uwTf6binQeuVAb.json new file mode 100644 index 00000000..708c437e --- /dev/null +++ b/packs/creatures/Ork_m9uwTf6binQeuVAb.json @@ -0,0 +1,333 @@ +{ + "_id": "m9uwTf6binQeuVAb", + "name": "Ork", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/orc-blue.png", + "items": [ + { + "_id": "YozSzwoqjCJcs2NR", + "name": "Speer", + "type": "weapon", + "sort": 100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q" + } + }, + "img": "icons/weapons/polearms/spear-hooked-simple.webp", + "effects": [], + "folder": null, + "system": { + "description": "

Zerbricht bei Schießen-Patzer

", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "attackType": "meleeRanged", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q", + "duplicateSource": null + }, + "_key": "!actors.items!m9uwTf6binQeuVAb.YozSzwoqjCJcs2NR" + }, + { + "_id": "KlJJytTJybNcvjU3", + "name": "Lederpanzer", + "type": "armor", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.60MhQmXh0c2cT5nx" + } + }, + "img": "icons/equipment/chest/breastplate-banded-leather-brown.webp", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 4, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.60MhQmXh0c2cT5nx", + "duplicateSource": null + }, + "_key": "!actors.items!m9uwTf6binQeuVAb.KlJJytTJybNcvjU3" + }, + { + "_id": "rL8UVTzpLdTVqd9W", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!m9uwTf6binQeuVAb.rL8UVTzpLdTVqd9W" + }, + { + "_id": "0x83GMWxMjm02G5r", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!m9uwTf6binQeuVAb.0x83GMWxMjm02G5r" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 2, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 23 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 1 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:14, #1B16", + "foeFactor": 2, + "creatureType": "humanoid", + "sizeCategory": "normal", + "experiencePoints": 63, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Ork", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/orc*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346888, + "modifiedTime": 1740227862903, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!m9uwTf6binQeuVAb" +} diff --git a/packs/creatures/Pferd_asPZBajREGsJYoht.json b/packs/creatures/Pferd_asPZBajREGsJYoht.json new file mode 100644 index 00000000..35503e95 --- /dev/null +++ b/packs/creatures/Pferd_asPZBajREGsJYoht.json @@ -0,0 +1,258 @@ +{ + "_id": "asPZBajREGsJYoht", + "name": "Pferd", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/horse-white.png", + "items": [ + { + "_id": "fEZBZH6sYKbblf6g", + "name": "Huf, in Notwehr", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!asPZBajREGsJYoht.fEZBZH6sYKbblf6g" + }, + { + "_id": "zsouNfDc7ZOepbeR", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!asPZBajREGsJYoht.zsouNfDc7ZOepbeR" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 7, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 44, + "value": 66 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 4, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 101, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Pferd", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/horse*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346777, + "modifiedTime": 1740227862891, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!asPZBajREGsJYoht" +} diff --git a/packs/creatures/Pony_HgfrjXKUApOXvkUX.json b/packs/creatures/Pony_HgfrjXKUApOXvkUX.json new file mode 100644 index 00000000..3f0ff322 --- /dev/null +++ b/packs/creatures/Pony_HgfrjXKUApOXvkUX.json @@ -0,0 +1,258 @@ +{ + "_id": "HgfrjXKUApOXvkUX", + "name": "Pony", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/horse-brown.png", + "items": [ + { + "_id": "jpyXagx6Gqji5I09", + "name": "Huf, in Notwehr", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!HgfrjXKUApOXvkUX.jpyXagx6Gqji5I09" + }, + { + "_id": "7I2yvv1ctfP1BND7", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!HgfrjXKUApOXvkUX.7I2yvv1ctfP1BND7" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 5, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 3, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 92, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Pony", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/horse*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346482, + "modifiedTime": 1740227862865, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!HgfrjXKUApOXvkUX" +} diff --git a/packs/creatures/Ratte_lZgvjMSqh5FuA1JK.json b/packs/creatures/Ratte_lZgvjMSqh5FuA1JK.json new file mode 100644 index 00000000..2e65224d --- /dev/null +++ b/packs/creatures/Ratte_lZgvjMSqh5FuA1JK.json @@ -0,0 +1,322 @@ +{ + "_id": "lZgvjMSqh5FuA1JK", + "name": "Ratte", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/rat-brown-2.png", + "items": [ + { + "_id": "CtIA409ycFJcoNdq", + "name": "Spitze Zähne", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!lZgvjMSqh5FuA1JK.CtIA409ycFJcoNdq" + }, + { + "_id": "LNrmUjNRidA3PoHN", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!lZgvjMSqh5FuA1JK.LNrmUjNRidA3PoHN" + }, + { + "_id": "XcMeQEVeni94uQWk", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!lZgvjMSqh5FuA1JK.XcMeQEVeni94uQWk" + }, + { + "_id": "bvbaa9gsGyGocDA0", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!lZgvjMSqh5FuA1JK.bvbaa9gsGyGocDA0" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 2, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 1, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -9, + "value": 3 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 1, + "creatureType": "animal", + "sizeCategory": "tiny", + "experiencePoints": 26, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Ratte", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/rat*.png", + "scaleX": 0.5, + "scaleY": 0.5, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346882, + "modifiedTime": 1740227862901, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!lZgvjMSqh5FuA1JK" +} diff --git a/packs/creatures/Raubkatze_PVuNoFILDAHpqGsa.json b/packs/creatures/Raubkatze_PVuNoFILDAHpqGsa.json new file mode 100644 index 00000000..7faef311 --- /dev/null +++ b/packs/creatures/Raubkatze_PVuNoFILDAHpqGsa.json @@ -0,0 +1,392 @@ +{ + "_id": "PVuNoFILDAHpqGsa", + "name": "Raubkatze", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/feline-predator-panther.png", + "items": [ + { + "_id": "LZJzGcDrnXdAEPkP", + "name": "Pranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.LZJzGcDrnXdAEPkP" + }, + { + "_id": "8Um85s0Ayigqse3B", + "name": "Biss", + "type": "weapon", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.8Um85s0Ayigqse3B" + }, + { + "_id": "J1JDirHXfexacI9G", + "name": "Fell", + "type": "armor", + "sort": 300000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.J1JDirHXfexacI9G" + }, + { + "_id": "h9DFDddV6zHABNNR", + "name": "Mehrere Angriffe (+1)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 1 zusätzlichen Angriff in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E", + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.h9DFDddV6zHABNNR" + }, + { + "_id": "X8PG6Z929me6Fewo", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.X8PG6Z929me6Fewo" + }, + { + "_id": "vyDe0soNx67ZePNM", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.vyDe0soNx67ZePNM" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 7, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 1, + "mod": 0 + }, + "agility": { + "base": 5, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 9, + "value": 27 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:18)", + "foeFactor": 2, + "creatureType": "animal", + "sizeCategory": "normal", + "experiencePoints": 84, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Raubkatze", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/feline-predator*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346633, + "modifiedTime": 1740227862875, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!PVuNoFILDAHpqGsa" +} diff --git a/packs/creatures/Reitkeiler_GWNFUkgxocfKchIQ.json b/packs/creatures/Reitkeiler_GWNFUkgxocfKchIQ.json new file mode 100644 index 00000000..94a7a653 --- /dev/null +++ b/packs/creatures/Reitkeiler_GWNFUkgxocfKchIQ.json @@ -0,0 +1,325 @@ +{ + "_id": "GWNFUkgxocfKchIQ", + "name": "Reitkeiler", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/boar-brown-1.png", + "items": [ + { + "_id": "nUiNfU3pFgeeoRNR", + "name": "Hauer", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GWNFUkgxocfKchIQ.nUiNfU3pFgeeoRNR" + }, + { + "_id": "pSQjVkwbjngPoEPZ", + "name": "Dicke Borstenhaut", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GWNFUkgxocfKchIQ.pSQjVkwbjngPoEPZ" + }, + { + "_id": "VfFAFdeQ7jhTlAz1", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!GWNFUkgxocfKchIQ.VfFAFdeQ7jhTlAz1" + }, + { + "_id": "MMjbCu5tz7v52LOJ", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!GWNFUkgxocfKchIQ.MMjbCu5tz7v52LOJ" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 12, + "value": 35 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:10)", + "foeFactor": 5, + "creatureType": "animal", + "sizeCategory": "normal", + "experiencePoints": 76, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Reitkeiler", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/boar*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346399, + "modifiedTime": 1740227862862, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!GWNFUkgxocfKchIQ" +} diff --git a/packs/creatures/Riese_rULL0cHbyACJsHDC.json b/packs/creatures/Riese_rULL0cHbyACJsHDC.json new file mode 100644 index 00000000..d450cff4 --- /dev/null +++ b/packs/creatures/Riese_rULL0cHbyACJsHDC.json @@ -0,0 +1,360 @@ +{ + "_id": "rULL0cHbyACJsHDC", + "name": "Riese", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ndjWMSfPfmPY9AUY", + "name": "Baumstamm", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!rULL0cHbyACJsHDC.ndjWMSfPfmPY9AUY" + }, + { + "_id": "p8OAUiSFSEBq94mf", + "name": "Geworfener Fels", + "type": "weapon", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!rULL0cHbyACJsHDC.p8OAUiSFSEBq94mf" + }, + { + "_id": "xbi9dJjtVxeUoLK4", + "name": "Felle", + "type": "armor", + "sort": 300000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!rULL0cHbyACJsHDC.xbi9dJjtVxeUoLK4" + }, + { + "_id": "eTfSg6U4xZdJN7ec", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!rULL0cHbyACJsHDC.eTfSg6U4xZdJN7ec" + }, + { + "_id": "nFyr7vCp12na7Z3c", + "name": "Zerstampfen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", + "duplicateSource": null + }, + "_key": "!actors.items!rULL0cHbyACJsHDC.nFyr7vCp12na7Z3c" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 27, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 2, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 7, + "mod": 0 + }, + "constitution": { + "base": 7, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 176, + "value": 220 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": -3 + }, + "movement": { + "mod": 4 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 3 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:20)", + "foeFactor": 30, + "creatureType": "humanoid", + "sizeCategory": "huge", + "experiencePoints": 387, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Riese", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346989, + "modifiedTime": 1740227862911, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!rULL0cHbyACJsHDC" +} diff --git a/packs/creatures/Riesenechse_QWC9LW1g4aMUHZNc.json b/packs/creatures/Riesenechse_QWC9LW1g4aMUHZNc.json new file mode 100644 index 00000000..55dec271 --- /dev/null +++ b/packs/creatures/Riesenechse_QWC9LW1g4aMUHZNc.json @@ -0,0 +1,421 @@ +{ + "_id": "QWC9LW1g4aMUHZNc", + "name": "Riesenechse", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/giant-lizard-olive.png", + "items": [ + { + "_id": "0EPSA2vb34Nilg91", + "name": "Grausamer Biss", + "type": "weapon", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.0EPSA2vb34Nilg91" + }, + { + "_id": "2C5NsY0F4qndyWGS", + "name": "Schuppenpanzer", + "type": "armor", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.2C5NsY0F4qndyWGS" + }, + { + "_id": "I5qUZBkW7JLwuCze", + "name": "Kletterläufer", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" + } + }, + "system": { + "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N", + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.I5qUZBkW7JLwuCze" + }, + { + "_id": "xtiIwy6EYYRPkXN9", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.xtiIwy6EYYRPkXN9" + }, + { + "_id": "OBlOP38tzoxwhNuj", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.OBlOP38tzoxwhNuj" + }, + { + "_id": "WiyqJV69YblM42Ot", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.WiyqJV69YblM42Ot" + }, + { + "_id": "T8SibpTZqhohwVkB", + "name": "Verschlingen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" + } + }, + "system": { + "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält. Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p", + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.T8SibpTZqhohwVkB" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 15, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 14, + "mod": 0 + }, + "agility": { + "base": 5, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 179, + "value": 218 + }, + "defense": { + "mod": -10 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 4.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:16)", + "foeFactor": 25, + "creatureType": "humanoid", + "sizeCategory": "huge", + "experiencePoints": 316, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Riesenechse", + "displayName": 20, + "actorLink": false, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "alpha": 1, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": {}, + "randomImg": true, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/giant-lizard*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346636, + "modifiedTime": 1740227862875, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!QWC9LW1g4aMUHZNc" +} diff --git a/packs/creatures/Riesenkrake_Z7Dt5epXbuKn20US.json b/packs/creatures/Riesenkrake_Z7Dt5epXbuKn20US.json new file mode 100644 index 00000000..f3c061a7 --- /dev/null +++ b/packs/creatures/Riesenkrake_Z7Dt5epXbuKn20US.json @@ -0,0 +1,354 @@ +{ + "_id": "Z7Dt5epXbuKn20US", + "name": "Riesenkrake", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "uhUCjZsudH4tikXb", + "name": "Fangarme", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Z7Dt5epXbuKn20US.uhUCjZsudH4tikXb" + }, + { + "_id": "dm1gTdRLMsRP3dYJ", + "name": "Mehrere Angriffe (+5)", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit seinen insgesamt sechs Fangarmen 5 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg", + "duplicateSource": null + }, + "_key": "!actors.items!Z7Dt5epXbuKn20US.dm1gTdRLMsRP3dYJ" + }, + { + "_id": "Pk39V01Z4NKJ07oI", + "name": "Mehrere Angriffglieder (+5)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit insgesamt 6 Fangarmen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg btrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V", + "duplicateSource": null + }, + "_key": "!actors.items!Z7Dt5epXbuKn20US.Pk39V01Z4NKJ07oI" + }, + { + "_id": "JQuu3LzkV71R3eHr", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!Z7Dt5epXbuKn20US.JQuu3LzkV71R3eHr" + }, + { + "_id": "E5gJyppsFCHmEQLT", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!Z7Dt5epXbuKn20US.E5gJyppsFCHmEQLT" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 22, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 8, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 234, + "value": 270 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 4 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:18)", + "foeFactor": 35, + "creatureType": "animal", + "sizeCategory": "huge", + "experiencePoints": 397, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Riesenkrake", + "displayName": 20, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346741, + "modifiedTime": 1740227862887, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Z7Dt5epXbuKn20US" +} diff --git a/packs/creatures/Riesenratte_2MFCw32xgaic6YGx.json b/packs/creatures/Riesenratte_2MFCw32xgaic6YGx.json new file mode 100644 index 00000000..58324987 --- /dev/null +++ b/packs/creatures/Riesenratte_2MFCw32xgaic6YGx.json @@ -0,0 +1,322 @@ +{ + "_id": "2MFCw32xgaic6YGx", + "name": "Riesenratte", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/giant-rat-gray.png", + "items": [ + { + "_id": "dVCq0990d0o158yt", + "name": "Scharfe Zähne", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!2MFCw32xgaic6YGx.dVCq0990d0o158yt" + }, + { + "_id": "BQoKmcUMRg4cmoXq", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!2MFCw32xgaic6YGx.BQoKmcUMRg4cmoXq" + }, + { + "_id": "xMPWpgWRrjacTpYQ", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!2MFCw32xgaic6YGx.xMPWpgWRrjacTpYQ" + }, + { + "_id": "EcGjrMRAXOOGHGY1", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!2MFCw32xgaic6YGx.EcGjrMRAXOOGHGY1" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 4, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 1, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -4, + "value": 11 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 1, + "creatureType": "animal", + "sizeCategory": "small", + "experiencePoints": 41, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Riesenratte", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/giant-rat*.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346177, + "modifiedTime": 1740227862840, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!2MFCw32xgaic6YGx" +} diff --git a/packs/creatures/Riesenschlange_wBgO5Hc4oHKfRN6f.json b/packs/creatures/Riesenschlange_wBgO5Hc4oHKfRN6f.json new file mode 100644 index 00000000..5056a106 --- /dev/null +++ b/packs/creatures/Riesenschlange_wBgO5Hc4oHKfRN6f.json @@ -0,0 +1,325 @@ +{ + "_id": "wBgO5Hc4oHKfRN6f", + "name": "Riesenschlange", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/giant-snake-brown.png", + "items": [ + { + "_id": "ndAkzrcRKXbgY9rR", + "name": "Großer Biss", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wBgO5Hc4oHKfRN6f.ndAkzrcRKXbgY9rR" + }, + { + "_id": "vyuWg112c2jjiFgN", + "name": "Schuppenpanzer", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wBgO5Hc4oHKfRN6f.vyuWg112c2jjiFgN" + }, + { + "_id": "RX89OLfp965CuRDs", + "name": "Gift (1)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.TY1ZV1YsyaFtfX7U" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 1 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.TY1ZV1YsyaFtfX7U", + "duplicateSource": null + }, + "_key": "!actors.items!wBgO5Hc4oHKfRN6f.RX89OLfp965CuRDs" + }, + { + "_id": "2QXz0iopabnNNlQA", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!wBgO5Hc4oHKfRN6f.2QXz0iopabnNNlQA" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 44, + "value": 66 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:18)", + "foeFactor": 8, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 143, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Riesenschlange", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/giant-snake*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347214, + "modifiedTime": 1740227862921, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!wBgO5Hc4oHKfRN6f" +} diff --git a/packs/creatures/Rostassel_WYvb8G0z5GuNi7kO.json b/packs/creatures/Rostassel_WYvb8G0z5GuNi7kO.json new file mode 100644 index 00000000..5d4e2aff --- /dev/null +++ b/packs/creatures/Rostassel_WYvb8G0z5GuNi7kO.json @@ -0,0 +1,421 @@ +{ + "_id": "WYvb8G0z5GuNi7kO", + "name": "Rostassel", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/rust-bug.png", + "items": [ + { + "_id": "FQMPNxKTTpOynbsK", + "name": "Tentakelfühler", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.FQMPNxKTTpOynbsK" + }, + { + "_id": "b1YoPObYAlp0qgLo", + "name": "Chitinpanzer", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 3, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.b1YoPObYAlp0qgLo" + }, + { + "_id": "oT9c8PFOqW9NjOKA", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.oT9c8PFOqW9NjOKA" + }, + { + "_id": "OgwADTLcESeGWMih", + "name": "Mehrere Angriffe (+3)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit seinen insgesamt vier Tentakelfühlern 3 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG", + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.OgwADTLcESeGWMih" + }, + { + "_id": "vZZ50RNjZbkNI0Ha", + "name": "Mehrere Angriffglieder (+3)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.8HmrA97ZqN7nEYgm" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit insgesamt vier Tentakelfühlern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.8HmrA97ZqN7nEYgm", + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.vZZ50RNjZbkNI0Ha" + }, + { + "_id": "iuxp4uQYS1XdH0gG", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.iuxp4uQYS1XdH0gG" + }, + { + "_id": "pBC4SwfIsoVZ5Org", + "name": "Rost", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.oPTuLvZOEsXnRPed" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/rust.png", + "effects": [], + "folder": null, + "system": { + "description": "

Jeder Treffer der Tentakelfühler reduziert die PA eines zufälligen, metallischen, nichtmagischen Rüstungsstückes des Ziels um 1. Gleiches gilt für den WB nichtmagischer Metallwaffen, die die Rostassel treffen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.oPTuLvZOEsXnRPed", + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.pBC4SwfIsoVZ5Org" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 8, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 11, + "value": 33 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:6)", + "foeFactor": 8, + "creatureType": "animal", + "sizeCategory": "normal", + "experiencePoints": 111, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Rostassel", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/rust-bug.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346701, + "modifiedTime": 1740227862884, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!WYvb8G0z5GuNi7kO" +} diff --git a/packs/creatures/Schatten_T9YRYe0vnR4Qg4UM.json b/packs/creatures/Schatten_T9YRYe0vnR4Qg4UM.json new file mode 100644 index 00000000..1e21b984 --- /dev/null +++ b/packs/creatures/Schatten_T9YRYe0vnR4Qg4UM.json @@ -0,0 +1,389 @@ +{ + "_id": "T9YRYe0vnR4Qg4UM", + "name": "Schatten", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/shadow.png", + "items": [ + { + "_id": "yFI8eLZ0z1PSjGYH", + "name": "Geisterklaue", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.yFI8eLZ0z1PSjGYH" + }, + { + "_id": "PxhF7w8cBdqE2pBa", + "name": "Körperlos", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.PxhF7w8cBdqE2pBa" + }, + { + "_id": "gfZuHfJiCyZUskwn", + "name": "Alterung (1 Jahr pro Treffer)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.e9F812racwKeZPgR" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Treffer altert das Ziel um 1 Jahr.

", + "experiencePoints": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.e9F812racwKeZPgR", + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.gfZuHfJiCyZUskwn" + }, + { + "_id": "po7mBrqpDWKlXbtu", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.po7mBrqpDWKlXbtu" + }, + { + "_id": "LAAz2aBZoHatDHqJ", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.LAAz2aBZoHatDHqJ" + }, + { + "_id": "6eLzanLV8RG4p2Da", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.6eLzanLV8RG4p2Da" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 11, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 25 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 14, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 126, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Schatten", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/shadow.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346694, + "modifiedTime": 1740227862883, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!T9YRYe0vnR4Qg4UM" +} diff --git a/packs/creatures/Schimmerross_iIvMTzBji28VVQ0v.json b/packs/creatures/Schimmerross_iIvMTzBji28VVQ0v.json new file mode 100644 index 00000000..d0c21adb --- /dev/null +++ b/packs/creatures/Schimmerross_iIvMTzBji28VVQ0v.json @@ -0,0 +1,290 @@ +{ + "_id": "iIvMTzBji28VVQ0v", + "name": "Schimmerross", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "NB8EGOwqOiFbSwRT", + "name": "Huf, in Notwehr", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!iIvMTzBji28VVQ0v.NB8EGOwqOiFbSwRT" + }, + { + "_id": "EpT6dAyNtbw1l4TN", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!iIvMTzBji28VVQ0v.EpT6dAyNtbw1l4TN" + }, + { + "_id": "Di77ms6LCDcCtam5", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!iIvMTzBji28VVQ0v.Di77ms6LCDcCtam5" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 6, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 44, + "value": 66 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 4, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 106, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Schimmerross", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346860, + "modifiedTime": 1740227862899, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!iIvMTzBji28VVQ0v" +} diff --git a/packs/creatures/Schlachtross_6YqxYCWfWVm6c8qM.json b/packs/creatures/Schlachtross_6YqxYCWfWVm6c8qM.json new file mode 100644 index 00000000..ac53a12f --- /dev/null +++ b/packs/creatures/Schlachtross_6YqxYCWfWVm6c8qM.json @@ -0,0 +1,325 @@ +{ + "_id": "6YqxYCWfWVm6c8qM", + "name": "Schlachtross", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/war-horse.png", + "items": [ + { + "_id": "7rFkQfTzgSOYmhNP", + "name": "Huf", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!6YqxYCWfWVm6c8qM.7rFkQfTzgSOYmhNP" + }, + { + "_id": "DzisICBhJKo3U7PX", + "name": "Rammen", + "type": "weapon", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!6YqxYCWfWVm6c8qM.DzisICBhJKo3U7PX" + }, + { + "_id": "Mx15GW5ApV4HImpy", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!6YqxYCWfWVm6c8qM.Mx15GW5ApV4HImpy" + }, + { + "_id": "VQpngugF60q18Gpp", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!6YqxYCWfWVm6c8qM.VQpngugF60q18Gpp" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 12, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 50, + "value": 75 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 9, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 121, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Schlachtross", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/war-horse.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346236, + "modifiedTime": 1740227862844, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!6YqxYCWfWVm6c8qM" +} diff --git a/packs/creatures/Schlingwurzelbusch_XxrCtx56f0njVodK.json b/packs/creatures/Schlingwurzelbusch_XxrCtx56f0njVodK.json new file mode 100644 index 00000000..d2e7ffd7 --- /dev/null +++ b/packs/creatures/Schlingwurzelbusch_XxrCtx56f0njVodK.json @@ -0,0 +1,389 @@ +{ + "_id": "XxrCtx56f0njVodK", + "name": "Schlingwurzelbusch", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "eOBJ9tJLFizjQW0e", + "name": "Wurzelhiebe", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.eOBJ9tJLFizjQW0e" + }, + { + "_id": "23MVIoRbK0X5AudH", + "name": "Gehölz", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.23MVIoRbK0X5AudH" + }, + { + "_id": "3YSmdA5G9MS2g4Dn", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.3YSmdA5G9MS2g4Dn" + }, + { + "_id": "0QUScCjMSupBxEo4", + "name": "Mehrere Angriffe (+4)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 4 zusätzliche Hiebe mit seinen unzähligen Wurzeln in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN", + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.0QUScCjMSupBxEo4" + }, + { + "_id": "uoE0EQZy2aEQGJWp", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.uoE0EQZy2aEQGJWp" + }, + { + "_id": "SMDvuSaB2M06xcg5", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.SMDvuSaB2M06xcg5" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 6, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 10, + "value": 30 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Lediglich Brennholz", + "foeFactor": 7, + "creatureType": "plantBeing", + "sizeCategory": "normal", + "experiencePoints": 122, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Schlingwurzelbusch", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346736, + "modifiedTime": 1740227862886, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!XxrCtx56f0njVodK" +} diff --git a/packs/creatures/Schwarm_ZZEBR9R04TlNXU5q.json b/packs/creatures/Schwarm_ZZEBR9R04TlNXU5q.json new file mode 100644 index 00000000..20c77fca --- /dev/null +++ b/packs/creatures/Schwarm_ZZEBR9R04TlNXU5q.json @@ -0,0 +1,255 @@ +{ + "_id": "ZZEBR9R04TlNXU5q", + "name": "Schwarm", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "2Da0MbWQ8gy1WXBI", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!ZZEBR9R04TlNXU5q.2Da0MbWQ8gy1WXBI" + }, + { + "_id": "pII9BR3ndtlMaL4l", + "name": "Schwarm", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.rPbbTLUtSXZpdFjp" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swarm.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt als einzelner Gegner. Der Schwarmwert (SCW) entspricht seiner aktuellen Mitgliederanzahl / 10 (zu Beginn und max. 200 Mitglieder pro Schwarm = SCW 20). Pro 1 LK Schaden sterben 10 Mitglieder (= SCW -1). Schwärme können Mitglieder an benachbarte Felder abgeben und ihr eigenes sowie jedes angrenzende Feld gleichzeitig angreifen (mit jeweils vollen Schlagen-Wert).

\n

Schlagen/Abwehr/LK entsprechen dem aktuellen SCW

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.rPbbTLUtSXZpdFjp", + "duplicateSource": null + }, + "_key": "!actors.items!ZZEBR9R04TlNXU5q.pII9BR3ndtlMaL4l" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 0, + "mod": 0 + }, + "mobility": { + "base": 0, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -10, + "value": 0 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 8 + }, + "movement": { + "mod": 6.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 5, + "creatureType": "animal", + "sizeCategory": "small", + "experiencePoints": 68, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Schwarm", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346763, + "modifiedTime": 1740227862889, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!ZZEBR9R04TlNXU5q" +} diff --git a/packs/creatures/Skelett_Rvu16XzEjizdqNsu.json b/packs/creatures/Skelett_Rvu16XzEjizdqNsu.json new file mode 100644 index 00000000..246e6c96 --- /dev/null +++ b/packs/creatures/Skelett_Rvu16XzEjizdqNsu.json @@ -0,0 +1,290 @@ +{ + "_id": "Rvu16XzEjizdqNsu", + "name": "Skelett", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/skeleton-green.png", + "items": [ + { + "_id": "PhvbJ2VSw3ivWS3F", + "name": "Knochenklaue", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Rvu16XzEjizdqNsu.PhvbJ2VSw3ivWS3F" + }, + { + "_id": "jmoVrv9FCX28B4PJ", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!Rvu16XzEjizdqNsu.jmoVrv9FCX28B4PJ" + }, + { + "_id": "e5PbQLkYj3kldXil", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!Rvu16XzEjizdqNsu.e5PbQLkYj3kldXil" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 22 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 4, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 72, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Skelett", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/skeleton*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346657, + "modifiedTime": 1740227862879, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Rvu16XzEjizdqNsu" +} diff --git a/packs/creatures/Tentakelhirn_dFL9UUXHq9heme4T.json b/packs/creatures/Tentakelhirn_dFL9UUXHq9heme4T.json new file mode 100644 index 00000000..d41a8f34 --- /dev/null +++ b/packs/creatures/Tentakelhirn_dFL9UUXHq9heme4T.json @@ -0,0 +1,358 @@ +{ + "_id": "dFL9UUXHq9heme4T", + "name": "Tentakelhirn", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DuBcMQTb1e7mIe79", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!dFL9UUXHq9heme4T.DuBcMQTb1e7mIe79" + }, + { + "_id": "z80WCPwmoMsdzYWD", + "name": "Schweben", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion „Rennen“ ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF", + "duplicateSource": null + }, + "_key": "!actors.items!dFL9UUXHq9heme4T.z80WCPwmoMsdzYWD" + }, + { + "_id": "8lyV8jx9ZVqPA4kF", + "name": "Werteverlust (GEI)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.m52MTRs1GMXScTki" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", + "effects": [], + "folder": null, + "system": { + "description": "

Pro schadensverursachenden Treffer mit dem Gedankenzehrerstrahl-Zauber wird GEI um 1 gesenkt (bei GEI Null ist das Opfer wahnsinnig). Pro Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.m52MTRs1GMXScTki", + "duplicateSource": null + }, + "_key": "!actors.items!dFL9UUXHq9heme4T.8lyV8jx9ZVqPA4kF" + }, + { + "_id": "3sJtgHHEkOmTNLEL", + "name": "Gedankenzehrerstrahl", + "type": "spell", + "sort": 400000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "

Nicht sichtbar; verursacht mental Schaden und führt zu Werteverlust

", + "equipped": true, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!dFL9UUXHq9heme4T.3sJtgHHEkOmTNLEL" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 4, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 1, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -4, + "value": 11 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 10 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 7, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 89, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Tentakelhirn", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346817, + "modifiedTime": 1740227862895, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!dFL9UUXHq9heme4T" +} diff --git a/packs/creatures/Teufelchen_III_22pkyKnZoRLG0nnY.json b/packs/creatures/Teufelchen_III_22pkyKnZoRLG0nnY.json new file mode 100644 index 00000000..c4148e5d --- /dev/null +++ b/packs/creatures/Teufelchen_III_22pkyKnZoRLG0nnY.json @@ -0,0 +1,273 @@ +{ + "_id": "22pkyKnZoRLG0nnY", + "name": "Teufelchen III", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "W2e5m1533YiEPsdg", + "name": "Feuerstrahl", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-ray-small.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.kudkdrpMU0C83vM7" + } + }, + "system": { + "description": "

Der Zauberwirker schießt einen Feuerstrahl auf einen Feind, dessen Schaden dem Probenergebnis entspricht.

", + "equipped": true, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 1, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.kudkdrpMU0C83vM7", + "duplicateSource": null + }, + "_key": "!actors.items!22pkyKnZoRLG0nnY.W2e5m1533YiEPsdg" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 4, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 3, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 6, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -7, + "value": 7 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "", + "foeFactor": 4, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 44, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Teufelchen I", + "displayName": 0, + "actorLink": false, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "disposition": -1, + "displayBars": 0, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": { + "darkness-dependent-vision": { + "dimVisionDarknessMin": null, + "dimVisionDarknessMax": null, + "brightVisionDarknessMin": null, + "brightVisionDarknessMax": null + } + }, + "randomImg": false, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346173, + "modifiedTime": 1740227862840, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!22pkyKnZoRLG0nnY" +} diff --git a/packs/creatures/Teufelchen_II_SxbO1iTrXYGbdMoC.json b/packs/creatures/Teufelchen_II_SxbO1iTrXYGbdMoC.json new file mode 100644 index 00000000..2273130f --- /dev/null +++ b/packs/creatures/Teufelchen_II_SxbO1iTrXYGbdMoC.json @@ -0,0 +1,197 @@ +{ + "_id": "SxbO1iTrXYGbdMoC", + "name": "Teufelchen II", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 8, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -11, + "value": 11 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "", + "foeFactor": 5, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 48, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Teufelchen I", + "displayName": 0, + "actorLink": false, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "disposition": -1, + "displayBars": 0, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": { + "darkness-dependent-vision": { + "dimVisionDarknessMin": null, + "dimVisionDarknessMax": null, + "brightVisionDarknessMin": null, + "brightVisionDarknessMax": null + } + }, + "randomImg": false, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346686, + "modifiedTime": 1740227862882, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!SxbO1iTrXYGbdMoC" +} diff --git a/packs/creatures/Teufelchen_I_aqbcBjeCJUHJ5uVj.json b/packs/creatures/Teufelchen_I_aqbcBjeCJUHJ5uVj.json new file mode 100644 index 00000000..328580b8 --- /dev/null +++ b/packs/creatures/Teufelchen_I_aqbcBjeCJUHJ5uVj.json @@ -0,0 +1,266 @@ +{ + "_id": "aqbcBjeCJUHJ5uVj", + "name": "Teufelchen I", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "L9utJ9BJSLkYbUjN", + "name": "Fliegen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!aqbcBjeCJUHJ5uVj.L9utJ9BJSLkYbUjN" + }, + { + "_id": "OaZjNMhyCyxRKA8C", + "name": "Krallen", + "type": "weapon", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0, + "action": "create" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!aqbcBjeCJUHJ5uVj.OaZjNMhyCyxRKA8C" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 7, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 1, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -9, + "value": 9 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "", + "foeFactor": 4, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 35, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Teufelchen I", + "displayName": 0, + "actorLink": false, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "disposition": -1, + "displayBars": 0, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": { + "darkness-dependent-vision": { + "dimVisionDarknessMin": null, + "dimVisionDarknessMax": null, + "brightVisionDarknessMin": null, + "brightVisionDarknessMax": null + } + }, + "randomImg": false, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346774, + "modifiedTime": 1740227862890, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!aqbcBjeCJUHJ5uVj" +} diff --git a/packs/creatures/Todesfee_6KmAeL9lVxWXIeU6.json b/packs/creatures/Todesfee_6KmAeL9lVxWXIeU6.json new file mode 100644 index 00000000..91ebc5cf --- /dev/null +++ b/packs/creatures/Todesfee_6KmAeL9lVxWXIeU6.json @@ -0,0 +1,556 @@ +{ + "_id": "6KmAeL9lVxWXIeU6", + "name": "Todesfee", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "0tHp37tNXFa9akK0", + "name": "Geisterklaue", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.0tHp37tNXFa9akK0" + }, + { + "_id": "quc1WJJwo4UMlkg3", + "name": "Körperlos", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.quc1WJJwo4UMlkg3" + }, + { + "_id": "U6mQ5sQwMjdLgUww", + "name": "Alterung (1 Jahr pro Schadenspunkt)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.U6mQ5sQwMjdLgUww" + }, + { + "_id": "IolX9qsFGSxYN38o", + "name": "Angst (2)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 20 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.IolX9qsFGSxYN38o" + }, + { + "_id": "w1h6K90G0l0RXQy5", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.w1h6K90G0l0RXQy5" + }, + { + "_id": "eSMM4Zq5UPWN31iB", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.eSMM4Zq5UPWN31iB" + }, + { + "_id": "VHUCIwHGz93rL2db", + "name": "Nur durch Magie verletzbar", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.VHUCIwHGz93rL2db" + }, + { + "_id": "vcdY5BrydMFLsnRU", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 900000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.vcdY5BrydMFLsnRU" + }, + { + "_id": "We3eGY2UjINy3lRZ", + "name": "Wehklagen", + "type": "spell", + "sort": 1000000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "

Jeder im Umkreis von 9 m um die Todesfee erleidet nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "9", + "unit": "meter" + }, + "duration": { + "value": "", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.We3eGY2UjINy3lRZ" + }, + { + "_id": "aTr4fC2AuCJ5PLGF", + "name": "Totenkraft", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", + "effects": [], + "folder": null, + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" + } + }, + "system": { + "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.aTr4fC2AuCJ5PLGF" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 6, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 3, + "mod": 0 + }, + "aura": { + "base": 9, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 35 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 23, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 284, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Todesfee", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346224, + "modifiedTime": 1740227862843, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!6KmAeL9lVxWXIeU6" +} diff --git a/packs/creatures/Troll_EItxqEiDUOmJdy4n.json b/packs/creatures/Troll_EItxqEiDUOmJdy4n.json new file mode 100644 index 00000000..e87e939f --- /dev/null +++ b/packs/creatures/Troll_EItxqEiDUOmJdy4n.json @@ -0,0 +1,456 @@ +{ + "_id": "EItxqEiDUOmJdy4n", + "name": "Troll", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/troll-blue.png", + "items": [ + { + "_id": "k4z8YIPc1sSdgAuf", + "name": "Massive Keule", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.k4z8YIPc1sSdgAuf" + }, + { + "_id": "SUbNCeLDrM29kOjI", + "name": "Geworfener Fels", + "type": "weapon", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.SUbNCeLDrM29kOjI" + }, + { + "_id": "2t0pWjoVV6V1XL7m", + "name": "Warzenhaut", + "type": "armor", + "sort": 300000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.2t0pWjoVV6V1XL7m" + }, + { + "_id": "XBYL6p6Lh2di3cL0", + "name": "Anfällig (Licht)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.aOsmsf7jIK7hU9U8" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "system": { + "description": "

Erhält doppelten Schaden durch Lichtangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.aOsmsf7jIK7hU9U8", + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.XBYL6p6Lh2di3cL0" + }, + { + "_id": "ut3GaXn0lU6CJO2f", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.ut3GaXn0lU6CJO2f" + }, + { + "_id": "wxRyDYdcYDvfRLsw", + "name": "Regeneration", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", + "effects": [], + "folder": null, + "system": { + "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations-Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq", + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.wxRyDYdcYDvfRLsw" + }, + { + "_id": "hutBK3nVQ2TZBivP", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.hutBK3nVQ2TZBivP" + }, + { + "_id": "275bgVmTqYULPH3V", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.275bgVmTqYULPH3V" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 2, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 30, + "value": 60 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 3 + }, + "movement": { + "mod": 1 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "#BW 1B16", + "foeFactor": 14, + "creatureType": "humanoid", + "sizeCategory": "large", + "experiencePoints": 202, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Troll", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/troll*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346327, + "modifiedTime": 1740227862855, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!EItxqEiDUOmJdy4n" +} diff --git a/packs/creatures/Unwolf_O2maANGDJHPLX8aE.json b/packs/creatures/Unwolf_O2maANGDJHPLX8aE.json new file mode 100644 index 00000000..171b71e7 --- /dev/null +++ b/packs/creatures/Unwolf_O2maANGDJHPLX8aE.json @@ -0,0 +1,456 @@ +{ + "_id": "O2maANGDJHPLX8aE", + "name": "Unwolf", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/nether-wolf.png", + "items": [ + { + "_id": "9olbXmWVzPkmPhvu", + "name": "Biss", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.9olbXmWVzPkmPhvu" + }, + { + "_id": "p3zhDhgstlj2JMxe", + "name": "Feuerodem", + "type": "weapon", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.p3zhDhgstlj2JMxe" + }, + { + "_id": "hcB5LcidhVSW5rI7", + "name": "Brennendes Fell", + "type": "armor", + "sort": 300000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.hcB5LcidhVSW5rI7" + }, + { + "_id": "MPb5ZrTIutJ291XD", + "name": "Anfällig (Wasser)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "system": { + "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e", + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.MPb5ZrTIutJ291XD" + }, + { + "_id": "fMULyKcCpn2tVMPO", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.fMULyKcCpn2tVMPO" + }, + { + "_id": "qLG2ZZPYGAbLzpBf", + "name": "Odem", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.qLG2ZZPYGAbLzpBf" + }, + { + "_id": "4851TNs45Q3hSrU1", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.4851TNs45Q3hSrU1" + }, + { + "_id": "NXxoBj91nyeyBm4M", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.NXxoBj91nyeyBm4M" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 11, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 12, + "value": 35 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:16)", + "foeFactor": 7, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 115, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Unwolf", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/nether-wolf.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346597, + "modifiedTime": 1740227862870, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!O2maANGDJHPLX8aE" +} diff --git a/packs/creatures/Vampirfledermaus_lys4bJc7GL5f5ORp.json b/packs/creatures/Vampirfledermaus_lys4bJc7GL5f5ORp.json new file mode 100644 index 00000000..008522ab --- /dev/null +++ b/packs/creatures/Vampirfledermaus_lys4bJc7GL5f5ORp.json @@ -0,0 +1,354 @@ +{ + "_id": "lys4bJc7GL5f5ORp", + "name": "Vampirfledermaus", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/vampire-bat.png", + "items": [ + { + "_id": "G08O3BP9HQ0mLjAQ", + "name": "Krallen", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!lys4bJc7GL5f5ORp.G08O3BP9HQ0mLjAQ" + }, + { + "_id": "hdTEWmE6saO2W7FI", + "name": "Sonar", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.BtjiEmhGyje6YghP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/sonar.png", + "effects": [], + "folder": null, + "system": { + "description": "

„Sieht“ per Sonar.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.BtjiEmhGyje6YghP", + "duplicateSource": null + }, + "_key": "!actors.items!lys4bJc7GL5f5ORp.hdTEWmE6saO2W7FI" + }, + { + "_id": "OfL0gyUOJjAOW3xA", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!lys4bJc7GL5f5ORp.OfL0gyUOJjAOW3xA" + }, + { + "_id": "eH5vkCneA5sLHkmp", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!lys4bJc7GL5f5ORp.eH5vkCneA5sLHkmp" + }, + { + "_id": "1zKUlljm7MEYc3l8", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", + "duplicateSource": null + }, + "_key": "!actors.items!lys4bJc7GL5f5ORp.1zKUlljm7MEYc3l8" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 5, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -13, + "value": 4 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 1, + "creatureType": "animal", + "sizeCategory": "tiny", + "experiencePoints": 55, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Vampirfledermaus", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/vampire-bat.png", + "scaleX": 0.5, + "scaleY": 0.5, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346885, + "modifiedTime": 1740227862902, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!lys4bJc7GL5f5ORp" +} diff --git a/packs/creatures/Wasserelementar_III_dlrDPQ3is4NkzZJB.json b/packs/creatures/Wasserelementar_III_dlrDPQ3is4NkzZJB.json new file mode 100644 index 00000000..df31a746 --- /dev/null +++ b/packs/creatures/Wasserelementar_III_dlrDPQ3is4NkzZJB.json @@ -0,0 +1,325 @@ +{ + "_id": "dlrDPQ3is4NkzZJB", + "name": "Wasserelementar III", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "HPT4hAgQnGf1gbJR", + "name": "Wasserstrahl", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "

-1 WB / 2 Meter

", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "meleeRanged", + "weaponBonus": 4, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!dlrDPQ3is4NkzZJB.HPT4hAgQnGf1gbJR" + }, + { + "_id": "OIKYSareGFhHJxAB", + "name": "Keine feste Gestalt", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!dlrDPQ3is4NkzZJB.OIKYSareGFhHJxAB" + }, + { + "_id": "NKUKD1KfNTpKZygj", + "name": "Anfällig (Feuer)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "system": { + "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C", + "duplicateSource": null + }, + "_key": "!actors.items!dlrDPQ3is4NkzZJB.NKUKD1KfNTpKZygj" + }, + { + "_id": "VCmj5YFjcDb1Slay", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!dlrDPQ3is4NkzZJB.VCmj5YFjcDb1Slay" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 15, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 31, + "value": 62 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 16, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 133, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Wasserelementar III", + "displayName": 20, + "width": 2, + "height": 2, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346824, + "modifiedTime": 1740227862896, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!dlrDPQ3is4NkzZJB" +} diff --git a/packs/creatures/Wasserelementar_II_Xn7g2PB1rXvllwRi.json b/packs/creatures/Wasserelementar_II_Xn7g2PB1rXvllwRi.json new file mode 100644 index 00000000..b9bb0cbc --- /dev/null +++ b/packs/creatures/Wasserelementar_II_Xn7g2PB1rXvllwRi.json @@ -0,0 +1,190 @@ +{ + "_id": "Xn7g2PB1rXvllwRi", + "name": "Wasserelementar II", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 11, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 24 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 9, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 83, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Wasserelementar II", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346733, + "modifiedTime": 1740227862885, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Xn7g2PB1rXvllwRi" +} diff --git a/packs/creatures/Wasserelementar_I_ZJF6ieo8O0GXfgwz.json b/packs/creatures/Wasserelementar_I_ZJF6ieo8O0GXfgwz.json new file mode 100644 index 00000000..466d8197 --- /dev/null +++ b/packs/creatures/Wasserelementar_I_ZJF6ieo8O0GXfgwz.json @@ -0,0 +1,190 @@ +{ + "_id": "ZJF6ieo8O0GXfgwz", + "name": "Wasserelementar I", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 6, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -9, + "value": 10 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 3, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 60, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Wasserelementar I", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": false, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346750, + "modifiedTime": 1740227862888, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!ZJF6ieo8O0GXfgwz" +} diff --git a/packs/creatures/Wolf_nZ9u6G3D3Q9oUXM8.json b/packs/creatures/Wolf_nZ9u6G3D3Q9oUXM8.json new file mode 100644 index 00000000..4a52681b --- /dev/null +++ b/packs/creatures/Wolf_nZ9u6G3D3Q9oUXM8.json @@ -0,0 +1,357 @@ +{ + "_id": "nZ9u6G3D3Q9oUXM8", + "name": "Wolf", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/wolf-2.png", + "items": [ + { + "_id": "CbeR35FgiGzc1xtl", + "name": "Kräftiger Biss", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.CbeR35FgiGzc1xtl" + }, + { + "_id": "PZ9G8IZoP5eiPQEx", + "name": "Wolfspelz", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.PZ9G8IZoP5eiPQEx" + }, + { + "_id": "ZDZ9qHG17DjQWhSE", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.ZDZ9qHG17DjQWhSE" + }, + { + "_id": "nvwGqdzQA4Mf37Ci", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.nvwGqdzQA4Mf37Ci" + }, + { + "_id": "PQZ9xUYQyQHv8gEy", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.PQZ9xUYQyQHv8gEy" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 8, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 1, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 10, + "value": 29 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:10)", + "foeFactor": 2, + "creatureType": "humanoid", + "sizeCategory": "normal", + "experiencePoints": 81, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Wolf", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/wolf*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346909, + "modifiedTime": 1740227862907, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!nZ9u6G3D3Q9oUXM8" +} diff --git a/packs/creatures/Zombie_rLUCyWfSBebB8cSC.json b/packs/creatures/Zombie_rLUCyWfSBebB8cSC.json new file mode 100644 index 00000000..fb1cbd87 --- /dev/null +++ b/packs/creatures/Zombie_rLUCyWfSBebB8cSC.json @@ -0,0 +1,357 @@ +{ + "_id": "rLUCyWfSBebB8cSC", + "name": "Zombie", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/zombie-female-red.png", + "items": [ + { + "_id": "NdunVanOXm7hG0rX", + "name": "Fäulnispranke", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!rLUCyWfSBebB8cSC.NdunVanOXm7hG0rX" + }, + { + "_id": "ZjRYyfjMWlmtGUJ0", + "name": "Merkt nichts", + "type": "armor", + "sort": 200000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!rLUCyWfSBebB8cSC.ZjRYyfjMWlmtGUJ0" + }, + { + "_id": "HT4yv3mKyIcwaLKr", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!rLUCyWfSBebB8cSC.HT4yv3mKyIcwaLKr" + }, + { + "_id": "rCzeYlfYzbGpNQOe", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!rLUCyWfSBebB8cSC.rCzeYlfYzbGpNQOe" + }, + { + "_id": "Y2r3v6U8Grn619HR", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!rLUCyWfSBebB8cSC.Y2r3v6U8Grn619HR" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 13, + "mod": 0 + }, + "mobility": { + "base": 3, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 28 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:4", + "foeFactor": 10, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 78, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Zombie", + "displayName": 20, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "actorLink": false, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "randomImg": true, + "alpha": 1, + "light": { + "alpha": 0.5, + "angle": 360, + "bright": 0, + "coloration": 1, + "dim": 0, + "luminosity": 0.5, + "saturation": 0, + "contrast": 0, + "shadows": 0, + "animation": { + "speed": 5, + "intensity": 5, + "reverse": false, + "type": null + }, + "darkness": { + "min": 0, + "max": 1 + }, + "attenuation": 0.5, + "color": null, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/zombie*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "sight": { + "angle": 360, + "enabled": false, + "range": 0, + "brightness": 1, + "visionMode": "basic", + "color": null, + "attenuation": 0.1, + "saturation": 0, + "contrast": 0 + }, + "detectionModes": [], + "appendNumber": false, + "prependAdjective": false, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346978, + "modifiedTime": 1740227862910, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!rLUCyWfSBebB8cSC" +} diff --git a/packs/items.json b/packs/items.json deleted file mode 100644 index ddcf261f..00000000 --- a/packs/items.json +++ /dev/null @@ -1,11325 +0,0 @@ -[ - { - "_id": "03wnfxowhzvSJPSj", - "name": "Plattenpanzer +2", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 5300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-layered-steel.webp", - "effects": [ - { - "_id": "uOEN4xXL3IcebbJO", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "09Hp2c2jgoXx7cV0", - "name": "Kettenpanzer", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Laufen -0,5m

", - "quantity": 1, - "price": 10, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "EkJB0kpYFHRMYSgl", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -0.5, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -0,5m", - "tint": "", - "transfer": true - } - ] - }, - { - "name": "Zauberköcher", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Jeder Pfeil, der aus diesem Köcher gezogen wird, hat für die Dauer einer Kampfrunde einen magischen Waffenbonus von +1.

", - "quantity": 1, - "price": 750.1, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/containers/ammunition/arrows-quiver-blue.webp", - "effects": [], - "_id": "0C9YNorSbYM5eyBj" - }, - { - "_id": "0EwYRuQCBmE3LIm2", - "name": "Krummschwert", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/swords/scimitar-broad.webp", - "effects": [] - }, - { - "_id": "0P2wJM5qG1VupfXq", - "name": "Streitaxt +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 3257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-double-blue.webp", - "effects": [ - { - "_id": "DPS3CaNXapsBzzsj", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - }, - { - "_id": "aNtjz1DteptmA3ce", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "0SrSqLjQ5CMNbwXV", - "name": "Holzschild +2", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": null, - "quantity": 1, - "price": 3251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "flags": {}, - "img": "icons/equipment/shield/round-wooden-reinforced-boss-steel.webp", - "effects": [ - { - "_id": "eu80ImNhR1gsT7jg", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "0UDiL2xAlGCEeckL", - "name": "Schlachtbeil", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 20, - "availability": "city", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-battle-black.webp", - "effects": [ - { - "_id": "atmWPMxgNoeole7n", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -6, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -6", - "transfer": true - } - ] - }, - { - "name": "Gürtel der Trollstärke", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Dieser mit kleinen Eisenplatten beschlagene Gürtel erhöht die Stärke seines Trägers um 3.

", - "quantity": 1, - "price": 3250.05, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/waist/belt-armored-studded-steel.webp", - "effects": [ - { - "_id": "43bRMhcEqMvQvRQU", - "flags": {}, - "changes": [ - { - "key": "data.traits.strength.total", - "value": 3, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Stärke +3 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "0Vd79Orsle4PUqs2" - }, - { - "_id": "0cAWFZtQfLF7q1ZX", - "name": "Elfenbogen +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2325, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/bows/longbow-recurve-leather-brown.webp", - "effects": [ - { - "_id": "QScLkDv6gysh119m", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "UPsfGYjye47se1Gw", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "0e8GeSHxVf72FXvT", - "name": "Turmschild", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": "

Laufen -1m

", - "quantity": 1, - "price": 15, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 2 - }, - "flags": {}, - "img": "icons/equipment/shield/heater-steel-boss-red.webp", - "effects": [ - { - "_id": "ScAKi1eiWow9Y1ZZ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -1m", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "0f8ivq3Mveb3s3Fs", - "name": "Zwergenaxt", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -1

", - "quantity": 1, - "price": 60, - "availability": "dwarves", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-double-engraved.webp", - "effects": [ - { - "_id": "Ytio5tOcCUO91MQ0", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -1", - "transfer": true - } - ] - }, - { - "_id": "0vIgZkHBeEPut73w", - "name": "Elfenbogen +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 3325, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 6, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/bows/longbow-recurve.webp", - "effects": [ - { - "_id": "QScLkDv6gysh119m", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "azjxgNJkYNvxg622", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "0wgXMtaVpVJabEun", - "name": "Dolch +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative +1

", - "quantity": 1, - "price": 1752, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/daggers/dagger-double-engraved-black.webp", - "effects": [ - { - "_id": "9jtH6ER0s0I8SPyi", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "JLc9UYdHy4aAeqA2", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "12WbnUt5h84JQxMp", - "name": "Kettenpanzer +2", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 4260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "gPN9UcowmdjdyGyn", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "19bmt5UJrT3T36wE", - "name": "Heiltrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-corked-red.webp", - "data": { - "description": "

Dieses oftmals rote Getränk heilt W20 Lebenskraft.

", - "quantity": 1, - "price": 10, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "1HjmUAR5mf59yXlw", - "name": "Unverwundbartrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-corked-shiny-red.webp", - "data": { - "description": "

Der Charakter erhält für W20 Runden +20 auf seine Abwehr durch diesen meist roten, flockigen Trank. Dieser Bonus gilt auch bei Schaden, gegen den normalerweise keine Abwehr zulässig ist.

", - "quantity": 1, - "price": 1000, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "1IWsAaMSnz1Q9ZWd", - "name": "Schleuder +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Distanzmalus -1 pro 2m

", - "quantity": 1, - "price": 1250.1, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/slings/slingshot-wood.webp", - "effects": [ - { - "_id": "aKfE4S2oocgJMro8", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "1hmprC7XVhIPemy5", - "name": "Kurzbogen +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 1756, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/bows/shortbow-recurve.webp", - "effects": [ - { - "_id": "zgiIGlRMVCgAzrn7", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "VkuGm7hES83WX4HD", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "1uHuQJcCjjxzvP4C", - "name": "Teleporttrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-fumes-blue.webp", - "data": { - "description": "

Dieser rauchige, wirbelnde Trank wirkt den Zauber Teleport auf den Trinker (keine Probe notwendig), nicht jedoch auf weitere Charaktere.

", - "quantity": 1, - "price": 1000, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "name": "Rüstung des Löwen", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Eine Plattenrüstung +2 mit verzierten Löwenköpfen, die Laufen +1,5m gewährt.

", - "quantity": 1, - "price": 6800, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-layered-gold.webp", - "effects": [ - { - "_id": "uOEN4xXL3IcebbJO", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - }, - { - "_id": "iIT1kOsyMJn0mIte", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": 1.5, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen +1,5 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "1uYooTtDWgzB9FI9" - }, - { - "name": "Wechselring", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Mittels Wechsler +V verleiht dieser Ring +10 auf Proben, um die eigenen Zauber zu wechseln.

", - "quantity": 1, - "price": 1502, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/finger/ring-cabochon-white-blue.webp", - "effects": [], - "_id": "1vrVO2sqFqC4AA1k" - }, - { - "_id": "2BNzuiU6wc3r9ByF", - "name": "Plattenarmschienen +3", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 4257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "vambrace" - }, - "flags": {}, - "img": "icons/equipment/wrist/bracer-armored-steel-blue.webp", - "effects": [ - { - "_id": "PIRBFfHOrmdREhnH", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "2C0GH1sYXj8QtRTK", - "name": "Krummsäbel +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1756, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/swords/scimitar-guard-brown.webp", - "effects": [ - { - "_id": "xjUL1B0P5jhze3vQ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "2JQowFF6ZjF90OFI", - "name": "Hellebarde", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2, Zerbricht bei Schlagen-Patzer

", - "quantity": 1, - "price": 1754, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/polearms/halberd-engraved-black.webp", - "effects": [ - { - "_id": "APXje5Ppu0d75HNw", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - } - ] - }, - { - "name": "Abklingring", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Dieser einfache Abklingring senkt die Abklingzeit sämtlicher Zauber seines Trägers um 1.

", - "quantity": 1, - "price": 5252, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/finger/ring-band-engraved-scrolls-silver.webp", - "effects": [], - "_id": "2XfoxOYNOTar9OAt" - }, - { - "_id": "2jgIyVHZYJroSUFY", - "name": "Atemfreitrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-conical-bubbling-blue.webp", - "data": { - "description": "

Der Trinker dieses sprudelnden Trankes braucht für KÖR in Stunden nicht zu atmen.

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "2le5COwoh45Pc4oD", - "name": "Flegel +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative -2

", - "quantity": 1, - "price": 1758, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/maces/flail-cube-grey.webp", - "effects": [ - { - "_id": "yXvt3CT4FbXYjIfc", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - }, - { - "_id": "rUye8ORwMGGtWPrr", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "2ydkhz5gDjxAiaYy", - "name": "Bihänder +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -5 - }, - "flags": {}, - "img": "icons/weapons/swords/greatsword-crossguard-engraved-green.webp", - "effects": [ - { - "_id": "DaKTtdhRO45QZuDJ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -2", - "tint": "", - "transfer": true - }, - { - "_id": "qdSiJ4l0AuTd68CB", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "34fD45Yzi3s2cSgy", - "name": "Lederpanzer (Für Reittiere) +3", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 4262, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/commodities/leather/leather-leaf-tan.webp", - "effects": [ - { - "_id": "DY0fXwaK8RHbyo75", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "3ZCLI6UN4i0zTeuv", - "name": "Krummschwert +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/swords/scimitar-bone.webp", - "effects": [ - { - "_id": "MUERgL0DjjZR3sv0", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "3pdw4CN8Wc9oCKX5", - "name": "Schloss: Einfach (SW: 0)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", - "effects": [] - }, - { - "_id": "3zqSBuiQWIsIov4h", - "name": "Kletterausrüstung", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/survival/rope-wrapped-loops-grey.webp", - "effects": [] - }, - { - "_id": "4E9WdEs1JaWrCYim", - "name": "Wagen (4 Räder)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 35, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/commodities/wood/wood-wheel-brown.webp", - "effects": [] - }, - { - "_id": "55AkLjiaIn0SWO9k", - "name": "Rüstung des Kriegers", - "type": "armor", - "img": "icons/equipment/chest/breastplate-collared-steel.webp", - "data": { - "description": "

Diese aufwendig verzierte Plattenrüstung +2 gewährt ihrem Träger +1 auf Körper.

", - "quantity": 1, - "price": 7300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "effects": [ - { - "_id": "uOEN4xXL3IcebbJO", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": "2", - "mode": 2 - } - ], - "duration": { - "startTime": null - }, - "label": "Panzerung +2 (magisch)", - "transfer": true, - "disabled": false - }, - { - "_id": "TZoEpatdi8z1nreX", - "flags": {}, - "changes": [ - { - "key": "data.attributes.body.total", - "value": "1", - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Körper +1 (magisch)", - "tint": null, - "transfer": true - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "5DY52CR03xXJHG6m", - "name": "Plattenpanzer +3", - "type": "armor", - "img": "icons/equipment/chest/breastplate-gorget-steel.webp", - "data": { - "description": null, - "quantity": 1, - "price": 6300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "effects": [ - { - "_id": "wz2krJzwVba18XvV", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": "3", - "mode": 2 - } - ], - "duration": { - "startTime": null - }, - "label": "Panzerung +3 (magisch)", - "transfer": true, - "disabled": false - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "5KxdKllRXuau0Uhm", - "name": "Breitschwert", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 8, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/swords/sword-broad-worn.webp", - "effects": [] - }, - { - "_id": "5MrsKOS4sAxpMv2U", - "name": "Lanze +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", - "quantity": 1, - "price": 1752, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/polearms/spear-flared-blue.webp", - "effects": [ - { - "_id": "iLA1AQrTlmA0BFnC", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Immertreff", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Ein tödlicher Langbogen +2 mit Fieser Schuss +II und Scharfschütze +II.

\n

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 10660, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/bows/longbow-gold-pink.webp", - "effects": [ - { - "_id": "XsqzwEX1AvYJyczG", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "iUXn0CQKZw6Rr1yH", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ], - "_id": "5cqP2SvMe5j0BD3t" - }, - { - "_id": "60MhQmXh0c2cT5nx", - "name": "Lederpanzer", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 4, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-banded-leather-brown.webp", - "effects": [] - }, - { - "_id": "6QehiJpVqqA9bW3P", - "name": "Hammer +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/hammers/shorthammer-double-steel-embossed.webp", - "effects": [ - { - "_id": "xQlGUPOpB6Me9OgF", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Gewänder des Adlers", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese hellbeige, mit Adlerfedern verzierte Lederrüstung +1 gewährt +1 auf Geist.

", - "quantity": 1, - "price": 4254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-banded-simple-leather-brown.webp", - "effects": [ - { - "_id": "CUa4rA1A1cwWac46", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - }, - { - "_id": "cl2PqWeAtDsBjz8k", - "flags": {}, - "changes": [ - { - "key": "data.attributes.mind.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Geist +1 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "6UBvjMJd6n5P5YWv" - }, - { - "_id": "6WqPqjMQMMPjV99U", - "name": "Kurzbogen +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 1256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/bows/shortbow-recurve-leather.webp", - "effects": [ - { - "_id": "zgiIGlRMVCgAzrn7", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "8iny3Tt6i6g5EcYh", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "74iFRkzvOwLxOxOq", - "name": "Trank der Lebenskraft", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-labeled-red.webp", - "data": { - "description": "

Diese meist blutroten Tränke erhöhen die Lebenskraft um W20 für W20 Stunden.

", - "quantity": 1, - "price": 500, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "7CCoTap4GzN1uSNw", - "name": "Krummschwert +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/swords/scimitar-guard-wood.webp", - "effects": [ - { - "_id": "Vg3Q9A7QIXHrABFk", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "7JCc96rbTbTSASbT", - "name": "Metallbesteck", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 4, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/cooking/fork-steel-grey.webp", - "effects": [] - }, - { - "_id": "7g4vNrJOoX0v4Byu", - "name": "Keule +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": null, - "quantity": 1, - "price": 2250.2, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/clubs/club-banded-brown.webp", - "effects": [ - { - "_id": "8y8e8BsFQZZkwUXk", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "830D1zHS3v0Gx4nB", - "name": "Schlagring +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", - "quantity": 1, - "price": 1251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/fist/fist-knuckles-spiked-stone.webp", - "effects": [ - { - "_id": "iQZLQlcUQgnYg0Hs", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Wehrpanzer", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese massive, mit Metallverzierungen verstärkte Plattenrüstung +3 verfügt sogar über einen Halspanzer und gewährt ihrem Träger zusätzlich +2 auf Abwehr.

", - "quantity": 1, - "price": 7300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-cuirass-steel-grey.webp", - "effects": [ - { - "_id": "wz2krJzwVba18XvV", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - }, - { - "_id": "TuRxuZf6QZL2OvRk", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Abwehr +2 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "83CJm0YUiYxIpcQx" - }, - { - "_id": "89ZunLlXp1Lm6Wzd", - "name": "Holzschild +1", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": null, - "quantity": 1, - "price": 2251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "flags": {}, - "img": "icons/equipment/shield/round-wooden-boss-steel-red.webp", - "effects": [ - { - "_id": "1M6yYhufFsvYsske", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "8B4biRyQ6SN0fYtl", - "name": "Krummsäbel +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/swords/scimitar-guard-red.webp", - "effects": [ - { - "_id": "muxy8RtkuaOsrY2H", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "8CYWepouh43ffkZ0", - "name": "Rauchkraut (5 Pfeifenköpfe)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/commodities/flowers/flower-green.webp", - "effects": [] - }, - { - "_id": "8YpZMXq9RhMCJOst", - "name": "Angelhaken und Schnur", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.2, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/fishing/hook-barbed-steel-brown.webp", - "effects": [] - }, - { - "_id": "8la7FJ8kpGNUWrCg", - "name": "Kurzschwert +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": null, - "quantity": 1, - "price": 1256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/swords/shortsword-green.webp", - "effects": [ - { - "_id": "CElngj6OWPpIw37j", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "99xGE9jkmXEXyf4U", - "name": "Plattenpanzer (Für Reittiere) +1", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Laufen -0,5m

", - "quantity": 1, - "price": 4400, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "flags": {}, - "img": "icons/commodities/metal/mail-plate-steel.webp", - "effects": [ - { - "_id": "pAxAXam5JBN6Acz9", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -0.5, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -0,5m", - "tint": "", - "transfer": true - }, - { - "_id": "Jkhqmke6gzWU8vPZ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "9H3CBGOLUJ5JCHGJ", - "name": "Plattenbeinschienen", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Laufen -0,5m

", - "quantity": 1, - "price": 8, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "greaves" - }, - "flags": {}, - "img": "icons/equipment/leg/pants-armored-tasset-steel.webp", - "effects": [ - { - "_id": "sIbiQW6tSjZyfCzk", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -0.5, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -0,5m", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "9MsBlnMhvAMe4zTk", - "name": "Leichte Armbrust +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 1758, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/crossbows/crossbow-simple-brown.webp", - "effects": [ - { - "_id": "gMm2PnBADqXBrCi1", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -2", - "tint": "", - "transfer": true - }, - { - "_id": "sACwF2e5qLRs6c1a", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "9NUM3H7oTfrHhFpD", - "name": "Andauernder Heiltrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-corked-pink.webp", - "data": { - "description": "

Dieses oft purpurne Getränk heilt 2W20 Runden lang 1 Lebenskraft/Runde.

", - "quantity": 1, - "price": 20, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "9PdQv9CRy4ckaF0j", - "name": "Metallhelm +2", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 3256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "helmet" - }, - "flags": {}, - "img": "icons/equipment/head/helm-barbute-engraved.webp", - "effects": [ - { - "_id": "9IOcWr1CbRpF3lya", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "9aY1zWfD5RwZlAUH", - "name": "Tee (10 Tassen)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.05, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/commodities/flowers/buds-red-green.webp", - "effects": [] - }, - { - "name": "Smaragd-Schlüssel", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

Einmal alle 24h kann man damit den Zauber Öffnen auf ein Schloss wirken.

", - "quantity": 1, - "price": null, - "availability": "unset", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/misc/key-jeweled-gold-purple.webp", - "effects": [], - "_id": "9xQRXWUYj3giHVRC" - }, - { - "name": "Mantel der Augen", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Dieser mit Augenmustern bestickte Mantel gewährt seinem Träger Wahrnehmung +III.

", - "quantity": 1, - "price": 376, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/back/cloak-collared-red.webp", - "effects": [], - "_id": "9xjica2DVZso8NIU" - }, - { - "_id": "A109X3ZiGGGiWCze", - "name": "Metallhelm +3", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 4256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "helmet" - }, - "flags": {}, - "img": "icons/equipment/head/helm-barbute-engraved-steel.webp", - "effects": [ - { - "_id": "vhwepr5mHZHWDkCf", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "A6hSQX9cPpoWHiOh", - "name": "Lederpanzer +3", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 4254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-layered-leather-studded.webp", - "effects": [ - { - "_id": "pYb7mMRhc5KBnUJT", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Robe des Denkers", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese graue Robe +2 verleiht +1 auf Verstand.

", - "quantity": 1, - "price": 3251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-layered-white.webp", - "effects": [ - { - "_id": "0GJ943ZfeGKcsb2l", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - }, - { - "_id": "Fyl7VFU1QhIbh2ul", - "flags": {}, - "changes": [ - { - "key": "data.traits.intellect.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "+1 Verstand (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "A9QnXaonGzuUBktX" - }, - { - "_id": "ABxdFjBvQWavQsEk", - "name": "Plattenpanzer +1", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Laufen -0,5m

", - "quantity": 1, - "price": 4300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-layered-steel-green.webp", - "effects": [ - { - "_id": "pAxAXam5JBN6Acz9", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -0.5, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -0,5m", - "tint": "", - "transfer": true - }, - { - "_id": "CXouU4P0kZYU6oXR", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Rüstung des Spähers", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese mit braunen Lederpolstern verstärkte Kettenrüstung +1 gewährt ihrem Träger +1 auf Agilität.

", - "quantity": 1, - "price": 5260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "C7jqj8julpambLpm", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - }, - { - "_id": "1swDTN9Kj7othjdB", - "flags": {}, - "changes": [ - { - "key": "data.attributes.mobility.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Agilität +1 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "Akhijp2Wayupy1qw" - }, - { - "name": "Fliegender Teppich", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

Ein legendärer Gegenstand aus den heißen Wüstenlanden, in den die Zauber Fliegen und Spurt eingebettet sind. Die Zauber wirken permanent auf denjenigen, der in der Mitte des Teppichs sitzt. Proben auf Zaubern sind nicht erforderlich.

", - "quantity": 1, - "price": 4340, - "availability": "unset", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/commodities/cloth/cloth-patterned-orange.webp", - "effects": [], - "_id": "AlmkanwZXY9UxMUD" - }, - { - "_id": "Aw9aoumlI69gYv75", - "name": "Lederschienen +3", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

An Arm & Bein

", - "quantity": 1, - "price": 4254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "vambraceGreaves" - }, - "flags": {}, - "img": "icons/equipment/wrist/bracer-banded-leather-black.webp", - "effects": [ - { - "_id": "LE8TRjZF13O6kDB8", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "BeXHrv1TQzgfV6Mc", - "name": "Umhängetasche", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/bags/pack-leather-embossed-brown.webp", - "effects": [] - }, - { - "_id": "BrsnuGuOEfolt9VV", - "name": "Flegel +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative -2

", - "quantity": 1, - "price": 2758, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/maces/flail-studded-grey.webp", - "effects": [ - { - "_id": "yXvt3CT4FbXYjIfc", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - }, - { - "_id": "98YoU1PGqcSm47Zw", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "C2ggZE3ifOXlonkj", - "name": "Laternenöl (brennt 4h)", - "type": "loot", - "img": "icons/containers/kitchenware/vase-clay-cracked-white.webp", - "data": { - "description": "", - "quantity": 1, - "price": 0.05, - "availability": "hamlet", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "CHRqMQxkgz3jad9J", - "name": "Schlagring +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", - "quantity": 1, - "price": 1751, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/fist/fist-knuckles-brass.webp", - "effects": [ - { - "_id": "K3m0tLhoW9vT6e19", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Blutrüstung", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

In diese rotgefärbte Plattenrüstung +1 ist das Talent Verletzen +I eingebettet.

\n

Laufen -0,5m

", - "quantity": 1, - "price": 5300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-rivited-red.webp", - "effects": [ - { - "_id": "pAxAXam5JBN6Acz9", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -0.5, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -0,5m", - "tint": "", - "transfer": true - }, - { - "_id": "CXouU4P0kZYU6oXR", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ], - "_id": "CQZtlL8zUdOVUVrU" - }, - { - "_id": "CsUnbnytOapKsjuW", - "name": "Kartenspiel", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/gaming/playing-cards-black.webp", - "effects": [] - }, - { - "_id": "D4aCfCqniMSQ43hL", - "name": "Plattenpanzer (Für Reittiere)", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Laufen -1m

", - "quantity": 1, - "price": 150, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "flags": {}, - "img": "icons/commodities/metal/mail-plate-steel.webp", - "effects": [ - { - "_id": "pAxAXam5JBN6Acz9", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -1m", - "tint": "", - "transfer": true - } - ] - }, - { - "name": "Wolfsmantel", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese Lederrüstung aus Wolfspelz verleiht ihrem Träger +3 auf sämtliche Bemerken-Proben. Ein ausgenommener Wolfskopf bildet die Kapuze.

", - "quantity": 1, - "price": 1004, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/shirt-simple-grey.webp", - "effects": [], - "_id": "D7MaTfapKAeO5TRs" - }, - { - "_id": "DRClmtZNGGYtritZ", - "name": "Kettenpanzer +3", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 5260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "BKpvNVwaSovtKyRB", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "DS11ssHOcZTdZiLK", - "name": "Lanze", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Nur im Trab (WB +1) oder Galopp (WB +4), Zerbricht bei Schlagen-Patzer

", - "quantity": 1, - "price": 2, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": null, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/polearms/spear-simple-engraved.webp", - "effects": [] - }, - { - "_id": "Dg8qq9n5FFxZG68k", - "name": "Langschwert +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 2757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/swords/sword-guard-engraved.webp", - "effects": [ - { - "_id": "DSf5BV955w2hKZuf", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "ETpbN0Q39eKPmWK0", - "name": "Schleuder", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Distanzmalus -1 pro 2m

", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/slings/slingshot-wood.webp", - "effects": [] - }, - { - "name": "Schwebenamulett", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Der Zauber Schweben wurde in dieses Amulett gebettet.

", - "quantity": 1, - "price": 1515, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/neck/amulet-moth-gold-green.webp", - "effects": [], - "_id": "ElUWNqUWZB4dH3QS" - }, - { - "_id": "EwjFWRaLhR33wP92", - "name": "Langbogen +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 10, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/bows/bow-ornamental-silver-black.webp", - "effects": [ - { - "_id": "XsqzwEX1AvYJyczG", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "zQsujP8ZT0cwdtqk", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "F1XnlA28XCnT7Y0V", - "name": "Kurzschwert +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": null, - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/swords/shortsword-guard-gold-red.webp", - "effects": [ - { - "_id": "FZMhm4De8EXj7dBZ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "FFCSMuHlDKiT0MxR", - "name": "Robe +1", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 1251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-layered-white.webp", - "effects": [ - { - "_id": "JjEEDD1H1NvKF1Vr", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "FKg3YI1EtiNfDcYO", - "name": "Metallschild +3", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": null, - "quantity": 1, - "price": 4258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "flags": {}, - "img": "icons/equipment/shield/heater-steel-spiral.webp", - "effects": [ - { - "_id": "KZBNNdOmSqFkXC0X", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "FPriMnCQK7DQHzJa", - "name": "Karren (2 Räder)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 15, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/commodities/wood/wood-wheel-brown.webp", - "effects": [] - }, - { - "_id": "FVnS20q8S7LrAdFj", - "name": "Plattenbeinschienen +2", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 3258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "greaves" - }, - "flags": {}, - "img": "icons/equipment/leg/cuisses-reticulated-black.webp", - "effects": [ - { - "_id": "Zw9tFdr75QWyt8lO", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Söldnertreu", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese mit blauen Stoffrändern gesäumte Kettenrüstung +1 gewährt ihrem Träger +1 auf Schlagen.

", - "quantity": 1, - "price": 3760, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "C7jqj8julpambLpm", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - }, - { - "_id": "qTM84JzHmlfYXGCb", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.meleeAttack.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Schlagen +1 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "FVrbrxqVURPP3Yee" - }, - { - "_id": "FbfsU0H1E7wCxm0q", - "name": "Krummsäbel", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/swords/scimitar-worn-blue.webp", - "effects": [] - }, - { - "_id": "FfVzLWtmCVRwFI4n", - "name": "Hammer +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1.257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/hammers/shorthammer-double-steel.webp", - "effects": [ - { - "_id": "rqEqNTsSgoto2la8", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "Fl2OHl2zMi281SbE", - "name": "Dolch", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative +1

", - "quantity": 1, - "price": 2, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/daggers/dagger-black.webp", - "effects": [ - { - "_id": "9jtH6ER0s0I8SPyi", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "FoK7Tc7IePUpnDkL", - "name": "Dicke Reisedecke", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/survival/bedroll-tan.webp", - "effects": [] - }, - { - "_id": "GEBWsHBuyh9KbIbb", - "name": "Schleuder +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Distanzmalus -1 pro 2m

", - "quantity": 1, - "price": 750.1, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/slings/slingshot-wood.webp", - "effects": [ - { - "_id": "YCgrTPMCggWZOFdJ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "GG7o5XbvBmmauzIw", - "name": "Keule +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": null, - "quantity": 1, - "price": 1750.2, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/clubs/club-barbed-engraved-brown.webp", - "effects": [ - { - "_id": "a8zW4tAcGbak3nno", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "GJdez2VgLxwzlZAQ", - "name": "Schwere Armbrust", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 15, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/crossbows/crossbow-heavy-black.webp", - "effects": [ - { - "_id": "N4vxVFNLW9Q9QsIp", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -4", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "GgWdEi4yyPb1wqYn", - "name": "Lederschienen", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

An Arm & Bein

", - "quantity": 1, - "price": 4, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "vambraceGreaves" - }, - "flags": {}, - "img": "icons/equipment/wrist/bracer-simple-leather.webp", - "effects": [] - }, - { - "_id": "GgYd2UCD2Juq7EUF", - "name": "Lederpanzer +1", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 2254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-collared-leather-brown.webp", - "effects": [ - { - "_id": "CUa4rA1A1cwWac46", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "HIfMiFd0ZbqE3VKt", - "name": "Verbandszeug", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

Verschnaufen +1 oder natürliches Heilergebnis +1

", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/commodities/cloth/cloth-roll-worn-tan.webp", - "effects": [] - }, - { - "_id": "HNHMmE4wNi0iXIjO", - "name": "Speer +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": null, - "quantity": 1, - "price": 2251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/polearms/spear-hooked-double-jeweled.webp", - "effects": [ - { - "_id": "YUzHa2B8n4yYyWyY", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "HcN322i9KLPzp1d4", - "name": "Kampfstab +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Zielzaubern +1

", - "quantity": 1, - "price": 1750.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/staves/staff-simple-carved.webp", - "effects": [ - { - "_id": "1aNTAQBai6qAcWGM", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.targetedSpellcasting.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Zielzaubern +1", - "tint": "", - "transfer": true - }, - { - "_id": "7AIeGsBF1gYX7cSX", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "Hna91ve4yx84u7zJ", - "name": "Lederschienen +1", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

An Arm & Bein

", - "quantity": 1, - "price": 2254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "vambraceGreaves" - }, - "flags": {}, - "img": "icons/equipment/wrist/bracer-simple-leather-steel.webp", - "effects": [ - { - "_id": "KL8cnKi5NITkDENS", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "HzqK6sd3ovgEZdWz", - "name": "Rucksack", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 2, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/bags/pack-leather-white-tan.webp", - "effects": [] - }, - { - "name": "Aderschlitz", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Ein magischer Dolch +2 mit Aderschlitzer +III.

\n

Initiative +1

", - "quantity": 1, - "price": 7252, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/daggers/dagger-bone-barbed.webp", - "effects": [ - { - "_id": "9jtH6ER0s0I8SPyi", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "oxrYsZM08ENZAhge", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ], - "_id": "IHKj37AVchphOWGZ" - }, - { - "_id": "Idj6BxduoI3v4u9A", - "name": "Streitaxt +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-double-black.webp", - "effects": [ - { - "_id": "DPS3CaNXapsBzzsj", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - }, - { - "_id": "iImvUwfo7IRqnmVv", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "IfvOtBwOEYLPPvJK", - "name": "Speer +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": null, - "quantity": 1, - "price": 1751, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/polearms/spear-hooked-double-engraved.webp", - "effects": [ - { - "_id": "Kk9b3biK0mISYf75", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "J7d2zx4kqKEdMR1j", - "name": "Holzschild", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": "

Zerbricht bei einem Abwehr-Patzer

", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "flags": {}, - "img": "icons/equipment/shield/round-wooden-boss-steel-brown.webp", - "effects": [] - }, - { - "_id": "JG18wEtysl2m6sWq", - "name": "Kampfstab +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Zielzaubern +1

", - "quantity": 1, - "price": 2250.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/staves/staff-ornate.webp", - "effects": [ - { - "_id": "1aNTAQBai6qAcWGM", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.targetedSpellcasting.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Zielzaubern +1", - "tint": "", - "transfer": true - }, - { - "_id": "jMu0Mqf6qy2Df8vI", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "JUTPfEGHEEwpeLvv", - "name": "Lederpanzer +2", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 3254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-layered-leather-studded-black.webp", - "effects": [ - { - "_id": "5vJF9ck6rDsBPnKl", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "JZDsSUkQGVf0aOjH", - "name": "Flegel +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative -2

", - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/maces/flail-spiked-grey.webp", - "effects": [ - { - "_id": "yXvt3CT4FbXYjIfc", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - }, - { - "_id": "PD6vgViNBP4QaxMK", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "JZkzRagRS8TKZplw", - "name": "Zwergenaxt +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -1

", - "quantity": 1, - "price": 2310, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-double-engraved-runes.webp", - "effects": [ - { - "_id": "Ytio5tOcCUO91MQ0", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -1", - "transfer": true - }, - { - "_id": "armx56Psy1qosJib", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "JjM6nTZzV28ioIFq", - "name": "Feuerstein & Zunder", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.05, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/commodities/stone/geode-raw-white.webp", - "effects": [] - }, - { - "_id": "JlcYB53S1wQRfmUG", - "name": "Stärketrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-stopper-yellow.webp", - "data": { - "description": "

Dieser nach Schweiß riechende Trank verdoppelt ST für ST in Runden.

", - "quantity": 1, - "price": 150, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "name": "Skrupelloser Bogen", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Ein Kurzbogen +1 mit Kleiner Terror, der Feinde angeblich immer in den Rücken trifft.

\n

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 2006, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/bows/shortbow-recurve-red.webp", - "effects": [ - { - "_id": "zgiIGlRMVCgAzrn7", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "8iny3Tt6i6g5EcYh", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ], - "_id": "K4fd3AlpMoK1EZeg" - }, - { - "name": "Robe der Macht", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese violette Robe +3 verleiht ihrem Träger +1 auf Geist.

", - "quantity": 1, - "price": 5251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-collared-pink.webp", - "effects": [ - { - "_id": "Qpy3XcHOokbU7ZaS", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - }, - { - "_id": "tGAxxMZu2cj0Pzs2", - "flags": {}, - "changes": [ - { - "key": "data.attributes.mind.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Geist +1 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "KGk7UFwLwrsdPuQe" - }, - { - "_id": "KJsCiqvtPqjyu65Y", - "name": "Plattenbeinschienen +1", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "greaves" - }, - "flags": {}, - "img": "icons/equipment/leg/cuisses-reticulated-steel.webp", - "effects": [ - { - "_id": "I32OnPe7rgPEHtEk", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "KOdzXkLHuNkCciAa", - "name": "Bihänder", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 10, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -4 - }, - "flags": {}, - "img": "icons/weapons/swords/greatsword-guard.webp", - "effects": [ - { - "_id": "DaKTtdhRO45QZuDJ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -2", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "KefO4lxHxwddpFFu", - "name": "Holzschild +3", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": null, - "quantity": 1, - "price": 4251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "flags": {}, - "img": "icons/equipment/shield/round-wooden-boss-gold-brown.webp", - "effects": [ - { - "_id": "AkDi2TNzgpT2ZfrH", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "KyhMB9Jn8Vaxs4eF", - "name": "Axt +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/axes/shortaxe-yellow.webp", - "effects": [ - { - "_id": "yaR4SKssj8gYJB91", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "L2ZE2l98snBZw5DZ", - "name": "Federkiel", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/scribal/ink-quill-pink.webp", - "effects": [] - }, - { - "_id": "LAI81qZlbkr7MlGY", - "name": "Verkleinerungstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-corked-yellow.webp", - "data": { - "description": "

Verkleinert den Trinkenden auf ein Zehntel seiner normalen Größe für W20 Minuten. KÖR, ST und HÄ werden solange halbiert und die Kampfwerte entsprechend angepasst.

", - "quantity": 1, - "price": 100, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "Li5rC0lvytKRAc31", - "name": "Turmschild +2", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": null, - "quantity": 1, - "price": 4265, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2 - }, - "flags": {}, - "img": "icons/equipment/shield/heater-steel-gold.webp", - "effects": [ - { - "_id": "yfHGGfxxGvmHG6b9", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "LoY2CnEEWfxbvjEt", - "name": "Zaubertrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-pear-corked-pink.webp", - "data": { - "description": "

Erhöht die Werte von Zaubern und Zielzauber für die Dauer eines Kampfes um +1.

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "MO1ga2aLjjkBZRzt", - "name": "Kurzschwert +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": null, - "quantity": 1, - "price": 1756, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/swords/shortsword-guard-silver.webp", - "effects": [ - { - "_id": "qkDy1MWD6Fkk97e6", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "N3RcggWJuKGtKZyP", - "name": "Schlachtbeil +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2770, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-battle-blackened.webp", - "effects": [ - { - "_id": "atmWPMxgNoeole7n", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -6, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -6", - "transfer": true - }, - { - "_id": "aHr33jsfG78BJ7m2", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "NHV9ho8tGutv0mrS", - "name": "Zwergenaxt +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -1

", - "quantity": 1, - "price": 2810, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -4 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-double-engraved-black.webp", - "effects": [ - { - "_id": "Ytio5tOcCUO91MQ0", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -1", - "transfer": true - }, - { - "_id": "WsibIQWwcjabH8QS", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "NMmZ3Uu9uwAHc5IP", - "name": "Schwere Armbrust +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 2765, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 5, - "opponentDefense": -4 - }, - "flags": {}, - "img": "icons/weapons/crossbows/crossbow-blue.webp", - "effects": [ - { - "_id": "N4vxVFNLW9Q9QsIp", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -4", - "tint": "", - "transfer": true - }, - { - "_id": "sOBnfFviucXKykt1", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "NSg4SdEHDuCfwXji", - "name": "Robe +2", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 2251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-layered-red.webp", - "effects": [ - { - "_id": "0GJ943ZfeGKcsb2l", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "NZPp8EGEg1JmXdNd", - "name": "Abklingtrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-corked-blue.webp", - "data": { - "description": "

Diese meist hellblauen Tränke halbieren (abrunden) die Abklingzeit aller Zauber für die Dauer eines Kampfes.

", - "quantity": 1, - "price": 50, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "Nb65CmtFiiWPpnNZ", - "name": "Schlachtbeil +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 3770, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 7, - "opponentDefense": -7 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-battle-heavy-black.webp", - "effects": [ - { - "_id": "atmWPMxgNoeole7n", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -6, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -6", - "transfer": true - }, - { - "_id": "DJQ1hHJRJuraxIym", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "Nz6gFGSHzHVO3QxA", - "name": "Breitschwert +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/swords/sword-broad-red.webp", - "effects": [ - { - "_id": "M7zvcLqDr9HuzqTV", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "OZU7ietSpnivKPVt", - "name": "Schwebentrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-bulb-corked-green.webp", - "data": { - "description": "

Dieses meist grünliche Getränk wirkt den Zauber Schweben (Probenwert 20; Patzer ausgeschlossen).

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "name": "Elfenstiefel", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Diese bequemen Stiefel erhöhen den Laufen-Wert um 1.

", - "quantity": 1, - "price": 1251.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/feet/boots-leather-green.webp", - "effects": [ - { - "_id": "mdjigDqsRTZyFNmC", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen +1 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "OaG6IhVfS6EmHRux" - }, - { - "_id": "OvxWaEJrElas3EUL", - "name": "Waffenlos", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 5 - }, - "flags": {}, - "img": "icons/equipment/hand/gauntlet-tooled-leather-brown.webp", - "effects": [] - }, - { - "name": "Elfischer Tarnumhang", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Dieser Umhang, in den Feengarn eingewebt wurde, verleiht zusätzlich zu seiner eingebetteten Heimlichkeit +III auf Verbergen-Proben +3.

", - "quantity": 1, - "price": 875.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/back/cloak-collared-leaves-green.webp", - "effects": [], - "_id": "PE3eWmsGcd5dVVh4" - }, - { - "name": "Stahlflamme", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Dieses Langschwert +1 mit Flammenklinge kam schon in vielen Kriegen zum Einsatz.

", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/swords/sword-guard-red.webp", - "effects": [ - { - "_id": "l7qeGLLyuz7VXAAd", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ], - "_id": "PPNAghq5SEhO1zNM" - }, - { - "name": "Kristallkugel", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

Der Zauber Spionage ist in diese äußerst zerbrechliche Kugel eingebettet.

", - "quantity": 1, - "price": 1485, - "availability": "unset", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/laboratory/alembic-glass-ball-blue.webp", - "effects": [], - "_id": "PQfSHYKxPqia6nG3" - }, - { - "_id": "PTiDNLKc0l9rD7Kb", - "name": "Axt +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1756, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/axes/shortaxe-hammer-steel.webp", - "effects": [ - { - "_id": "8wzWUlPPd92HiwJs", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "PihP9eVyE4UEi1jj", - "name": "Leichte Armbrust +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/crossbows/crossbow-simple-black.webp", - "effects": [ - { - "_id": "gMm2PnBADqXBrCi1", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -2", - "tint": "", - "transfer": true - }, - { - "_id": "63yxBIQ4ZvuvtVsV", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "Q61SvqiQUoVfU99X", - "name": "Fackel", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Brennt 2h

", - "quantity": 1, - "price": 0.01, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/sundries/lights/torch-black.webp", - "effects": [] - }, - { - "_id": "QNDLfvjiv9szUTYT", - "name": "Morgenstern", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/maces/mace-flanged-steel.webp", - "effects": [] - }, - { - "_id": "QNJVRtALi17otgDU", - "name": "Lederpanzer (Für Reittiere) +2", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 3262, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/commodities/leather/leather-leaf-tan.webp", - "effects": [ - { - "_id": "9qPThLRf5cwflety", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Feindfeger", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Unscheinbar aussehender Bihänder +2 mit Rundumschlag +II.

\n

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 9760, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -6 - }, - "flags": {}, - "img": "icons/weapons/swords/greatsword-crossguard-steel.webp", - "effects": [ - { - "_id": "DaKTtdhRO45QZuDJ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -2", - "tint": "", - "transfer": true - }, - { - "_id": "0GrRl4XU2UrvbDxs", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ], - "_id": "QhJllncFlQu7BGDw" - }, - { - "_id": "QmyAtIDJfnBZvZFg", - "name": "Bihänder +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2760, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -6 - }, - "flags": {}, - "img": "icons/weapons/swords/greatsword-guard-jewel-green.webp", - "effects": [ - { - "_id": "DaKTtdhRO45QZuDJ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -2", - "tint": "", - "transfer": true - }, - { - "_id": "0GrRl4XU2UrvbDxs", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "Qncx0jbmnD2KJAfG", - "name": "Schlachtbeil +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 3270, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -6 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-battle-engraved-purple.webp", - "effects": [ - { - "_id": "atmWPMxgNoeole7n", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -6, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -6", - "transfer": true - }, - { - "_id": "Qdjy0578meoXi49p", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "QrGtd0N6cChddyG2", - "name": "Brennholz (Bündel)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.01, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/commodities/wood/kindling-sticks-brown.webp", - "effects": [] - }, - { - "_id": "QsnvAep80sSVJToD", - "name": "Kurzbogen", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/bows/shortbow-leather.webp", - "effects": [ - { - "_id": "zgiIGlRMVCgAzrn7", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "R1cxU1hzcLopZwhA", - "name": "Krummsäbel +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/swords/scimitar-guard.webp", - "effects": [ - { - "_id": "uYIt59oaCKobgftJ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "R2LeIutCjDzwGwUx", - "name": "Sanduhr", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 10, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/navigation/hourglass-grey.webp", - "effects": [] - }, - { - "_id": "RD0HKxmbhfluw73R", - "name": "Sack", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.8, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/bags/sack-simple-brown.webp", - "effects": [] - }, - { - "name": "Orkspalter", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Eine alte, legendäre Zwergenaxt +1 mit Brutaler Hieb +II.

\n

Zweihändig, Initiative -1

", - "quantity": 1, - "price": 4310, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-double-engraved-runes.webp", - "effects": [ - { - "_id": "Ytio5tOcCUO91MQ0", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -1", - "transfer": true - }, - { - "_id": "armx56Psy1qosJib", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ], - "_id": "RGyfv3y0LxHORAzA" - }, - { - "_id": "RKKhoedvylYWFBN3", - "name": "Kurzbogen +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/bows/shortbow-recurve-blue.webp", - "effects": [ - { - "_id": "zgiIGlRMVCgAzrn7", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "OQr5POyJ0Azklftu", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "RWSRxi9np1UrEi7N", - "name": "Schwere Armbrust +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 3265, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 6, - "opponentDefense": -5 - }, - "flags": {}, - "img": "icons/weapons/crossbows/crossbow-ornamental-black.webp", - "effects": [ - { - "_id": "N4vxVFNLW9Q9QsIp", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -4", - "tint": "", - "transfer": true - }, - { - "_id": "SlJV88ZHTV0VORzk", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "RlA4PIa9hnsqoqFi", - "name": "Verjüngungstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-tube-corked-orange.webp", - "data": { - "description": "

Der Trinkende wird augenblicklich W20 Jahre jünger.

", - "quantity": 1, - "price": 5000, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "RoXGTPdisjn6AdYK", - "name": "Weihwasser (1/2 Liter)", - "type": "loot", - "img": "icons/consumables/potions/bottle-conical-corked-labeled-shell-cyan.webp", - "data": { - "description": null, - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "RsKimH7snoPFlg4L", - "name": "Plattenarmschienen", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Laufen -0,5m

", - "quantity": 1, - "price": 7, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "vambrace" - }, - "flags": {}, - "img": "icons/equipment/wrist/bracer-armored-steel.webp", - "effects": [ - { - "_id": "DxcTuYT1mUpj9RdQ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -0.5, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -0,5m", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "Ryv745YriIZNKXG5", - "name": "Großer Schutztrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-conical-corked-tied-blue.webp", - "data": { - "description": "

Erhöht für W20 Runden die Abwehr um +3.

", - "quantity": 1, - "price": 100, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "S0EV25lf5TbN6COJ", - "name": "Schwere Armbrust +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 2265, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/crossbows/crossbow-loaded-black.webp", - "effects": [ - { - "_id": "N4vxVFNLW9Q9QsIp", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -4", - "tint": "", - "transfer": true - }, - { - "_id": "ZBJldrSO6rRHmgnI", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "S204KfhmoRdMDVpZ", - "name": "Wachskerze (brennt 10h)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.02, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/lights/candle-unlit-tan.webp", - "effects": [] - }, - { - "_id": "S4pc70BxmRU0DCsW", - "name": "Schleuder +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Distanzmalus -1 pro 2m

", - "quantity": 1, - "price": 1750.1, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/slings/slingshot-wood.webp", - "effects": [ - { - "_id": "kM7ZknhuQS8uIJbu", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "SIE4g3gjSkqVIT6W", - "name": "Streitkolben +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/maces/mace-spiked-wood-grey.webp", - "effects": [ - { - "_id": "Qg9niqX5oimvg2Fv", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "SLmQz2B4JvywROCv", - "name": "Flegel", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative -2

", - "quantity": 1, - "price": 8, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/maces/flail-ball-grey.webp", - "effects": [ - { - "_id": "yXvt3CT4FbXYjIfc", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - } - ] - }, - { - "_id": "Sj1iVgklsdFtLq8M", - "name": "Kurzschwert", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": null, - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/swords/shortsword-guard-brass.webp", - "effects": [] - }, - { - "_id": "Sks4O3NpwOWQIrIa", - "name": "Schloss: Meisterartbeit (SW: 8)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 50, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", - "effects": [] - }, - { - "_id": "TBrsx86DgKfq9Qat", - "name": "Plattenpanzer (Für Reittiere) +3", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 6400, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "flags": {}, - "img": "icons/commodities/metal/mail-plate-steel.webp", - "effects": [ - { - "_id": "ioazIqWWKawYuPBQ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "TQhwV1dNYfy50y6k", - "name": "Breitschwert +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1758, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -4 - }, - "flags": {}, - "img": "icons/weapons/swords/shortsword-broad-blue.webp", - "effects": [ - { - "_id": "g8ZgARGCbMxsnFJe", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "TSoSy8ck9XCUa1SM", - "name": "Morgenstern +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/maces/mace-round-spiked-grey.webp", - "effects": [ - { - "_id": "fZ3VByauGosUUN3D", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "TcyE0faEebPLoLOD", - "name": "Kettenpanzer +1", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 3260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "C7jqj8julpambLpm", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "TjB6AWIwGY5Q8xln", - "name": "Dietrich", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/hand/lockpicks-steel-grey.webp", - "effects": [] - }, - { - "_id": "Tlfjrxlm9NpmVR0L", - "name": "Schnelligkeitstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-fancy-orange.webp", - "data": { - "description": "

Für W20 Runden erhöht sich der Laufen- Wert des Trinkenden um 100%.

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "Trl2ljtHi1kRYHTX", - "name": "Streitkolben +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/maces/mace-studded-steel.webp", - "effects": [ - { - "_id": "PeyncDD5OoPJkkTO", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "Tu0Mf3Qib68wxpRs", - "name": "Zwergenaxt +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -1

", - "quantity": 1, - "price": 3310, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -5 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-double-engraved-blue.webp", - "effects": [ - { - "_id": "Ytio5tOcCUO91MQ0", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -1", - "transfer": true - }, - { - "_id": "ulhp9EsUM5Tf0iCd", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "U89qHZqIfVM8xvaJ", - "name": "Tagesration (3 Mahlzeiten)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/cooking/can.webp", - "effects": [] - }, - { - "_id": "U8iwfv7oJNl8CsKK", - "name": "Runenbestickte Robe +3", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Aura +1

", - "quantity": 1, - "price": 3258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-collared-pink.webp", - "effects": [ - { - "_id": "vgJWV95OeyzrjyFw", - "flags": {}, - "changes": [ - { - "key": "data.traits.aura.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Aura +1", - "tint": "", - "transfer": true - }, - { - "_id": "CFyX5reV96JVL2Cg", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Schlafstaub", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

Wirkt auf ein beworfenes Ziel den Zauber Einschläfern.

", - "quantity": 1, - "price": 151, - "availability": "unset", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/laboratory/bowl-powder-purple.webp", - "effects": [], - "_id": "UBH03jh91dP6KMtL" - }, - { - "_id": "UNd96UN0NQo8I0SI", - "name": "Turmschild +3", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": null, - "quantity": 1, - "price": 5265, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2 - }, - "flags": {}, - "img": "icons/equipment/shield/heater-embossed-gold.webp", - "effects": [ - { - "_id": "ZXSBIh1UotdZuHbj", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Satteltasche", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 4, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/bags/pouch-simple-leather-tan.webp", - "effects": [], - "_id": "UpkQTtuxNS1eOIRu" - }, - { - "name": "Elfischer Sattel", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

In diesen äußerst fein gearbeiteten Sattel ist Reiten +I eingebettet.

", - "quantity": 1, - "price": 505, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/commodities/leather/leather-studded-tan.webp", - "effects": [], - "_id": "V3D7u9LDumvBwJQI" - }, - { - "_id": "V6ywiDBc1Son1XrQ", - "name": "Fliegentrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-conical-corked-yellow.webp", - "data": { - "description": "

Dieser oft gelbe Trank wirkt auf den Trinker den Zauber Fliegen (Probenwert 20; Patzer ausgeschlossen).

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "name": "Armreif des Bogners", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Verleiht auf Schießen-Proben mit Bögen einen Bonus von +2.

", - "quantity": 1, - "price": 1260, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/wrist/bracer-belted-leather-brown.webp", - "effects": [], - "_id": "VJftG703v7db0Cqf" - }, - { - "_id": "VQtcpPYhzifN9Lqr", - "name": "Plattenarmschienen +2", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 3257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "vambrace" - }, - "flags": {}, - "img": "icons/equipment/wrist/bracer-armored-steel-worn.webp", - "effects": [ - { - "_id": "pPtRJMUFA3gbNZXx", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "Van6Sze8TZl8Y88o", - "name": "Zelt (2 Mann)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 4, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/environment/settlement/tent.webp", - "effects": [] - }, - { - "name": "Kette der Regeneration", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Diese schlichte Silberkette heilt in jeder Kamfprunde 1 LK.

", - "quantity": 1, - "price": null, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/neck/choker-chain-thick-silver.webp", - "effects": [], - "_id": "VfjAtfQv5Ga8hoHu" - }, - { - "_id": "VxyrCBfVdbRD5nj8", - "name": "Wurfmesser +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Distanzmalus -1 pro 2m

", - "quantity": 1, - "price": 1752, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/thrown/dagger-ringed-blue.webp", - "effects": [ - { - "_id": "hQfQjfXJhE4yDXQU", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "W2dHT0OENc5kNwnZ", - "name": "Konzentrationstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-white.webp", - "data": { - "description": "

Dieser oft graue Trank verdoppelt GEI für GEI in Runden.

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "WP62N2sjGz3eIN18", - "name": "Robe", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-layered-teal.webp", - "effects": [] - }, - { - "_id": "WiW9Sad1D2HjkNMz", - "name": "Langbogen +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2760, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/bows/bow-recurve-black.webp", - "effects": [ - { - "_id": "XsqzwEX1AvYJyczG", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "B6tNz4B208qZf3JU", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "Wjcv3WZW3j4jg9XY", - "name": "Vergrößerungstrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-bulb-corked-purple.webp", - "data": { - "description": "

Vergrößert den Trinkenden auf das Doppelte seiner normalen Größe für W20/2 Minuten. KÖR, ST und HÄ werden verdoppelt und die Kampfwerte entsprechend angepasst.

", - "quantity": 1, - "price": 1000, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "XBCdDIpdR1weOhiy", - "name": "Plattenarmschienen +1", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "vambrace" - }, - "flags": {}, - "img": "icons/equipment/wrist/bracer-armored-steel-white.webp", - "effects": [ - { - "_id": "IwrLITAgM3vLzkwA", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "XSXEDiMN27cuEoOx", - "name": "Leichte Armbrust +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2758, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/crossbows/crossbow-purple.webp", - "effects": [ - { - "_id": "gMm2PnBADqXBrCi1", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -2", - "tint": "", - "transfer": true - }, - { - "_id": "z2uPOzDQ47VbWmt5", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "XiW3k793840i0rdo", - "name": "Schutztrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-pear-corked-blue.webp", - "data": { - "description": "

Erhöht für W20 Runden die Abwehr um +2.

", - "quantity": 1, - "price": 50, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "XyDt7MThnLkDCldV", - "name": "Metallschild +2", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": null, - "quantity": 1, - "price": 3258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "flags": {}, - "img": "icons/equipment/shield/heater-steel-sword-yellow-black.webp", - "effects": [ - { - "_id": "MidC9f4kBbIz7Z7S", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "YSl6qdVC6fDYVkFQ", - "name": "Schlachtgeißel +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", - "quantity": 1, - "price": 2766, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -6 - }, - "flags": {}, - "img": "icons/weapons/maces/flail-triple-grey.webp", - "effects": [ - { - "_id": "BdejYg7Bq6tM2ROu", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -4", - "transfer": true - }, - { - "_id": "OF7IAa9tUBoz23TD", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Kundschafterpanzer", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese mit braunen Fellschulterpolstern verzierte Kettenrüstung gewährt ihrem Träger +1 auf Bewegung.

\n

Laufen -0,5m

", - "quantity": 1, - "price": 1260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-scale-leather.webp", - "effects": [ - { - "_id": "EkJB0kpYFHRMYSgl", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -0.5, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -0,5m", - "tint": "", - "transfer": true - }, - { - "_id": "mq2ViimrfXr7sGC7", - "flags": {}, - "changes": [ - { - "key": "data.traits.agility.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Bewegung +1 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "ZLDJNdtwxbdiJOP2" - }, - { - "_id": "Zl8ZkPrwHibRYWPh", - "name": "Allsichttrank", - "type": "loot", - "img": "icons/consumables/potions/potion-vial-corked-labeled-purple.webp", - "data": { - "description": "

Für W20 Minuten kann der Trinker Magie, Unsichtbares und Verborgenes (Fallen, Geheimtüren usw.) automatisch erkennen.

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "ZyML0QPctIXK8A4c", - "name": "Laterne", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 5, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/lights/lantern-iron-yellow.webp", - "effects": [] - }, - { - "_id": "aJ9xkECmqeBUhING", - "name": "Schlagring", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", - "quantity": 1, - "price": 1, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/fist/fist-knuckles-spiked-grey.webp", - "effects": [] - }, - { - "_id": "aNGn2tplXGSikyV7", - "name": "Lederpanzer (Für Reittiere)", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 12, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/commodities/leather/leather-leaf-tan.webp", - "effects": [] - }, - { - "_id": "aUKnYWOr7Fjy9sVX", - "name": "Seil (10m)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/survival/rope-wrapped-brown.webp", - "effects": [] - }, - { - "name": "Feuerballzepter", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Ein Zepter, in das der Zauber Feuerball eingebettet wurde, dessen Aklingzeit man 2x / Tag ignorieren kann.

", - "quantity": 1, - "price": 7630, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/weapons/wands/wand-carved-fire.webp", - "effects": [], - "_id": "abxhFbHx3dzRUPt8" - }, - { - "_id": "ajO71RuOPNlINZID", - "name": "Dolch +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative +1

", - "quantity": 1, - "price": 1252, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/daggers/dagger-straight-green.webp", - "effects": [ - { - "_id": "9jtH6ER0s0I8SPyi", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "oxrYsZM08ENZAhge", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "an96cOOwr3YujKpe", - "name": "Ruderboot (2 Mann)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 25, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/nautical/steering-wheel.webp", - "effects": [] - }, - { - "_id": "bVeWMNBKPWRqrFGj", - "name": "Lanze +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", - "quantity": 1, - "price": 2252, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/polearms/spear-flared-purple.webp", - "effects": [ - { - "_id": "5CFUcYAipdyZHdde", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Kriegshorn", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Der Klang des Horns feuert die Kampfgefährten mit seinem eingebetteten Schlachtruf +I an.

", - "quantity": 1, - "price": 2750.05, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/commodities/treasure/horn-carved-banded.webp", - "effects": [], - "_id": "c3YlvFbZJD6LbhVi" - }, - { - "_id": "c6N4vskeYthnydo3", - "name": "Plattenpanzer (Für Reittiere) +2", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 5400, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "flags": {}, - "img": "icons/commodities/metal/mail-plate-steel.webp", - "effects": [ - { - "_id": "n0pBAhNqTJbvqDWx", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "cDIVsXpVltyRnhqM", - "name": "Topf", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/cooking/cauldron-empty.webp", - "effects": [] - }, - { - "_id": "cFMcSg7PFIcQvf0B", - "name": "Robe +3", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 3251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-layered-purple.webp", - "effects": [ - { - "_id": "Qpy3XcHOokbU7ZaS", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Schutzring +2", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Erhöht die Abwehr um 2, ohne dabei Panzerungsmalus zu verursachen.

", - "quantity": 1, - "price": 1252, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/finger/ring-band-engraved-scrolls-bronze.webp", - "effects": [ - { - "_id": "yH3Ujo3jKNCYI4n9", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Abwehr +2 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "cg1y2GTJRGhE9Fpy" - }, - { - "name": "Königsblut", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Durch diesen magischen Dolch +3 mit Schattenklinge, Unsichtbarkeit (Abklingzeit 1x täglich ignorierbar) sollen angeblich schon Könige gestorben sein

\n

Initiative +1

", - "quantity": 1, - "price": 17352, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/daggers/dagger-bone-engraved-black.webp", - "effects": [ - { - "_id": "9jtH6ER0s0I8SPyi", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "JLc9UYdHy4aAeqA2", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ], - "_id": "cqVt9s7u46u0925o" - }, - { - "_id": "czxph9BZaC6Cj7kM", - "name": "Morgenstern +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "flags": {}, - "img": "icons/weapons/maces/mace-round-spiked-black.webp", - "effects": [ - { - "_id": "JzKt4gdYSSlA6hSo", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "d3ixiQ3FrQndjz46", - "name": "Blendlaterne", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 8, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/lights/lantern-bullseye-signal-copper.webp", - "effects": [] - }, - { - "_id": "d4OegxLYAGpzMFsc", - "name": "Lederbecher", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/kitchenware/mug-stein-grey.webp", - "effects": [] - }, - { - "_id": "dDhfIuRomMfy2kkP", - "name": "Anhänger mit heiligem Symbol", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "village", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/neck/amulet-carved-stone-spiral.webp", - "effects": [] - }, - { - "_id": "dIA53f3kvU9JgGvg", - "name": "Bihänder +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 3260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -7 - }, - "flags": {}, - "img": "icons/weapons/swords/greatsword-guard-gem-blue.webp", - "effects": [ - { - "_id": "DaKTtdhRO45QZuDJ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -2", - "tint": "", - "transfer": true - }, - { - "_id": "n4mZBHWKSQLQcHHD", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "dMbjx675yI2F4rUg", - "name": "Langschwert +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/swords/sword-guard-embossed-green.webp", - "effects": [ - { - "_id": "l7qeGLLyuz7VXAAd", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "dUQPe5X6ka3HJLuF", - "name": "Trank der Gasgestalt", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-fancy-blue.webp", - "data": { - "description": "

Dieser meist rauchige Trank wirkt auf den Trinker den Zauber Gasgestalt (Probenwert 20; Patzer ausgeschlossen).

", - "quantity": 1, - "price": 500, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "dW8OETKY21O3GNHf", - "name": "Schloss: Solide (SW: 4)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 10, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", - "effects": [] - }, - { - "_id": "dq4wK5bmMvOfwoWH", - "name": "Kampfstab +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Zielzaubern +1

", - "quantity": 1, - "price": 1250.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/staves/staff-simple-gold.webp", - "effects": [ - { - "_id": "1aNTAQBai6qAcWGM", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.targetedSpellcasting.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Zielzaubern +1", - "tint": "", - "transfer": true - }, - { - "_id": "ve7iQmkxC6l5WmTE", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Fäustlinge der Verstümmelung", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Diese blutverschmutzten Wildlederhandschuhe gewähren ihrem Träger Brutaler Hieb +I und Verletzen +I.

", - "quantity": 1, - "price": 3050.1, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/hand/glove-tooled-leather-brown.webp", - "effects": [], - "_id": "dvVhgqCv9VDpFW0l" - }, - { - "_id": "e65AAjglKeU1txL6", - "name": "Breitschwert +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -5 - }, - "flags": {}, - "img": "icons/weapons/swords/shortsword-broad-engraved.webp", - "effects": [ - { - "_id": "BVnmaiguzsq6nSwF", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Bärenpanzer", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese mit Bärenfellen und -klauen verzierte Plattenrüstung +2 gewährt ihrem Träger Raserei +I sowie +1 auf Stärke.

", - "quantity": 1, - "price": 8800, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-layered-steel.webp", - "effects": [ - { - "_id": "uOEN4xXL3IcebbJO", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - }, - { - "_id": "dxmfRAe4ljoKdi0M", - "flags": {}, - "changes": [ - { - "key": "data.traits.strength.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Stärke +1 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "e6LetXJHUY4ndz7B" - }, - { - "_id": "eAd86Ylh42nHoCsx", - "name": "Axt", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/axes/shortaxe-worn-black.webp", - "effects": [] - }, - { - "_id": "eIXRfSsAL5ECi1uq", - "name": "Wurfmesser +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Distanzmalus -1 pro 2m

", - "quantity": 1, - "price": 1252, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/thrown/dagger-ringed-engraved-green.webp", - "effects": [ - { - "_id": "XPV4jbYeNcFVFvZr", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "eLTOIKuFGf3M9HYt", - "name": "Decke", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/survival/bedroll-worn-beige.webp", - "effects": [] - }, - { - "_id": "eMeS2JSyiRJ5xO48", - "name": "Streithammer +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 2756, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/hammers/hammer-war-rounding.webp", - "effects": [ - { - "_id": "dcGiLPK2AIDA7NHH", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -4", - "transfer": true - }, - { - "_id": "1I5R9xQlug0aSVTZ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "eMyZ5EJ9SsiXaeKK", - "name": "Streithammer +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/hammers/hammer-war-spiked-simple.webp", - "effects": [ - { - "_id": "dcGiLPK2AIDA7NHH", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -4", - "transfer": true - }, - { - "_id": "bPdVsWIS1AC54ZA8", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "eRQ9LUNWbnAuuVX6", - "name": "Allheilungstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-white.webp", - "data": { - "description": "

Von milchiger Färbung, wirkt dieser Trank den Zauber Allheilung auf den Trinkenden (keine Probe nötig).

", - "quantity": 1, - "price": 1000, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "ec2Aft0epeFhdg9B", - "name": "Bärenfalle", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

Schlagen 30

", - "quantity": 1, - "price": 10, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/environment/traps/trap-jaw-green.webp", - "effects": [] - }, - { - "_id": "egleYygLWn8IfeuF", - "name": "Metallkrug", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/kitchenware/mug-steel-wood-brown.webp", - "effects": [] - }, - { - "_id": "eqGo6VKETI1UTxP1", - "name": "Schlachtgeißel +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", - "quantity": 1, - "price": 3266, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -7 - }, - "flags": {}, - "img": "icons/weapons/maces/flail-triple-grey.webp", - "effects": [ - { - "_id": "BdejYg7Bq6tM2ROu", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -4", - "transfer": true - }, - { - "_id": "uhpIAR3T0P3bJw1C", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "esfwvMs1ffgSXjbS", - "name": "Metallhelm +1", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "helmet" - }, - "flags": {}, - "img": "icons/equipment/head/helm-barbute-rounded-steel.webp", - "effects": [ - { - "_id": "uo5922qyPvi35mhm", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "fB8GyT0S38fomHsg", - "name": "Tinte (reicht für 50 Seiten)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 2, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/scribal/ink-quill-red.webp", - "effects": [] - }, - { - "_id": "fKhTsMO4YXDYY8GX", - "name": "Metallhelm", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Initiative -1

", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "helmet" - }, - "flags": {}, - "img": "icons/equipment/head/helm-barbute-reinforced.webp", - "effects": [ - { - "_id": "wlQWjU1kXovR5G1J", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -1", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "fmFM71TpvBxYqmu2", - "name": "Streithammer", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/hammers/hammer-simple-iron.webp", - "effects": [ - { - "_id": "dcGiLPK2AIDA7NHH", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -4", - "transfer": true - } - ] - }, - { - "_id": "fmunGPk80ObkIzUl", - "name": "Langbogen", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 1760, - "availability": "city", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/bows/longbow-leather-green.webp", - "effects": [ - { - "_id": "XsqzwEX1AvYJyczG", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "fnq4WOljIoYdbsUT", - "name": "Leichte Armbrust", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 8, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": 0, - "name": " +1" - }, - "flags": {}, - "img": "icons/weapons/crossbows/crossbow-simple-purple.webp", - "effects": [ - { - "_id": "gMm2PnBADqXBrCi1", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative -2", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "fziU7tEIQPowqBJj", - "name": "Schlagring +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", - "quantity": 1, - "price": 751, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/fist/fist-knuckles-spiked-blue.webp", - "effects": [ - { - "_id": "ph5sqT08zd8lSi7s", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Runenbestickte Feurrobe", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Eine feuerrote Robe +3 mit aufgestickten Flammenrunen und Feuermagier +V.

", - "quantity": 1, - "price": 4501, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-layered-red.webp", - "effects": [ - { - "_id": "Qpy3XcHOokbU7ZaS", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ], - "_id": "gK76RPRhQF7T4AQC" - }, - { - "_id": "gVwoOpuHkmwvcUow", - "name": "Langbogen +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/bows/bow-ornamental-gold-blue.webp", - "effects": [ - { - "_id": "XsqzwEX1AvYJyczG", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "iUXn0CQKZw6Rr1yH", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "gXr3lLQmlHeDMuv5", - "name": "Wachsamkeitstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-tube-corked-labeled-cyan.webp", - "data": { - "description": "

Dieses meist klare Getränk gewährt für W20 Stunden auf alle Bemerken-Proben einen Bonus von +5.

", - "quantity": 1, - "price": 15, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "grAnIWqeXTAIGXmN", - "name": "Wurfmesser", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Distanzmalus -1 pro 2m

", - "quantity": 1, - "price": 2, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/thrown/dagger-simple.webp", - "effects": [] - }, - { - "_id": "gyfU78OLQj8qH3Zh", - "name": "Metallschild", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": "

Laufen -0,5m

", - "quantity": 1, - "price": 8, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "flags": {}, - "img": "icons/equipment/shield/heater-steel-worn.webp", - "effects": [ - { - "_id": "kDcyXkLx75K2YRCl", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -0.5, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -0,5m", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "hBemmfRcQLFU7PSt", - "name": "Schlachtgeißel +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", - "quantity": 1, - "price": 2266, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -5 - }, - "flags": {}, - "img": "icons/weapons/maces/flail-triple-grey.webp", - "effects": [ - { - "_id": "BdejYg7Bq6tM2ROu", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -4", - "transfer": true - }, - { - "_id": "oOQJt7Ub0PGGjdzW", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "hGiaAJyEUHbPl5pf", - "name": "Holzbesteck", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.2, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/cooking/fork-steel-tan.webp", - "effects": [] - }, - { - "_id": "hfxblADLXdGaRMAA", - "name": "Wurfmesser +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Distanzmalus -1 pro 2m

", - "quantity": 1, - "price": 752, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/thrown/dagger-ringed-steel.webp", - "effects": [ - { - "_id": "c2P4Qt8b6GonPFv7", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "hrAyguSjO6JhTE5m", - "name": "Glückstrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-corked-green.webp", - "data": { - "description": "

Der Trinkende kann für W20 Stunden alle Patzer ignorieren.

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "htmQWmMCQN620KrE", - "name": "Langschwert", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/swords/sword-guard-blue.webp", - "effects": [] - }, - { - "_id": "i1ZcbKzviqz0nxjV", - "name": "Langschwert +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/swords/sword-guard-purple.webp", - "effects": [ - { - "_id": "5JZ001rLJuZMJSrD", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "iGiZU77IGQQqlYFr", - "name": "Metallschild +1", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": null, - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "flags": {}, - "img": "icons/equipment/shield/heater-steel-grey.webp", - "effects": [ - { - "_id": "9xMdH6XQxlulL7wv", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "iMX7YuWPHnCnbeh8", - "name": "Talgkerze (brennt 6h)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.01, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/lights/candle-unlit-grey.webp", - "effects": [] - }, - { - "_id": "iOAmrK7t7ZyrtGy1", - "name": "Pfeife", - "type": "loot", - "img": "icons/sundries/misc/pipe-wooden-straight-brown.webp", - "data": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "iORLpplub64kuxb4", - "name": "Streithammer +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 3256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/hammers/hammer-war-spiked.webp", - "effects": [ - { - "_id": "dcGiLPK2AIDA7NHH", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -4", - "transfer": true - }, - { - "_id": "RWRk7pwQf2vs1Aqv", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "iWOrlMcGVAXTvFEg", - "name": "Holzwürfel (sechsseitig)", - "type": "loot", - "img": "icons/sundries/gaming/dice-runed-brown.webp", - "data": { - "description": "", - "quantity": 1, - "price": 0.02, - "availability": "hamlet", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "ibiHqm4rH8meeu9m", - "name": "Turmschild +1", - "permission": { - "default": 0 - }, - "type": "shield", - "data": { - "description": "

Laufen -0,5m

", - "quantity": 1, - "price": 3265, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2 - }, - "flags": {}, - "img": "icons/equipment/shield/heater-steel-engraved-lance-rest.webp", - "effects": [ - { - "_id": "ScAKi1eiWow9Y1ZZ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -0.5, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -0,5m", - "tint": "", - "transfer": true - }, - { - "_id": "TeyRcwja5lQWHICW", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "j3wcDmBNiDx7sK0n", - "name": "Runenbestickte Robe +2", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Aura +1

", - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-layered-blue.webp", - "effects": [ - { - "_id": "vgJWV95OeyzrjyFw", - "flags": {}, - "changes": [ - { - "key": "data.traits.aura.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Aura +1", - "tint": "", - "transfer": true - }, - { - "_id": "a2GXKNKHJWdyKb7h", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "jRzgvvygxk5IjXYB", - "name": "Speer +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": null, - "quantity": 1, - "price": 1251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/polearms/spear-hooked-red.webp", - "effects": [ - { - "_id": "r0XGSAypTjvBmHHC", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "jsANSjzxRPKO3AyG", - "name": "Axt +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/axes/shortaxe-black.webp", - "effects": [ - { - "_id": "wh12XwprBMtY3BTB", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Schutzring +1", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Erhöht die Abwehr um 1, ohne dabei Panzerungsmalus zu verursachen.

", - "quantity": 1, - "price": 752, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/finger/ring-band-engraved-lines-bronze.webp", - "effects": [ - { - "_id": "yH3Ujo3jKNCYI4n9", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Abwehr +1 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "kGTB9f2zPrmedHq4" - }, - { - "_id": "kIiDbrtAPno14O85", - "name": "Kampftrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-corked-orange.webp", - "data": { - "description": "

Meist von oranger Farbe erhöht solch ein Trank Schlagen und Abwehr für die Dauer eines Kampfes um +1.

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "name": "Robe des Heilers", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Eine weiße Robe, die ihrem Träger +1 auf Heilzauber gewährt.

", - "quantity": 1, - "price": 751, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-layered-white.webp", - "effects": [], - "_id": "kVRybb0knZkoJLlj" - }, - { - "name": "Unsichtbarkeitsring", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Böse Zungen behaupten, dass dieser Ring, in den Unsichtbarkeit eingebettet ist, seinen Träger zu seinem abhängigen Sklaven macht.

", - "quantity": 1, - "price": 6972, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/finger/ring-band-rounded-gold.webp", - "effects": [], - "_id": "kurEYTP9rqk8YnND" - }, - { - "name": "Grausame Axt", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Antike Axt +1 mit Verletzen +III

", - "quantity": 1, - "price": 4256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/axes/shortaxe-simple-black.webp", - "effects": [ - { - "_id": "wh12XwprBMtY3BTB", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ], - "_id": "lHlwYWlgC2iKjDFM" - }, - { - "_id": "luYRwVP5oR6cdDMQ", - "name": "Waffenweih", - "type": "loot", - "img": "icons/consumables/potions/potion-jar-capped-teal.webp", - "data": { - "description": "

Über eine Waffe geschüttet, verleiht dieser meist silberne Trank dieser für die Dauer eines Kampfes den Effekt des Zaubers Magische Waffe.

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "mjBwhnK5gf9MIdlm", - "name": "Streitkolben", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/maces/mace-spiked-steel-wood.webp", - "effects": [] - }, - { - "_id": "nH1Vfhhx2jlGoQ6i", - "name": "Berserkertrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-flask-fumes-purple.webp", - "data": { - "description": "

Dieses von verrückten Orkschamanen entwickelte, dampfende Getränk heilt drei Kampfrunden jeweils W20 Lebenskraft. In der vierten Runde explodiert der Trinker und verursacht in 2m Radius Schaden in Höhe der erwürfelten Heilung (Abwehr gilt).

", - "quantity": 1, - "price": 100, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "name": "Karten des Schummlers", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

In dieses wunderschöne Spielkarten-Set ist der Zauber Zeitstop eingebettet.

", - "quantity": 1, - "price": 13031, - "availability": "unset", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/gaming/playing-cards-grey.webp", - "effects": [], - "_id": "nff3XieL5dvOZga9" - }, - { - "_id": "nixhgFSQ7jaZrvxD", - "name": "Trank der Zwergensicht", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-labeled-medicine-capped-red-black.webp", - "data": { - "description": "

Dieses meist schwarze Getränk gewährt für W20 Stunden dem Trinker die zwergische Volksfähigkeit Dunkelsicht (siehe GRW Seite 83).

", - "quantity": 1, - "price": 15, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "name": "Sattel", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "", - "quantity": 1, - "price": 5, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/commodities/leather/leather-scrap-brown.webp", - "effects": [], - "_id": "nslQfc441x1GG0SL" - }, - { - "name": "Spruchspeicherring", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Einmal pro Tag kann der Träger des Ringes zu einem vorher festgelegten Zauber aktionsfrei wechseln, ohne dafür würfeln zu müssen, da in den Ring Wechselzauber eingebettet wurde.

", - "quantity": 1, - "price": 4992, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/finger/ring-cabochon-engraved-gold-pink.webp", - "effects": [], - "_id": "oJbpYZlvfJ6kpudj" - }, - { - "_id": "oPUlB9rz5rvRKrq8", - "name": "Giftbanntrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-bulb-corked-glowing-red.webp", - "data": { - "description": "

Wirkt den Zauber Giftbann auf den Trinkenden (keine Probe nötig).

", - "quantity": 1, - "price": 150, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "oWvJfxEBr83QxO9Q", - "name": "Speer", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zerbricht bei Schießen-Patzer

", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/polearms/spear-hooked-simple.webp", - "effects": [] - }, - { - "_id": "oeyhSfAQQPUbm10p", - "name": "Alterungstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-vial-corked-purple.webp", - "data": { - "description": "

Der Trinkende wird augenblicklich W20 Jahre älter, Haare und Nägel wachsen entsprechend.

", - "quantity": 1, - "price": 500, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "opq2AakrpM9gLSa0", - "name": "Krummschwert +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 2757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/swords/scimitar-blue.webp", - "effects": [ - { - "_id": "RGYzuIow1nDLd681", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "oqnI982dhCya94Tu", - "name": "Elfenbogen +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2825, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 5, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/bows/longbow-recurve-leather-red.webp", - "effects": [ - { - "_id": "QScLkDv6gysh119m", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "l9ZRRSrd6yBhQUJL", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "ozPRhUPx9Y9u3GNE", - "name": "Seife (1 Stück)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/survival/soap.webp", - "effects": [] - }, - { - "name": "Zornhammer", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Ein schwerer, schlichter Streithammer +3, der einst einem Zwergenhelden gehörte.

\n

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 3256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/hammers/hammer-double-steel-embossed.webp", - "effects": [ - { - "_id": "dcGiLPK2AIDA7NHH", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -4", - "transfer": true - }, - { - "_id": "RWRk7pwQf2vs1Aqv", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ], - "_id": "pQqbXD5ELmjcu4Dd" - }, - { - "_id": "pYP26CskxKade3GF", - "name": "Pfanne", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/cooking/pot-camping-iron-black.webp", - "effects": [] - }, - { - "_id": "pljOii88ltzuQNsu", - "name": "Talenttrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-corked-labeled-pink.webp", - "data": { - "description": "

Metallisch riechend, erhöht dieser Trank für W20 Runden ein vom Trinkenden bereits beherrschtes Talent um +I.

", - "quantity": 1, - "price": 100, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "pzD6fcJa1Hk4Duwu", - "name": "Keule +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": null, - "quantity": 1, - "price": 1250.2, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/clubs/club-simple-barbed.webp", - "effects": [ - { - "_id": "9ZyXiW0n9WJ5WQOv", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "pzjZv0HhCA15wy1i", - "name": "Holzbecher", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.2, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/kitchenware/mug-simple-wooden-brown.webp", - "effects": [] - }, - { - "name": "Schutzring +3", - "permission": { - "default": 0 - }, - "type": "equipment", - "data": { - "description": "

Erhöht die Abwehr um 3, ohne dabei Panzerungsmalus zu verursachen.

", - "quantity": 1, - "price": 1752, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "flags": {}, - "img": "icons/equipment/finger/ring-band-engraved-scrolls-gold.webp", - "effects": [ - { - "_id": "yH3Ujo3jKNCYI4n9", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Abwehr +3 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "qlBIUI00RTYZzclX" - }, - { - "_id": "qwXiwcxaDDCzmLLM", - "name": "Hellebarde +2", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/polearms/halberd-crescent-steel.webp", - "effects": [ - { - "_id": "APXje5Ppu0d75HNw", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - }, - { - "_id": "cEFYfp6VrhRcwEKz", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +2 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "rdOU1FmBq1nqQKW5", - "name": "Streitkolben +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "flags": {}, - "img": "icons/weapons/maces/mace-spiked-steel-grey.webp", - "effects": [ - { - "_id": "dgH1Fyz2pVFcmhFL", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Fellmantel des Heilers", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese aus weißem Fell geschneiderte Lederrüstung gewährt +2 auf alle Heilzauber.

", - "quantity": 1, - "price": 4254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/vest-leather-tattered-white.webp", - "effects": [ - { - "_id": "5vJF9ck6rDsBPnKl", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ], - "_id": "rvDTHq5UoRK6acm6" - }, - { - "_id": "s1xaEPPKJGMImZ9m", - "name": "Streitaxt +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-double-chopping-black.webp", - "effects": [ - { - "_id": "DPS3CaNXapsBzzsj", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - }, - { - "_id": "fQgMSANHWdQrzmlJ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "s47J9CEdTELiRlPT", - "name": "Wasserwandeltrank", - "type": "loot", - "img": "icons/consumables/potions/potion-jar-corked-orange.webp", - "data": { - "description": "

Dieser oft braune Trank wirkt auf den Trinker den Zauber Wasserwandeln (Probenwert 20; Patzer ausgeschlossen).

", - "quantity": 1, - "price": 100, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "sMJw9EQtd2pYsgYE", - "name": "Hammer", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/hammers/shorthammer-simple-iron-black.webp", - "effects": [] - }, - { - "_id": "sUHJSIG8aTs0do67", - "name": "Runenbestickte Robe +1", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Aura +1

", - "quantity": 1, - "price": 1258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-collared-blue.webp", - "effects": [ - { - "_id": "vgJWV95OeyzrjyFw", - "flags": {}, - "changes": [ - { - "key": "data.traits.aura.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Aura +1", - "tint": "", - "transfer": true - }, - { - "_id": "6NLQSkPxsA3H8Gc8", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "siJAzGmpHVegUKBF", - "name": "Keule", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zerbricht bei Schlagen-Patzer

", - "quantity": 1, - "price": 0.2, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/clubs/club-simple-black.webp", - "effects": [] - }, - { - "_id": "t13RJoXrsS0HAyIQ", - "name": "Plattenpanzer", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Laufen -1m

", - "quantity": 1, - "price": 50, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-layered-steel-grey.webp", - "effects": [ - { - "_id": "pAxAXam5JBN6Acz9", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.movement.total", - "value": -1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -1m", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "tAdNTxSRq9hARm1p", - "name": "Hammer +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "flags": {}, - "img": "icons/weapons/hammers/shorthammer-embossed-white.webp", - "effects": [ - { - "_id": "aLeVPvqVvSHnDTsp", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "tPlXSWQ4mP0dqnOa", - "name": "Schloss: Zwergenarbeit (SW: 12)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 250, - "availability": "city", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", - "effects": [] - }, - { - "name": "Rüstung des Schützen", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese mit dunkelgrünen Stoffrändern gesäumte Kettenrüstung +1 gewährt ihrem Träger +3 auf Schießen.

", - "quantity": 1, - "price": 4760, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "C7jqj8julpambLpm", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - }, - { - "_id": "fwNP4w1u7JP3OFEb", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.rangedAttack.total", - "value": 3, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Schießen +3 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "tQ1LUX7in4xuuR12" - }, - { - "_id": "tW53rAmCXx6rqKMP", - "name": "Großer Heiltrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-stopped-red.webp", - "data": { - "description": "

Diese meist weinroten Tränke heilen 2W20 Lebenskraft.

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "trop6WmDZEhv3gRA", - "name": "Dolch +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative +1

", - "quantity": 1, - "price": 752, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/daggers/dagger-curved-blue.webp", - "effects": [ - { - "_id": "9jtH6ER0s0I8SPyi", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - }, - { - "_id": "aDUESIHIetT9xLbD", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "u1ycDWee8nHPfZHA", - "name": "Morgenstern +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "flags": {}, - "img": "icons/weapons/maces/mace-round-studded.webp", - "effects": [ - { - "_id": "nTOl8E9qA6stLcEJ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "uDdLTyyNqeXzCssp", - "name": "Elfenbogen", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 75, - "availability": "elves", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/bows/longbow-recurve-brown.webp", - "effects": [ - { - "_id": "QScLkDv6gysh119m", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +1", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "uVYJY3A8kLne2ZkQ", - "name": "Parfüm (50 x benutzbar)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

Gibt 4 Stunden lang +1 auf Proben sozialer Interaktion mit anderem Geschlecht

", - "quantity": 1, - "price": 5, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/laboratory/vial-orange.webp", - "effects": [] - }, - { - "_id": "uYcNgFz5PkaOmK6b", - "name": "Unsichtbarkeitstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-corked-tied-necklace-teal.webp", - "data": { - "description": "

Dieser oft klare, farblose Trank wirkt auf den Trinker den Zauber Unsichtbarkeit (Probenwert 20; Patzer ausgeschlossen).

", - "quantity": 1, - "price": 500, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "name": "Stab des Magus", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Ein Kampfstab +1 mit Zielzaubern +3 (insgesamt also mit dem normalen Bonus Zielzaubern +4).

\n

Zweihändig, Zielzaubern +1

", - "quantity": 1, - "price": 2750.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/staves/staff-ornate-purple.webp", - "effects": [ - { - "_id": "1aNTAQBai6qAcWGM", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.targetedSpellcasting.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Zielzaubern +1", - "tint": "", - "transfer": true - }, - { - "_id": "ve7iQmkxC6l5WmTE", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - }, - { - "_id": "XD3tGbvi1S03diuz", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.targetedSpellcasting.total", - "value": 3, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Zielzaubern +3 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "uafOWinH9nnRO3lr" - }, - { - "_id": "udsNOh5h0TQmOYBl", - "name": "Klettertrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-conical-corked-cyan.webp", - "data": { - "description": "

Der Charakter kann für W20 Runden mit seinem normalen Laufen-Wert wie eine Spinne klettern, selbst kopfüber an der Decke.

", - "quantity": 1, - "price": 50, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "upLe2iticb6YKsIR", - "name": "Brechstange", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "", - "quantity": 1, - "price": 1.5, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/tools/hand/wrench-iron-grey.webp", - "effects": [] - }, - { - "_id": "upkDR02zMILTPib6", - "name": "Lanze +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", - "quantity": 1, - "price": 1252, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/polearms/spear-flared-green.webp", - "effects": [ - { - "_id": "d8N240qBKaRGqkcf", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "uqIQjhDGgbEuHYmd", - "name": "Zauberwechseltrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-blue.webp", - "data": { - "description": "

Diese meist blauen Tränke gewähren für die Dauer eines Kampfes +10 auf Zauber wechseln.

", - "quantity": 1, - "price": 10, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "name": "Geisterbote", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

Jeder dieser mit Rauch gefüllten Behälter enthält eine Ladung des Zaubers Botschaft.

", - "quantity": 1, - "price": 454, - "availability": "unset", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/commodities/materials/glass-orb-blue.webp", - "effects": [], - "_id": "v7WiMqH1XylGqNOy" - }, - { - "_id": "vqKLn65gjoced8jV", - "name": "Streitaxt", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/axes/axe-double-brown.webp", - "effects": [ - { - "_id": "DPS3CaNXapsBzzsj", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - } - ] - }, - { - "_id": "w1bZ2431gdOQumWK", - "name": "Runenbestickte Robe", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Aura +1

", - "quantity": 1, - "price": 8, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/coat-leather-blue.webp", - "effects": [ - { - "_id": "vgJWV95OeyzrjyFw", - "flags": {}, - "changes": [ - { - "key": "data.traits.aura.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Aura +1", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "wy8GXE1zjaRpXL8H", - "name": "Hellebarde +3", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2754, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "flags": {}, - "img": "icons/weapons/polearms/halberd-crescent-glowing.webp", - "effects": [ - { - "_id": "APXje5Ppu0d75HNw", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - }, - { - "_id": "JIWNiHZdqmMiPMBz", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +3 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Sturmrobe", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese blaugraue Robe +1 mit aufgestickten Sturm- & Gewitterwolken gewährt +1 auf jeden Blitzzauber. Selbst bei Windstille wogt sie in einer leichten Brise.

", - "quantity": 1, - "price": 1751, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/robe-layered-teal.webp", - "effects": [ - { - "_id": "JjEEDD1H1NvKF1Vr", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ], - "_id": "xeSyfEpn3gABmKDR" - }, - { - "_id": "xwjafjsWdZJBVN0A", - "name": "Kompass", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 35, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/navigation/compass-brass-blue-red.webp", - "effects": [] - }, - { - "_id": "yDq5abf47mYIw3OG", - "name": "Plattenbeinschienen +3", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": null, - "quantity": 1, - "price": 4258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "greaves" - }, - "flags": {}, - "img": "icons/equipment/leg/cuisses-plate-reticulated-steel-blue.webp", - "effects": [ - { - "_id": "dJcAdxKxsUIXzHCa", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 3, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +3 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "yfqzgTskyIgWZq8A", - "name": "Schlachtgeißel", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", - "quantity": 1, - "price": 16, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -4 - }, - "flags": {}, - "img": "icons/weapons/maces/flail-triple-grey.webp", - "effects": [ - { - "_id": "BdejYg7Bq6tM2ROu", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -4, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -4", - "transfer": true - } - ] - }, - { - "_id": "ygiod7LPfxwz0Jbb", - "name": "Wasserschlauch (5 Liter)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/survival/waterskin-leather-brown.webp", - "effects": [] - }, - { - "_id": "ylWwhiSGGWLee2PA", - "name": "Kampfstab", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Zielzaubern +1, Zerbricht bei Schlagen-Patzer

", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "flags": {}, - "img": "icons/weapons/staves/staff-simple.webp", - "effects": [ - { - "_id": "1aNTAQBai6qAcWGM", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.targetedSpellcasting.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Zielzaubern +1", - "tint": "", - "transfer": true - } - ] - }, - { - "_id": "yleQcy5mTJ5jn3RZ", - "name": "Lederschienen +2", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

An Arm & Bein

", - "quantity": 1, - "price": 3254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "vambraceGreaves" - }, - "flags": {}, - "img": "icons/equipment/wrist/bracer-straight-leather-red.webp", - "effects": [ - { - "_id": "YzSUbB0a2EknrxQQ", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 2, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +2 (magisch)", - "transfer": true - } - ] - }, - { - "name": "Wildhüterharnisch", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

In diese aus Fellen zusammengenähte Lederrüstung +1 wurde der Zauber Tierbeherrschung eingebettet.

", - "quantity": 1, - "price": 4714, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-layered-leather-brown.webp", - "effects": [ - { - "_id": "CUa4rA1A1cwWac46", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ], - "_id": "yocl6DZ7hfOupqqz" - }, - { - "_id": "yuSDAJwN3NFfcTSE", - "name": "Lederpanzer (Für Reittiere) +1", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "", - "quantity": 1, - "price": 2262, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/commodities/leather/leather-leaf-tan.webp", - "effects": [ - { - "_id": "ISagK3JV33VmnmoX", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.defense.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Panzerung +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "zAMFB4HHHUQp4RFa", - "name": "Schloss: Gut (SW: 2)", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 5, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", - "effects": [] - }, - { - "_id": "zQLTx3zmJfnrdmlN", - "name": "Werkzeugset", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "", - "quantity": 1, - "price": 5, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/hand/hammer-and-nail.webp", - "effects": [] - }, - { - "name": "Kluft des Jägers", - "permission": { - "default": 0 - }, - "type": "armor", - "data": { - "description": "

Diese braun-grüne Lederrüstung gewährt neben Jäger +I ihrem Träger +1 auf Bewegung.

", - "quantity": 1, - "price": 1504, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "flags": {}, - "img": "icons/equipment/chest/breastplate-layered-leather-green.webp", - "effects": [ - { - "_id": "RXgVHCUhqvSvdubt", - "flags": {}, - "changes": [ - { - "key": "data.traits.agility.total", - "value": 1, - "mode": 2 - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "icon": "icons/svg/aura.svg", - "label": "Bewegung +1 (magisch)", - "tint": "", - "transfer": true - } - ], - "_id": "zWMPzHIY3vkrCIEJ" - }, - { - "_id": "zXgxu2gCkaTSSSMU", - "name": "Waffenpaste", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

Macht WB+1; hält W20 Nahkampfangriffe bzw. reicht für W20 Fernkampfgeschosse

", - "quantity": 1, - "price": 0.5, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/laboratory/bowl-liquid-black.webp", - "effects": [] - }, - { - "_id": "zjefX9KYvMphtVwX", - "name": "Handschellen", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

Preis für beide Schlösser extra ermitteln

", - "quantity": 1, - "price": 8, - "availability": "village", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/survival/cuffs-shackles-steel.webp", - "effects": [] - }, - { - "_id": "zoPPqqDyRTvmV2do", - "name": "Hellebarde +1", - "permission": { - "default": 0 - }, - "type": "weapon", - "data": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 4, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "flags": {}, - "img": "icons/weapons/polearms/halberd-crescent-engraved-steel.webp", - "effects": [ - { - "_id": "APXje5Ppu0d75HNw", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": -2, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative -2", - "transfer": true - }, - { - "_id": "FuPTO8plsKR3lq8Z", - "flags": {}, - "changes": [ - { - "key": "data.combatValues.initiative.total", - "value": 1, - "mode": 2 - } - ], - "duration": {}, - "label": "Initiative +1 (magisch)", - "transfer": true - } - ] - }, - { - "_id": "zqlc3bq1ZfneLeYx", - "name": "Zieltrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-capped-yellow-green.webp", - "data": { - "description": "

Erhöht die Werte von Schießen und Zielzauber für die Dauer eines Kampfes um +1.

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "zquQpOOVr5lIbnmL", - "name": "Heilkraut", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": "

Probenwert 10: 1-10 heilt LK in Ergebnishöhe, 11+ kein Heileffekt

", - "quantity": 1, - "price": 2.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/tools/laboratory/bowl-herbs-green.webp", - "effects": [] - }, - { - "_id": "zx3FKwvrLw147ARX", - "name": "Pergamentblatt", - "permission": { - "default": 0 - }, - "type": "loot", - "data": { - "description": null, - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "flags": {}, - "img": "icons/sundries/documents/paper-plain-white.webp", - "effects": [] - } -] diff --git a/packs/items.json.license b/packs/items.json.license deleted file mode 100644 index dc219f48..00000000 --- a/packs/items.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: CC-BY-NC-SA-4.0 diff --git a/packs/items/Abklingring_2XfoxOYNOTar9OAt.json b/packs/items/Abklingring_2XfoxOYNOTar9OAt.json new file mode 100644 index 00000000..00fe90a0 --- /dev/null +++ b/packs/items/Abklingring_2XfoxOYNOTar9OAt.json @@ -0,0 +1,32 @@ +{ + "_id": "2XfoxOYNOTar9OAt", + "name": "Abklingring", + "type": "equipment", + "img": "icons/equipment/finger/ring-band-engraved-scrolls-silver.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser einfache Abklingring senkt die Abklingzeit sämtlicher Zauber seines Trägers um 1.

", + "quantity": 1, + "price": 5252, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342685, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2XfoxOYNOTar9OAt" +} diff --git a/packs/items/Abklingtrank_NZPp8EGEg1JmXdNd.json b/packs/items/Abklingtrank_NZPp8EGEg1JmXdNd.json new file mode 100644 index 00000000..03e63149 --- /dev/null +++ b/packs/items/Abklingtrank_NZPp8EGEg1JmXdNd.json @@ -0,0 +1,31 @@ +{ + "_id": "NZPp8EGEg1JmXdNd", + "name": "Abklingtrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-corked-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese meist hellblauen Tränke halbieren (abrunden) die Abklingzeit aller Zauber für die Dauer eines Kampfes.

", + "quantity": 1, + "price": 50, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342916, + "modifiedTime": 1740227862987, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NZPp8EGEg1JmXdNd" +} diff --git a/packs/items/Aderschlitz_IHKj37AVchphOWGZ.json b/packs/items/Aderschlitz_IHKj37AVchphOWGZ.json new file mode 100644 index 00000000..8a05cb05 --- /dev/null +++ b/packs/items/Aderschlitz_IHKj37AVchphOWGZ.json @@ -0,0 +1,138 @@ +{ + "_id": "IHKj37AVchphOWGZ", + "name": "Aderschlitz", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-bone-barbed.webp", + "effects": [ + { + "_id": "VdOm09p88rltMp73", + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!IHKj37AVchphOWGZ.VdOm09p88rltMp73" + }, + { + "_id": "0pBScyXbTQudldbm", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Aderschlitzer", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Aderschlitzer +III", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!IHKj37AVchphOWGZ.0pBScyXbTQudldbm" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein magischer Dolch +2 mit Aderschlitzer +III.

\n

Initiative +1

", + "quantity": 1, + "price": 7252, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342868, + "modifiedTime": 1740227862982, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!IHKj37AVchphOWGZ" +} diff --git a/packs/items/Allheilungstrank_eRQ9LUNWbnAuuVX6.json b/packs/items/Allheilungstrank_eRQ9LUNWbnAuuVX6.json new file mode 100644 index 00000000..96b37ae5 --- /dev/null +++ b/packs/items/Allheilungstrank_eRQ9LUNWbnAuuVX6.json @@ -0,0 +1,31 @@ +{ + "_id": "eRQ9LUNWbnAuuVX6", + "name": "Allheilungstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Von milchiger Färbung, wirkt dieser Trank den Zauber @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} auf den Trinkenden (keine Probe nötig).

", + "quantity": 1, + "price": 1000, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343166, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eRQ9LUNWbnAuuVX6" +} diff --git a/packs/items/Allsichttrank_Zl8ZkPrwHibRYWPh.json b/packs/items/Allsichttrank_Zl8ZkPrwHibRYWPh.json new file mode 100644 index 00000000..879d6c9a --- /dev/null +++ b/packs/items/Allsichttrank_Zl8ZkPrwHibRYWPh.json @@ -0,0 +1,31 @@ +{ + "_id": "Zl8ZkPrwHibRYWPh", + "name": "Allsichttrank", + "type": "loot", + "img": "icons/consumables/potions/potion-vial-corked-labeled-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Für W20 Minuten kann der Trinker Magie, Unsichtbares und Verborgenes (Fallen, Geheimtüren usw.) automatisch erkennen.

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343084, + "modifiedTime": 1740227863005, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Zl8ZkPrwHibRYWPh" +} diff --git a/packs/items/Alterungstrank_oeyhSfAQQPUbm10p.json b/packs/items/Alterungstrank_oeyhSfAQQPUbm10p.json new file mode 100644 index 00000000..2f123649 --- /dev/null +++ b/packs/items/Alterungstrank_oeyhSfAQQPUbm10p.json @@ -0,0 +1,31 @@ +{ + "_id": "oeyhSfAQQPUbm10p", + "name": "Alterungstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-vial-corked-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Trinkende wird augenblicklich W20 Jahre älter, Haare und Nägel wachsen entsprechend.

", + "quantity": 1, + "price": 500, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343402, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oeyhSfAQQPUbm10p" +} diff --git a/packs/items/Andauernder_Heiltrank_9NUM3H7oTfrHhFpD.json b/packs/items/Andauernder_Heiltrank_9NUM3H7oTfrHhFpD.json new file mode 100644 index 00000000..dafcde9e --- /dev/null +++ b/packs/items/Andauernder_Heiltrank_9NUM3H7oTfrHhFpD.json @@ -0,0 +1,31 @@ +{ + "_id": "9NUM3H7oTfrHhFpD", + "name": "Andauernder Heiltrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-corked-pink.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses oft purpurne Getränk heilt 2W20 Runden lang 1 Lebenskraft/Runde.

", + "quantity": 1, + "price": 20, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342771, + "modifiedTime": 1740227862970, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9NUM3H7oTfrHhFpD" +} diff --git a/packs/items/Angelhaken_und_Schnur_8YpZMXq9RhMCJOst.json b/packs/items/Angelhaken_und_Schnur_8YpZMXq9RhMCJOst.json new file mode 100644 index 00000000..f875b1b8 --- /dev/null +++ b/packs/items/Angelhaken_und_Schnur_8YpZMXq9RhMCJOst.json @@ -0,0 +1,31 @@ +{ + "_id": "8YpZMXq9RhMCJOst", + "name": "Angelhaken und Schnur", + "type": "loot", + "img": "icons/tools/fishing/hook-barbed-steel-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.2, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342762, + "modifiedTime": 1740227862969, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8YpZMXq9RhMCJOst" +} diff --git a/packs/items/Anh_nger_mit_heiligem_Symbol_dDhfIuRomMfy2kkP.json b/packs/items/Anh_nger_mit_heiligem_Symbol_dDhfIuRomMfy2kkP.json new file mode 100644 index 00000000..9753bdb1 --- /dev/null +++ b/packs/items/Anh_nger_mit_heiligem_Symbol_dDhfIuRomMfy2kkP.json @@ -0,0 +1,32 @@ +{ + "_id": "dDhfIuRomMfy2kkP", + "name": "Anhänger mit heiligem Symbol", + "type": "equipment", + "img": "icons/equipment/neck/amulet-carved-stone-spiral.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "village", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343132, + "modifiedTime": 1740227863010, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dDhfIuRomMfy2kkP" +} diff --git a/packs/items/Armreif_des_Bogners_VJftG703v7db0Cqf.json b/packs/items/Armreif_des_Bogners_VJftG703v7db0Cqf.json new file mode 100644 index 00000000..aa08e692 --- /dev/null +++ b/packs/items/Armreif_des_Bogners_VJftG703v7db0Cqf.json @@ -0,0 +1,32 @@ +{ + "_id": "VJftG703v7db0Cqf", + "name": "Armreif des Bogners", + "type": "equipment", + "img": "icons/equipment/wrist/bracer-belted-leather-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Verleiht auf Schießen-Proben mit Bögen einen Bonus von +2.

", + "quantity": 1, + "price": 1260, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343048, + "modifiedTime": 1740227863002, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VJftG703v7db0Cqf" +} diff --git a/packs/items/Atemfreitrank_2jgIyVHZYJroSUFY.json b/packs/items/Atemfreitrank_2jgIyVHZYJroSUFY.json new file mode 100644 index 00000000..8f1e96ff --- /dev/null +++ b/packs/items/Atemfreitrank_2jgIyVHZYJroSUFY.json @@ -0,0 +1,31 @@ +{ + "_id": "2jgIyVHZYJroSUFY", + "name": "Atemfreitrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-conical-bubbling-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Trinker dieses sprudelnden Trankes braucht für KÖR in Stunden nicht zu atmen.

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342690, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2jgIyVHZYJroSUFY" +} diff --git a/packs/items/Axt__1_jsANSjzxRPKO3AyG.json b/packs/items/Axt__1_jsANSjzxRPKO3AyG.json new file mode 100644 index 00000000..67271663 --- /dev/null +++ b/packs/items/Axt__1_jsANSjzxRPKO3AyG.json @@ -0,0 +1,35 @@ +{ + "_id": "jsANSjzxRPKO3AyG", + "name": "Axt +1", + "type": "weapon", + "img": "icons/weapons/axes/shortaxe-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343311, + "modifiedTime": 1740227863018, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!jsANSjzxRPKO3AyG" +} diff --git a/packs/items/Axt__2_PTiDNLKc0l9rD7Kb.json b/packs/items/Axt__2_PTiDNLKc0l9rD7Kb.json new file mode 100644 index 00000000..aa0ad807 --- /dev/null +++ b/packs/items/Axt__2_PTiDNLKc0l9rD7Kb.json @@ -0,0 +1,87 @@ +{ + "_id": "PTiDNLKc0l9rD7Kb", + "name": "Axt +2", + "type": "weapon", + "img": "icons/weapons/axes/shortaxe-hammer-steel.webp", + "effects": [ + { + "_id": "8wzWUlPPd92HiwJs", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!PTiDNLKc0l9rD7Kb.8wzWUlPPd92HiwJs" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1756, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342934, + "modifiedTime": 1740227862990, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PTiDNLKc0l9rD7Kb" +} diff --git a/packs/items/Axt__3_KyhMB9Jn8Vaxs4eF.json b/packs/items/Axt__3_KyhMB9Jn8Vaxs4eF.json new file mode 100644 index 00000000..b5d7c4b3 --- /dev/null +++ b/packs/items/Axt__3_KyhMB9Jn8Vaxs4eF.json @@ -0,0 +1,87 @@ +{ + "_id": "KyhMB9Jn8Vaxs4eF", + "name": "Axt +3", + "type": "weapon", + "img": "icons/weapons/axes/shortaxe-yellow.webp", + "effects": [ + { + "_id": "yaR4SKssj8gYJB91", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!KyhMB9Jn8Vaxs4eF.yaR4SKssj8gYJB91" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342897, + "modifiedTime": 1740227862985, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KyhMB9Jn8Vaxs4eF" +} diff --git a/packs/items/Axt_eAd86Ylh42nHoCsx.json b/packs/items/Axt_eAd86Ylh42nHoCsx.json new file mode 100644 index 00000000..42b4bf6c --- /dev/null +++ b/packs/items/Axt_eAd86Ylh42nHoCsx.json @@ -0,0 +1,35 @@ +{ + "_id": "eAd86Ylh42nHoCsx", + "name": "Axt", + "type": "weapon", + "img": "icons/weapons/axes/shortaxe-worn-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343149, + "modifiedTime": 1740227863012, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eAd86Ylh42nHoCsx" +} diff --git a/packs/items/B_renfalle_ec2Aft0epeFhdg9B.json b/packs/items/B_renfalle_ec2Aft0epeFhdg9B.json new file mode 100644 index 00000000..ae2cf990 --- /dev/null +++ b/packs/items/B_renfalle_ec2Aft0epeFhdg9B.json @@ -0,0 +1,31 @@ +{ + "_id": "ec2Aft0epeFhdg9B", + "name": "Bärenfalle", + "type": "loot", + "img": "icons/environment/traps/trap-jaw-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Schlagen 30

", + "quantity": 1, + "price": 10, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343171, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ec2Aft0epeFhdg9B" +} diff --git a/packs/items/B_renpanzer_e6LetXJHUY4ndz7B.json b/packs/items/B_renpanzer_e6LetXJHUY4ndz7B.json new file mode 100644 index 00000000..95b48e3f --- /dev/null +++ b/packs/items/B_renpanzer_e6LetXJHUY4ndz7B.json @@ -0,0 +1,181 @@ +{ + "_id": "e6LetXJHUY4ndz7B", + "name": "Bärenpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-steel.webp", + "effects": [ + { + "_id": "uOEN4xXL3IcebbJO", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!e6LetXJHUY4ndz7B.uOEN4xXL3IcebbJO" + }, + { + "_id": "dxmfRAe4ljoKdi0M", + "flags": {}, + "changes": [ + { + "key": "system.traits.strength.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Stärke +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!e6LetXJHUY4ndz7B.dxmfRAe4ljoKdi0M" + }, + { + "_id": "DItC97OWlR1nL79a", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Raserei", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Raserei +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!e6LetXJHUY4ndz7B.DItC97OWlR1nL79a" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese mit Bärenfellen und -klauen verzierte Plattenrüstung +2 gewährt ihrem Träger Raserei +I sowie +1 auf Stärke.

", + "quantity": 1, + "price": 8800, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343146, + "modifiedTime": 1740227863012, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!e6LetXJHUY4ndz7B" +} diff --git a/packs/items/Berserkertrank_nH1Vfhhx2jlGoQ6i.json b/packs/items/Berserkertrank_nH1Vfhhx2jlGoQ6i.json new file mode 100644 index 00000000..c92f50e4 --- /dev/null +++ b/packs/items/Berserkertrank_nH1Vfhhx2jlGoQ6i.json @@ -0,0 +1,31 @@ +{ + "_id": "nH1Vfhhx2jlGoQ6i", + "name": "Berserkertrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-flask-fumes-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses von verrückten Orkschamanen entwickelte, dampfende Getränk heilt drei Kampfrunden jeweils W20 Lebenskraft. In der vierten Runde explodiert der Trinker und verursacht in 2 m Radius Schaden in Höhe der erwürfelten Heilung (Abwehr gilt).

", + "quantity": 1, + "price": 100, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343339, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nH1Vfhhx2jlGoQ6i" +} diff --git a/packs/items/Bih_nder_KOdzXkLHuNkCciAa.json b/packs/items/Bih_nder_KOdzXkLHuNkCciAa.json new file mode 100644 index 00000000..4012d079 --- /dev/null +++ b/packs/items/Bih_nder_KOdzXkLHuNkCciAa.json @@ -0,0 +1,35 @@ +{ + "_id": "KOdzXkLHuNkCciAa", + "name": "Bihänder", + "type": "weapon", + "img": "icons/weapons/swords/greatsword-guard.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 10, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342893, + "modifiedTime": 1740227862985, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KOdzXkLHuNkCciAa" +} diff --git a/packs/items/Bih_nder__1_2ydkhz5gDjxAiaYy.json b/packs/items/Bih_nder__1_2ydkhz5gDjxAiaYy.json new file mode 100644 index 00000000..7a351640 --- /dev/null +++ b/packs/items/Bih_nder__1_2ydkhz5gDjxAiaYy.json @@ -0,0 +1,87 @@ +{ + "_id": "2ydkhz5gDjxAiaYy", + "name": "Bihänder +1", + "type": "weapon", + "img": "icons/weapons/swords/greatsword-crossguard-engraved-green.webp", + "effects": [ + { + "_id": "qdSiJ4l0AuTd68CB", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!2ydkhz5gDjxAiaYy.qdSiJ4l0AuTd68CB" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342694, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2ydkhz5gDjxAiaYy" +} diff --git a/packs/items/Bih_nder__2_QmyAtIDJfnBZvZFg.json b/packs/items/Bih_nder__2_QmyAtIDJfnBZvZFg.json new file mode 100644 index 00000000..bc96336a --- /dev/null +++ b/packs/items/Bih_nder__2_QmyAtIDJfnBZvZFg.json @@ -0,0 +1,87 @@ +{ + "_id": "QmyAtIDJfnBZvZFg", + "name": "Bihänder +2", + "type": "weapon", + "img": "icons/weapons/swords/greatsword-guard-jewel-green.webp", + "effects": [ + { + "_id": "0GrRl4XU2UrvbDxs", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!QmyAtIDJfnBZvZFg.0GrRl4XU2UrvbDxs" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -6 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342948, + "modifiedTime": 1740227862992, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QmyAtIDJfnBZvZFg" +} diff --git a/packs/items/Bih_nder__3_dIA53f3kvU9JgGvg.json b/packs/items/Bih_nder__3_dIA53f3kvU9JgGvg.json new file mode 100644 index 00000000..2238b32b --- /dev/null +++ b/packs/items/Bih_nder__3_dIA53f3kvU9JgGvg.json @@ -0,0 +1,130 @@ +{ + "_id": "dIA53f3kvU9JgGvg", + "name": "Bihänder +3", + "type": "weapon", + "img": "icons/weapons/swords/greatsword-guard-gem-blue.webp", + "effects": [ + { + "_id": "DaKTtdhRO45QZuDJ", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "-2", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dIA53f3kvU9JgGvg.DaKTtdhRO45QZuDJ" + }, + { + "_id": "n4mZBHWKSQLQcHHD", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dIA53f3kvU9JgGvg.n4mZBHWKSQLQcHHD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 3260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343135, + "modifiedTime": 1740227863010, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dIA53f3kvU9JgGvg" +} diff --git a/packs/items/Blendlaterne_d3ixiQ3FrQndjz46.json b/packs/items/Blendlaterne_d3ixiQ3FrQndjz46.json new file mode 100644 index 00000000..e1957d79 --- /dev/null +++ b/packs/items/Blendlaterne_d3ixiQ3FrQndjz46.json @@ -0,0 +1,31 @@ +{ + "_id": "d3ixiQ3FrQndjz46", + "name": "Blendlaterne", + "type": "loot", + "img": "icons/sundries/lights/lantern-bullseye-signal-copper.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 8, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343123, + "modifiedTime": 1740227863009, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!d3ixiQ3FrQndjz46" +} diff --git a/packs/items/Blutr_stung_CQZtlL8zUdOVUVrU.json b/packs/items/Blutr_stung_CQZtlL8zUdOVUVrU.json new file mode 100644 index 00000000..84ca65da --- /dev/null +++ b/packs/items/Blutr_stung_CQZtlL8zUdOVUVrU.json @@ -0,0 +1,181 @@ +{ + "_id": "CQZtlL8zUdOVUVrU", + "name": "Blutrüstung", + "type": "armor", + "img": "icons/equipment/chest/breastplate-rivited-red.webp", + "effects": [ + { + "_id": "pAxAXam5JBN6Acz9", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!CQZtlL8zUdOVUVrU.pAxAXam5JBN6Acz9" + }, + { + "_id": "CXouU4P0kZYU6oXR", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!CQZtlL8zUdOVUVrU.CXouU4P0kZYU6oXR" + }, + { + "_id": "32vJ305ynrZ0xYki", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Verletzen", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Verletzen +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!CQZtlL8zUdOVUVrU.32vJ305ynrZ0xYki" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

In diese rotgefärbte Plattenrüstung +1 ist das Talent Verletzen +I eingebettet.

\n

Laufen -0,5

", + "quantity": 1, + "price": 5300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342802, + "modifiedTime": 1740227862976, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!CQZtlL8zUdOVUVrU" +} diff --git a/packs/items/Brechstange_upLe2iticb6YKsIR.json b/packs/items/Brechstange_upLe2iticb6YKsIR.json new file mode 100644 index 00000000..abbc747c --- /dev/null +++ b/packs/items/Brechstange_upLe2iticb6YKsIR.json @@ -0,0 +1,35 @@ +{ + "_id": "upLe2iticb6YKsIR", + "name": "Brechstange", + "type": "weapon", + "img": "icons/tools/hand/wrench-iron-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1.5, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343545, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!upLe2iticb6YKsIR" +} diff --git a/packs/items/Breitschwert_5KxdKllRXuau0Uhm.json b/packs/items/Breitschwert_5KxdKllRXuau0Uhm.json new file mode 100644 index 00000000..d0ce61d3 --- /dev/null +++ b/packs/items/Breitschwert_5KxdKllRXuau0Uhm.json @@ -0,0 +1,35 @@ +{ + "_id": "5KxdKllRXuau0Uhm", + "name": "Breitschwert", + "type": "weapon", + "img": "icons/weapons/swords/sword-broad-worn.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 8, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342715, + "modifiedTime": 1740227862966, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5KxdKllRXuau0Uhm" +} diff --git a/packs/items/Breitschwert__1_Nz6gFGSHzHVO3QxA.json b/packs/items/Breitschwert__1_Nz6gFGSHzHVO3QxA.json new file mode 100644 index 00000000..672d7495 --- /dev/null +++ b/packs/items/Breitschwert__1_Nz6gFGSHzHVO3QxA.json @@ -0,0 +1,87 @@ +{ + "_id": "Nz6gFGSHzHVO3QxA", + "name": "Breitschwert +1", + "type": "weapon", + "img": "icons/weapons/swords/sword-broad-red.webp", + "effects": [ + { + "_id": "M7zvcLqDr9HuzqTV", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Nz6gFGSHzHVO3QxA.M7zvcLqDr9HuzqTV" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342919, + "modifiedTime": 1740227862988, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Nz6gFGSHzHVO3QxA" +} diff --git a/packs/items/Breitschwert__2_TQhwV1dNYfy50y6k.json b/packs/items/Breitschwert__2_TQhwV1dNYfy50y6k.json new file mode 100644 index 00000000..4422ab2f --- /dev/null +++ b/packs/items/Breitschwert__2_TQhwV1dNYfy50y6k.json @@ -0,0 +1,87 @@ +{ + "_id": "TQhwV1dNYfy50y6k", + "name": "Breitschwert +2", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-broad-blue.webp", + "effects": [ + { + "_id": "g8ZgARGCbMxsnFJe", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!TQhwV1dNYfy50y6k.g8ZgARGCbMxsnFJe" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1758, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342996, + "modifiedTime": 1740227862999, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TQhwV1dNYfy50y6k" +} diff --git a/packs/items/Breitschwert__3_e65AAjglKeU1txL6.json b/packs/items/Breitschwert__3_e65AAjglKeU1txL6.json new file mode 100644 index 00000000..f06446ee --- /dev/null +++ b/packs/items/Breitschwert__3_e65AAjglKeU1txL6.json @@ -0,0 +1,87 @@ +{ + "_id": "e65AAjglKeU1txL6", + "name": "Breitschwert +3", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-broad-engraved.webp", + "effects": [ + { + "_id": "BVnmaiguzsq6nSwF", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!e65AAjglKeU1txL6.BVnmaiguzsq6nSwF" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343144, + "modifiedTime": 1740227863011, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!e65AAjglKeU1txL6" +} diff --git a/packs/items/Brennholz__B_ndel__QrGtd0N6cChddyG2.json b/packs/items/Brennholz__B_ndel__QrGtd0N6cChddyG2.json new file mode 100644 index 00000000..2ecc9b55 --- /dev/null +++ b/packs/items/Brennholz__B_ndel__QrGtd0N6cChddyG2.json @@ -0,0 +1,31 @@ +{ + "_id": "QrGtd0N6cChddyG2", + "name": "Brennholz (Bündel)", + "type": "loot", + "img": "icons/commodities/wood/kindling-sticks-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.01, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342952, + "modifiedTime": 1740227862993, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QrGtd0N6cChddyG2" +} diff --git a/packs/items/Decke_eLTOIKuFGf3M9HYt.json b/packs/items/Decke_eLTOIKuFGf3M9HYt.json new file mode 100644 index 00000000..d9a5213f --- /dev/null +++ b/packs/items/Decke_eLTOIKuFGf3M9HYt.json @@ -0,0 +1,31 @@ +{ + "_id": "eLTOIKuFGf3M9HYt", + "name": "Decke", + "type": "loot", + "img": "icons/sundries/survival/bedroll-worn-beige.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343154, + "modifiedTime": 1740227863012, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eLTOIKuFGf3M9HYt" +} diff --git a/packs/items/Dicke_Reisedecke_FoK7Tc7IePUpnDkL.json b/packs/items/Dicke_Reisedecke_FoK7Tc7IePUpnDkL.json new file mode 100644 index 00000000..7deafb71 --- /dev/null +++ b/packs/items/Dicke_Reisedecke_FoK7Tc7IePUpnDkL.json @@ -0,0 +1,31 @@ +{ + "_id": "FoK7Tc7IePUpnDkL", + "name": "Dicke Reisedecke", + "type": "loot", + "img": "icons/sundries/survival/bedroll-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342845, + "modifiedTime": 1740227862980, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FoK7Tc7IePUpnDkL" +} diff --git a/packs/items/Dietrich_TjB6AWIwGY5Q8xln.json b/packs/items/Dietrich_TjB6AWIwGY5Q8xln.json new file mode 100644 index 00000000..c1230ae2 --- /dev/null +++ b/packs/items/Dietrich_TjB6AWIwGY5Q8xln.json @@ -0,0 +1,31 @@ +{ + "_id": "TjB6AWIwGY5Q8xln", + "name": "Dietrich", + "type": "loot", + "img": "icons/tools/hand/lockpicks-steel-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343010, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TjB6AWIwGY5Q8xln" +} diff --git a/packs/items/Dolch_Fl2OHl2zMi281SbE.json b/packs/items/Dolch_Fl2OHl2zMi281SbE.json new file mode 100644 index 00000000..e128ea81 --- /dev/null +++ b/packs/items/Dolch_Fl2OHl2zMi281SbE.json @@ -0,0 +1,35 @@ +{ + "_id": "Fl2OHl2zMi281SbE", + "name": "Dolch", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative +1

", + "quantity": 1, + "price": 2, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342837, + "modifiedTime": 1740227862980, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Fl2OHl2zMi281SbE" +} diff --git a/packs/items/Dolch__1_trop6WmDZEhv3gRA.json b/packs/items/Dolch__1_trop6WmDZEhv3gRA.json new file mode 100644 index 00000000..ea461289 --- /dev/null +++ b/packs/items/Dolch__1_trop6WmDZEhv3gRA.json @@ -0,0 +1,130 @@ +{ + "_id": "trop6WmDZEhv3gRA", + "name": "Dolch +1", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-curved-blue.webp", + "effects": [ + { + "_id": "9jtH6ER0s0I8SPyi", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!trop6WmDZEhv3gRA.9jtH6ER0s0I8SPyi" + }, + { + "_id": "aDUESIHIetT9xLbD", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!trop6WmDZEhv3gRA.aDUESIHIetT9xLbD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative +1

", + "quantity": 1, + "price": 752, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343515, + "modifiedTime": 1740227863026, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!trop6WmDZEhv3gRA" +} diff --git a/packs/items/Dolch__2_ajO71RuOPNlINZID.json b/packs/items/Dolch__2_ajO71RuOPNlINZID.json new file mode 100644 index 00000000..f485c5e5 --- /dev/null +++ b/packs/items/Dolch__2_ajO71RuOPNlINZID.json @@ -0,0 +1,87 @@ +{ + "_id": "ajO71RuOPNlINZID", + "name": "Dolch +2", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-straight-green.webp", + "effects": [ + { + "_id": "oxrYsZM08ENZAhge", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ajO71RuOPNlINZID.oxrYsZM08ENZAhge" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative +1

", + "quantity": 1, + "price": 1252, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343093, + "modifiedTime": 1740227863006, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ajO71RuOPNlINZID" +} diff --git a/packs/items/Dolch__3_0wgXMtaVpVJabEun.json b/packs/items/Dolch__3_0wgXMtaVpVJabEun.json new file mode 100644 index 00000000..a09af6c7 --- /dev/null +++ b/packs/items/Dolch__3_0wgXMtaVpVJabEun.json @@ -0,0 +1,35 @@ +{ + "_id": "0wgXMtaVpVJabEun", + "name": "Dolch +3", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-double-engraved-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative +1

", + "quantity": 1, + "price": 1752, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342643, + "modifiedTime": 1740227862962, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0wgXMtaVpVJabEun" +} diff --git a/packs/items/Elfenbogen__1_0cAWFZtQfLF7q1ZX.json b/packs/items/Elfenbogen__1_0cAWFZtQfLF7q1ZX.json new file mode 100644 index 00000000..090d8fd4 --- /dev/null +++ b/packs/items/Elfenbogen__1_0cAWFZtQfLF7q1ZX.json @@ -0,0 +1,87 @@ +{ + "_id": "0cAWFZtQfLF7q1ZX", + "name": "Elfenbogen +1", + "type": "weapon", + "img": "icons/weapons/bows/longbow-recurve-leather-brown.webp", + "effects": [ + { + "_id": "UPsfGYjye47se1Gw", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0cAWFZtQfLF7q1ZX.UPsfGYjye47se1Gw" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2325, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342635, + "modifiedTime": 1740227862961, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0cAWFZtQfLF7q1ZX" +} diff --git a/packs/items/Elfenbogen__2_oqnI982dhCya94Tu.json b/packs/items/Elfenbogen__2_oqnI982dhCya94Tu.json new file mode 100644 index 00000000..ab49752d --- /dev/null +++ b/packs/items/Elfenbogen__2_oqnI982dhCya94Tu.json @@ -0,0 +1,87 @@ +{ + "_id": "oqnI982dhCya94Tu", + "name": "Elfenbogen +2", + "type": "weapon", + "img": "icons/weapons/bows/longbow-recurve-leather-red.webp", + "effects": [ + { + "_id": "l9ZRRSrd6yBhQUJL", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!oqnI982dhCya94Tu.l9ZRRSrd6yBhQUJL" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2825, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 5, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343440, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oqnI982dhCya94Tu" +} diff --git a/packs/items/Elfenbogen__3_0vIgZkHBeEPut73w.json b/packs/items/Elfenbogen__3_0vIgZkHBeEPut73w.json new file mode 100644 index 00000000..bd687d6a --- /dev/null +++ b/packs/items/Elfenbogen__3_0vIgZkHBeEPut73w.json @@ -0,0 +1,87 @@ +{ + "_id": "0vIgZkHBeEPut73w", + "name": "Elfenbogen +3", + "type": "weapon", + "img": "icons/weapons/bows/longbow-recurve.webp", + "effects": [ + { + "_id": "azjxgNJkYNvxg622", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0vIgZkHBeEPut73w.azjxgNJkYNvxg622" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 3325, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 6, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342641, + "modifiedTime": 1740227862961, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0vIgZkHBeEPut73w" +} diff --git a/packs/items/Elfenbogen_uDdLTyyNqeXzCssp.json b/packs/items/Elfenbogen_uDdLTyyNqeXzCssp.json new file mode 100644 index 00000000..e0b680d5 --- /dev/null +++ b/packs/items/Elfenbogen_uDdLTyyNqeXzCssp.json @@ -0,0 +1,79 @@ +{ + "_id": "uDdLTyyNqeXzCssp", + "name": "Elfenbogen", + "type": "weapon", + "img": "icons/weapons/bows/longbow-recurve-brown.webp", + "effects": [ + { + "_id": "QScLkDv6gysh119m", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!uDdLTyyNqeXzCssp.QScLkDv6gysh119m" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 75, + "availability": "elves", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343523, + "modifiedTime": 1740227863026, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uDdLTyyNqeXzCssp" +} diff --git a/packs/items/Elfenstiefel_OaG6IhVfS6EmHRux.json b/packs/items/Elfenstiefel_OaG6IhVfS6EmHRux.json new file mode 100644 index 00000000..a18d2492 --- /dev/null +++ b/packs/items/Elfenstiefel_OaG6IhVfS6EmHRux.json @@ -0,0 +1,76 @@ +{ + "_id": "OaG6IhVfS6EmHRux", + "name": "Elfenstiefel", + "type": "equipment", + "img": "icons/equipment/feet/boots-leather-green.webp", + "effects": [ + { + "_id": "mdjigDqsRTZyFNmC", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!OaG6IhVfS6EmHRux.mdjigDqsRTZyFNmC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese bequemen Stiefel erhöhen den Laufen-Wert um 1.

", + "quantity": 1, + "price": 1251.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342925, + "modifiedTime": 1740227862988, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!OaG6IhVfS6EmHRux" +} diff --git a/packs/items/Elfischer_Sattel_V3D7u9LDumvBwJQI.json b/packs/items/Elfischer_Sattel_V3D7u9LDumvBwJQI.json new file mode 100644 index 00000000..b261843b --- /dev/null +++ b/packs/items/Elfischer_Sattel_V3D7u9LDumvBwJQI.json @@ -0,0 +1,84 @@ +{ + "_id": "V3D7u9LDumvBwJQI", + "name": "Elfischer Sattel", + "type": "equipment", + "img": "icons/commodities/leather/leather-studded-tan.webp", + "effects": [ + { + "_id": "yNjGOSspfOUKlg8y", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Reiten", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Reiten +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!V3D7u9LDumvBwJQI.yNjGOSspfOUKlg8y" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

In diesen äußerst fein gearbeiteten Sattel ist Reiten +I eingebettet.

", + "quantity": 1, + "price": 505, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343043, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!V3D7u9LDumvBwJQI" +} diff --git a/packs/items/Elfischer_Tarnumhang_PE3eWmsGcd5dVVh4.json b/packs/items/Elfischer_Tarnumhang_PE3eWmsGcd5dVVh4.json new file mode 100644 index 00000000..c877de5a --- /dev/null +++ b/packs/items/Elfischer_Tarnumhang_PE3eWmsGcd5dVVh4.json @@ -0,0 +1,135 @@ +{ + "_id": "PE3eWmsGcd5dVVh4", + "name": "Elfischer Tarnumhang", + "type": "equipment", + "img": "icons/equipment/back/cloak-collared-leaves-green.webp", + "effects": [ + { + "_id": "Nr6hXbJeVlmJYASc", + "changes": [ + { + "key": "system.checks.hide", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Verbergen +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!PE3eWmsGcd5dVVh4.Nr6hXbJeVlmJYASc" + }, + { + "_id": "9qj7TWM9shrTKppj", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Heimlichkeit", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Heimlichkeit +III", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!PE3eWmsGcd5dVVh4.9qj7TWM9shrTKppj" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Umhang, in den Feengarn eingewebt wurde, verleiht zusätzlich zu seiner eingebetteten Heimlichkeit +III auf Verbergen-Proben +3.

", + "quantity": 1, + "price": 875.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342929, + "modifiedTime": 1740227862989, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PE3eWmsGcd5dVVh4" +} diff --git a/packs/items/F_ustlinge_der_Verst_mmelung_dvVhgqCv9VDpFW0l.json b/packs/items/F_ustlinge_der_Verst_mmelung_dvVhgqCv9VDpFW0l.json new file mode 100644 index 00000000..3f820b99 --- /dev/null +++ b/packs/items/F_ustlinge_der_Verst_mmelung_dvVhgqCv9VDpFW0l.json @@ -0,0 +1,135 @@ +{ + "_id": "dvVhgqCv9VDpFW0l", + "name": "Fäustlinge der Verstümmelung", + "type": "equipment", + "img": "icons/equipment/hand/glove-tooled-leather-brown.webp", + "effects": [ + { + "_id": "CRvnbvzibegpIQAz", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Brutaler Hieb", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Brutaler Hieb +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dvVhgqCv9VDpFW0l.CRvnbvzibegpIQAz" + }, + { + "_id": "ohRMO3BzPaxhKYh4", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Verletzen", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Verletzen +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dvVhgqCv9VDpFW0l.ohRMO3BzPaxhKYh4" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese blutverschmutzten Wildlederhandschuhe gewähren ihrem Träger Brutaler Hieb +I und Verletzen +I.

", + "quantity": 1, + "price": 3050.1, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343143, + "modifiedTime": 1740227863011, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dvVhgqCv9VDpFW0l" +} diff --git a/packs/items/Fackel_Q61SvqiQUoVfU99X.json b/packs/items/Fackel_Q61SvqiQUoVfU99X.json new file mode 100644 index 00000000..4503b9f8 --- /dev/null +++ b/packs/items/Fackel_Q61SvqiQUoVfU99X.json @@ -0,0 +1,35 @@ +{ + "_id": "Q61SvqiQUoVfU99X", + "name": "Fackel", + "type": "weapon", + "img": "icons/sundries/lights/torch-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Brennt 2h

", + "quantity": 1, + "price": 0.01, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342941, + "modifiedTime": 1740227862991, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Q61SvqiQUoVfU99X" +} diff --git a/packs/items/Federkiel_L2ZE2l98snBZw5DZ.json b/packs/items/Federkiel_L2ZE2l98snBZw5DZ.json new file mode 100644 index 00000000..e03302dc --- /dev/null +++ b/packs/items/Federkiel_L2ZE2l98snBZw5DZ.json @@ -0,0 +1,31 @@ +{ + "_id": "L2ZE2l98snBZw5DZ", + "name": "Federkiel", + "type": "loot", + "img": "icons/tools/scribal/ink-quill-pink.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342898, + "modifiedTime": 1740227862985, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!L2ZE2l98snBZw5DZ" +} diff --git a/packs/items/Feindfeger_QhJllncFlQu7BGDw.json b/packs/items/Feindfeger_QhJllncFlQu7BGDw.json new file mode 100644 index 00000000..86dc487a --- /dev/null +++ b/packs/items/Feindfeger_QhJllncFlQu7BGDw.json @@ -0,0 +1,87 @@ +{ + "_id": "QhJllncFlQu7BGDw", + "name": "Feindfeger", + "type": "weapon", + "img": "icons/weapons/swords/greatsword-crossguard-steel.webp", + "effects": [ + { + "_id": "Oz0U5fEJSQ7HPQDG", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Rundumschlag", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Rundumschlag +II", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!QhJllncFlQu7BGDw.Oz0U5fEJSQ7HPQDG" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Unscheinbar aussehender Bihänder +2 mit Rundumschlag +II.

\n

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 9760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -6 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342946, + "modifiedTime": 1740227862992, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QhJllncFlQu7BGDw" +} diff --git a/packs/items/Fellmantel_des_Heilers_rvDTHq5UoRK6acm6.json b/packs/items/Fellmantel_des_Heilers_rvDTHq5UoRK6acm6.json new file mode 100644 index 00000000..6dbe77a2 --- /dev/null +++ b/packs/items/Fellmantel_des_Heilers_rvDTHq5UoRK6acm6.json @@ -0,0 +1,138 @@ +{ + "_id": "rvDTHq5UoRK6acm6", + "name": "Fellmantel des Heilers", + "type": "armor", + "img": "icons/equipment/chest/vest-leather-tattered-white.webp", + "effects": [ + { + "_id": "5vJF9ck6rDsBPnKl", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!rvDTHq5UoRK6acm6.5vJF9ck6rDsBPnKl" + }, + { + "_id": "Uzo51C3LrgP3G8jb", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.healing" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Heilzauber +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!rvDTHq5UoRK6acm6.Uzo51C3LrgP3G8jb" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese aus weißem Fell geschneiderte Lederrüstung gewährt +2 auf alle Heilzauber.

", + "quantity": 1, + "price": 4254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343475, + "modifiedTime": 1740227863024, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rvDTHq5UoRK6acm6" +} diff --git a/packs/items/Feuerballzepter_abxhFbHx3dzRUPt8.json b/packs/items/Feuerballzepter_abxhFbHx3dzRUPt8.json new file mode 100644 index 00000000..d40166a4 --- /dev/null +++ b/packs/items/Feuerballzepter_abxhFbHx3dzRUPt8.json @@ -0,0 +1,32 @@ +{ + "_id": "abxhFbHx3dzRUPt8", + "name": "Feuerballzepter", + "type": "equipment", + "img": "icons/weapons/wands/wand-carved-fire.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Zepter, in das der Zauber @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerball} eingebettet wurde, dessen Aklingzeit man 2x/Tag ignorieren kann.

", + "quantity": 1, + "price": 7630, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343091, + "modifiedTime": 1740227863006, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!abxhFbHx3dzRUPt8" +} diff --git a/packs/items/Feuerstein___Zunder_JjM6nTZzV28ioIFq.json b/packs/items/Feuerstein___Zunder_JjM6nTZzV28ioIFq.json new file mode 100644 index 00000000..fff4cda4 --- /dev/null +++ b/packs/items/Feuerstein___Zunder_JjM6nTZzV28ioIFq.json @@ -0,0 +1,31 @@ +{ + "_id": "JjM6nTZzV28ioIFq", + "name": "Feuerstein & Zunder", + "type": "loot", + "img": "icons/commodities/stone/geode-raw-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.05, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342882, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JjM6nTZzV28ioIFq" +} diff --git a/packs/items/Flegel_SLmQz2B4JvywROCv.json b/packs/items/Flegel_SLmQz2B4JvywROCv.json new file mode 100644 index 00000000..3b9a160a --- /dev/null +++ b/packs/items/Flegel_SLmQz2B4JvywROCv.json @@ -0,0 +1,87 @@ +{ + "_id": "SLmQz2B4JvywROCv", + "name": "Flegel", + "type": "weapon", + "img": "icons/weapons/maces/flail-ball-grey.webp", + "effects": [ + { + "_id": "yXvt3CT4FbXYjIfc", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!SLmQz2B4JvywROCv.yXvt3CT4FbXYjIfc" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -2

", + "quantity": 1, + "price": 8, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342987, + "modifiedTime": 1740227862999, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!SLmQz2B4JvywROCv" +} diff --git a/packs/items/Flegel__1_2le5COwoh45Pc4oD.json b/packs/items/Flegel__1_2le5COwoh45Pc4oD.json new file mode 100644 index 00000000..9969870f --- /dev/null +++ b/packs/items/Flegel__1_2le5COwoh45Pc4oD.json @@ -0,0 +1,87 @@ +{ + "_id": "2le5COwoh45Pc4oD", + "name": "Flegel +1", + "type": "weapon", + "img": "icons/weapons/maces/flail-cube-grey.webp", + "effects": [ + { + "_id": "rUye8ORwMGGtWPrr", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!2le5COwoh45Pc4oD.rUye8ORwMGGtWPrr" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -2

", + "quantity": 1, + "price": 1758, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342692, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2le5COwoh45Pc4oD" +} diff --git a/packs/items/Flegel__2_JZDsSUkQGVf0aOjH.json b/packs/items/Flegel__2_JZDsSUkQGVf0aOjH.json new file mode 100644 index 00000000..12be4fc2 --- /dev/null +++ b/packs/items/Flegel__2_JZDsSUkQGVf0aOjH.json @@ -0,0 +1,87 @@ +{ + "_id": "JZDsSUkQGVf0aOjH", + "name": "Flegel +2", + "type": "weapon", + "img": "icons/weapons/maces/flail-spiked-grey.webp", + "effects": [ + { + "_id": "PD6vgViNBP4QaxMK", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!JZDsSUkQGVf0aOjH.PD6vgViNBP4QaxMK" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -2

", + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342878, + "modifiedTime": 1740227862983, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JZDsSUkQGVf0aOjH" +} diff --git a/packs/items/Flegel__3_BrsnuGuOEfolt9VV.json b/packs/items/Flegel__3_BrsnuGuOEfolt9VV.json new file mode 100644 index 00000000..3d3dc759 --- /dev/null +++ b/packs/items/Flegel__3_BrsnuGuOEfolt9VV.json @@ -0,0 +1,87 @@ +{ + "_id": "BrsnuGuOEfolt9VV", + "name": "Flegel +3", + "type": "weapon", + "img": "icons/weapons/maces/flail-studded-grey.webp", + "effects": [ + { + "_id": "98YoU1PGqcSm47Zw", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!BrsnuGuOEfolt9VV.98YoU1PGqcSm47Zw" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -2

", + "quantity": 1, + "price": 2758, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342794, + "modifiedTime": 1740227862974, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!BrsnuGuOEfolt9VV" +} diff --git a/packs/items/Fliegender_Teppich_AlmkanwZXY9UxMUD.json b/packs/items/Fliegender_Teppich_AlmkanwZXY9UxMUD.json new file mode 100644 index 00000000..95372001 --- /dev/null +++ b/packs/items/Fliegender_Teppich_AlmkanwZXY9UxMUD.json @@ -0,0 +1,31 @@ +{ + "_id": "AlmkanwZXY9UxMUD", + "name": "Fliegender Teppich", + "type": "loot", + "img": "icons/commodities/cloth/cloth-patterned-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein legendärer Gegenstand aus den heißen Wüstenlanden, in den die Zauber @Compendium[ds4.spells.NwLeietvcarS6zP5]{Fliegen} und @Compendium[ds4.spells.KUbT1gBeThcLY7vU]{Spurt} eingebettet sind. Die Zauber wirken permanent auf denjenigen, der in der Mitte des Teppichs sitzt. Proben auf Zaubern sind nicht erforderlich.

", + "quantity": 1, + "price": 4340, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342789, + "modifiedTime": 1740227862973, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!AlmkanwZXY9UxMUD" +} diff --git a/packs/items/Fliegentrank_V6ywiDBc1Son1XrQ.json b/packs/items/Fliegentrank_V6ywiDBc1Son1XrQ.json new file mode 100644 index 00000000..f217e125 --- /dev/null +++ b/packs/items/Fliegentrank_V6ywiDBc1Son1XrQ.json @@ -0,0 +1,31 @@ +{ + "_id": "V6ywiDBc1Son1XrQ", + "name": "Fliegentrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-conical-corked-yellow.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser oft gelbe Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.NwLeietvcarS6zP5]{Fliegen} (Probenwert 20; Patzer ausgeschlossen).

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343047, + "modifiedTime": 1740227863002, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!V6ywiDBc1Son1XrQ" +} diff --git a/packs/items/G_rtel_der_Trollst_rke_0Vd79Orsle4PUqs2.json b/packs/items/G_rtel_der_Trollst_rke_0Vd79Orsle4PUqs2.json new file mode 100644 index 00000000..c6c56343 --- /dev/null +++ b/packs/items/G_rtel_der_Trollst_rke_0Vd79Orsle4PUqs2.json @@ -0,0 +1,76 @@ +{ + "_id": "0Vd79Orsle4PUqs2", + "name": "Gürtel der Trollstärke", + "type": "equipment", + "img": "icons/equipment/waist/belt-armored-studded-steel.webp", + "effects": [ + { + "_id": "43bRMhcEqMvQvRQU", + "flags": {}, + "changes": [ + { + "key": "system.traits.strength.total", + "value": "3", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Stärke +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0Vd79Orsle4PUqs2.43bRMhcEqMvQvRQU" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser mit kleinen Eisenplatten beschlagene Gürtel erhöht die Stärke seines Trägers um 3.

", + "quantity": 1, + "price": 3250.05, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342634, + "modifiedTime": 1740227862961, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0Vd79Orsle4PUqs2" +} diff --git a/packs/items/Geisterbote_v7WiMqH1XylGqNOy.json b/packs/items/Geisterbote_v7WiMqH1XylGqNOy.json new file mode 100644 index 00000000..d7b0e4af --- /dev/null +++ b/packs/items/Geisterbote_v7WiMqH1XylGqNOy.json @@ -0,0 +1,31 @@ +{ + "_id": "v7WiMqH1XylGqNOy", + "name": "Geisterbote", + "type": "loot", + "img": "icons/commodities/materials/glass-orb-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Jeder dieser mit Rauch gefüllten Behälter enthält eine Ladung des Zaubers @Compendium[ds4.spells.wnYRgIjVtIhL26eg]{Botschaft}.

", + "quantity": 1, + "price": 454, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343550, + "modifiedTime": 1740227863028, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!v7WiMqH1XylGqNOy" +} diff --git a/packs/items/Gew_nder_des_Adlers_6UBvjMJd6n5P5YWv.json b/packs/items/Gew_nder_des_Adlers_6UBvjMJd6n5P5YWv.json new file mode 100644 index 00000000..6f85bd74 --- /dev/null +++ b/packs/items/Gew_nder_des_Adlers_6UBvjMJd6n5P5YWv.json @@ -0,0 +1,79 @@ +{ + "_id": "6UBvjMJd6n5P5YWv", + "name": "Gewänder des Adlers", + "type": "armor", + "img": "icons/equipment/chest/breastplate-banded-simple-leather-brown.webp", + "effects": [ + { + "_id": "cl2PqWeAtDsBjz8k", + "flags": {}, + "changes": [ + { + "key": "system.attributes.mind.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Geist +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!6UBvjMJd6n5P5YWv.cl2PqWeAtDsBjz8k" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese hellbeige, mit Adlerfedern verzierte Lederrüstung +1 gewährt +1 auf Geist.

", + "quantity": 1, + "price": 4254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342730, + "modifiedTime": 1740227862967, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6UBvjMJd6n5P5YWv" +} diff --git a/packs/items/Giftbanntrank_oPUlB9rz5rvRKrq8.json b/packs/items/Giftbanntrank_oPUlB9rz5rvRKrq8.json new file mode 100644 index 00000000..0df89807 --- /dev/null +++ b/packs/items/Giftbanntrank_oPUlB9rz5rvRKrq8.json @@ -0,0 +1,31 @@ +{ + "_id": "oPUlB9rz5rvRKrq8", + "name": "Giftbanntrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-bulb-corked-glowing-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wirkt den Zauber @Compendium[ds4.spells.ONhSaLNmvvacgCjA]{Giftbann} auf den Trinkenden (keine Probe nötig).

", + "quantity": 1, + "price": 150, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343385, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oPUlB9rz5rvRKrq8" +} diff --git a/packs/items/Gl_ckstrank_hrAyguSjO6JhTE5m.json b/packs/items/Gl_ckstrank_hrAyguSjO6JhTE5m.json new file mode 100644 index 00000000..b77adb68 --- /dev/null +++ b/packs/items/Gl_ckstrank_hrAyguSjO6JhTE5m.json @@ -0,0 +1,31 @@ +{ + "_id": "hrAyguSjO6JhTE5m", + "name": "Glückstrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-corked-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Trinkende kann für W20 Stunden alle Patzer ignorieren.

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343239, + "modifiedTime": 1740227863016, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hrAyguSjO6JhTE5m" +} diff --git a/packs/items/Grausame_Axt_lHlwYWlgC2iKjDFM.json b/packs/items/Grausame_Axt_lHlwYWlgC2iKjDFM.json new file mode 100644 index 00000000..9063d31c --- /dev/null +++ b/packs/items/Grausame_Axt_lHlwYWlgC2iKjDFM.json @@ -0,0 +1,138 @@ +{ + "_id": "lHlwYWlgC2iKjDFM", + "name": "Grausame Axt", + "type": "weapon", + "img": "icons/weapons/axes/shortaxe-simple-black.webp", + "effects": [ + { + "_id": "wh12XwprBMtY3BTB", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!lHlwYWlgC2iKjDFM.wh12XwprBMtY3BTB" + }, + { + "_id": "5EWlvp1ZJkHmodfC", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Verletzen", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Verletzen +III", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!lHlwYWlgC2iKjDFM.5EWlvp1ZJkHmodfC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Antike Axt +1 mit Verletzen +III

", + "quantity": 1, + "price": 4256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343320, + "modifiedTime": 1740227863019, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lHlwYWlgC2iKjDFM" +} diff --git a/packs/items/Gro_er_Heiltrank_tW53rAmCXx6rqKMP.json b/packs/items/Gro_er_Heiltrank_tW53rAmCXx6rqKMP.json new file mode 100644 index 00000000..27c4393d --- /dev/null +++ b/packs/items/Gro_er_Heiltrank_tW53rAmCXx6rqKMP.json @@ -0,0 +1,31 @@ +{ + "_id": "tW53rAmCXx6rqKMP", + "name": "Großer Heiltrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-stopped-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese meist weinroten Tränke heilen 2W20 Lebenskraft.

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343514, + "modifiedTime": 1740227863026, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tW53rAmCXx6rqKMP" +} diff --git a/packs/items/Gro_er_Schutztrank_Ryv745YriIZNKXG5.json b/packs/items/Gro_er_Schutztrank_Ryv745YriIZNKXG5.json new file mode 100644 index 00000000..cc20bdb6 --- /dev/null +++ b/packs/items/Gro_er_Schutztrank_Ryv745YriIZNKXG5.json @@ -0,0 +1,31 @@ +{ + "_id": "Ryv745YriIZNKXG5", + "name": "Großer Schutztrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-conical-corked-tied-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht für W20 Runden die Abwehr um +3.

", + "quantity": 1, + "price": 100, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342972, + "modifiedTime": 1740227862997, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Ryv745YriIZNKXG5" +} diff --git a/packs/items/Hammer__1_FfVzLWtmCVRwFI4n.json b/packs/items/Hammer__1_FfVzLWtmCVRwFI4n.json new file mode 100644 index 00000000..dc8c5a67 --- /dev/null +++ b/packs/items/Hammer__1_FfVzLWtmCVRwFI4n.json @@ -0,0 +1,87 @@ +{ + "_id": "FfVzLWtmCVRwFI4n", + "name": "Hammer +1", + "type": "weapon", + "img": "icons/weapons/hammers/shorthammer-double-steel.webp", + "effects": [ + { + "_id": "rqEqNTsSgoto2la8", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!FfVzLWtmCVRwFI4n.rqEqNTsSgoto2la8" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1.257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342829, + "modifiedTime": 1740227862980, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FfVzLWtmCVRwFI4n" +} diff --git a/packs/items/Hammer__2_6QehiJpVqqA9bW3P.json b/packs/items/Hammer__2_6QehiJpVqqA9bW3P.json new file mode 100644 index 00000000..98ad70d2 --- /dev/null +++ b/packs/items/Hammer__2_6QehiJpVqqA9bW3P.json @@ -0,0 +1,87 @@ +{ + "_id": "6QehiJpVqqA9bW3P", + "name": "Hammer +2", + "type": "weapon", + "img": "icons/weapons/hammers/shorthammer-double-steel-embossed.webp", + "effects": [ + { + "_id": "xQlGUPOpB6Me9OgF", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!6QehiJpVqqA9bW3P.xQlGUPOpB6Me9OgF" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342728, + "modifiedTime": 1740227862967, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6QehiJpVqqA9bW3P" +} diff --git a/packs/items/Hammer__3_tAdNTxSRq9hARm1p.json b/packs/items/Hammer__3_tAdNTxSRq9hARm1p.json new file mode 100644 index 00000000..1a18bf5c --- /dev/null +++ b/packs/items/Hammer__3_tAdNTxSRq9hARm1p.json @@ -0,0 +1,87 @@ +{ + "_id": "tAdNTxSRq9hARm1p", + "name": "Hammer +3", + "type": "weapon", + "img": "icons/weapons/hammers/shorthammer-embossed-white.webp", + "effects": [ + { + "_id": "aLeVPvqVvSHnDTsp", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!tAdNTxSRq9hARm1p.aLeVPvqVvSHnDTsp" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343509, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tAdNTxSRq9hARm1p" +} diff --git a/packs/items/Hammer_sMJw9EQtd2pYsgYE.json b/packs/items/Hammer_sMJw9EQtd2pYsgYE.json new file mode 100644 index 00000000..ac5baef5 --- /dev/null +++ b/packs/items/Hammer_sMJw9EQtd2pYsgYE.json @@ -0,0 +1,35 @@ +{ + "_id": "sMJw9EQtd2pYsgYE", + "name": "Hammer", + "type": "weapon", + "img": "icons/weapons/hammers/shorthammer-simple-iron-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343482, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sMJw9EQtd2pYsgYE" +} diff --git a/packs/items/Handschellen_zjefX9KYvMphtVwX.json b/packs/items/Handschellen_zjefX9KYvMphtVwX.json new file mode 100644 index 00000000..4570d32d --- /dev/null +++ b/packs/items/Handschellen_zjefX9KYvMphtVwX.json @@ -0,0 +1,31 @@ +{ + "_id": "zjefX9KYvMphtVwX", + "name": "Handschellen", + "type": "loot", + "img": "icons/sundries/survival/cuffs-shackles-steel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Preis für beide Schlösser extra ermitteln

", + "quantity": 1, + "price": 8, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343613, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zjefX9KYvMphtVwX" +} diff --git a/packs/items/Heilkraut_zquQpOOVr5lIbnmL.json b/packs/items/Heilkraut_zquQpOOVr5lIbnmL.json new file mode 100644 index 00000000..8a6cc061 --- /dev/null +++ b/packs/items/Heilkraut_zquQpOOVr5lIbnmL.json @@ -0,0 +1,31 @@ +{ + "_id": "zquQpOOVr5lIbnmL", + "name": "Heilkraut", + "type": "loot", + "img": "icons/tools/laboratory/bowl-herbs-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Probenwert 10: 1-10 heilt LK in Ergebnishöhe, 11+ kein Heileffekt

", + "quantity": 1, + "price": 2.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343619, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zquQpOOVr5lIbnmL" +} diff --git a/packs/items/Heiltrank_19bmt5UJrT3T36wE.json b/packs/items/Heiltrank_19bmt5UJrT3T36wE.json new file mode 100644 index 00000000..0398a563 --- /dev/null +++ b/packs/items/Heiltrank_19bmt5UJrT3T36wE.json @@ -0,0 +1,31 @@ +{ + "_id": "19bmt5UJrT3T36wE", + "name": "Heiltrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-corked-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses oftmals rote Getränk heilt W20 Lebenskraft.

", + "quantity": 1, + "price": 10, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342647, + "modifiedTime": 1740227862962, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!19bmt5UJrT3T36wE" +} diff --git a/packs/items/Hellebarde_2JQowFF6ZjF90OFI.json b/packs/items/Hellebarde_2JQowFF6ZjF90OFI.json new file mode 100644 index 00000000..a637ea7b --- /dev/null +++ b/packs/items/Hellebarde_2JQowFF6ZjF90OFI.json @@ -0,0 +1,35 @@ +{ + "_id": "2JQowFF6ZjF90OFI", + "name": "Hellebarde", + "type": "weapon", + "img": "icons/weapons/polearms/halberd-engraved-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2, Zerbricht bei Schlagen-Patzer

", + "quantity": 1, + "price": 1754, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342678, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2JQowFF6ZjF90OFI" +} diff --git a/packs/items/Hellebarde__1_zoPPqqDyRTvmV2do.json b/packs/items/Hellebarde__1_zoPPqqDyRTvmV2do.json new file mode 100644 index 00000000..fb4d84c3 --- /dev/null +++ b/packs/items/Hellebarde__1_zoPPqqDyRTvmV2do.json @@ -0,0 +1,138 @@ +{ + "_id": "zoPPqqDyRTvmV2do", + "name": "Hellebarde +1", + "type": "weapon", + "img": "icons/weapons/polearms/halberd-crescent-engraved-steel.webp", + "effects": [ + { + "_id": "APXje5Ppu0d75HNw", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!zoPPqqDyRTvmV2do.APXje5Ppu0d75HNw" + }, + { + "_id": "FuPTO8plsKR3lq8Z", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!zoPPqqDyRTvmV2do.FuPTO8plsKR3lq8Z" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 4, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343617, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zoPPqqDyRTvmV2do" +} diff --git a/packs/items/Hellebarde__2_qwXiwcxaDDCzmLLM.json b/packs/items/Hellebarde__2_qwXiwcxaDDCzmLLM.json new file mode 100644 index 00000000..a2365763 --- /dev/null +++ b/packs/items/Hellebarde__2_qwXiwcxaDDCzmLLM.json @@ -0,0 +1,87 @@ +{ + "_id": "qwXiwcxaDDCzmLLM", + "name": "Hellebarde +2", + "type": "weapon", + "img": "icons/weapons/polearms/halberd-crescent-steel.webp", + "effects": [ + { + "_id": "cEFYfp6VrhRcwEKz", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!qwXiwcxaDDCzmLLM.cEFYfp6VrhRcwEKz" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343472, + "modifiedTime": 1740227863023, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!qwXiwcxaDDCzmLLM" +} diff --git a/packs/items/Hellebarde__3_wy8GXE1zjaRpXL8H.json b/packs/items/Hellebarde__3_wy8GXE1zjaRpXL8H.json new file mode 100644 index 00000000..1994671a --- /dev/null +++ b/packs/items/Hellebarde__3_wy8GXE1zjaRpXL8H.json @@ -0,0 +1,87 @@ +{ + "_id": "wy8GXE1zjaRpXL8H", + "name": "Hellebarde +3", + "type": "weapon", + "img": "icons/weapons/polearms/halberd-crescent-glowing.webp", + "effects": [ + { + "_id": "JIWNiHZdqmMiPMBz", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!wy8GXE1zjaRpXL8H.JIWNiHZdqmMiPMBz" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2754, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343558, + "modifiedTime": 1740227863028, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!wy8GXE1zjaRpXL8H" +} diff --git a/packs/items/Holzbecher_pzjZv0HhCA15wy1i.json b/packs/items/Holzbecher_pzjZv0HhCA15wy1i.json new file mode 100644 index 00000000..36d5cb6b --- /dev/null +++ b/packs/items/Holzbecher_pzjZv0HhCA15wy1i.json @@ -0,0 +1,31 @@ +{ + "_id": "pzjZv0HhCA15wy1i", + "name": "Holzbecher", + "type": "loot", + "img": "icons/containers/kitchenware/mug-simple-wooden-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.2, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343470, + "modifiedTime": 1740227863023, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pzjZv0HhCA15wy1i" +} diff --git a/packs/items/Holzbesteck_hGiaAJyEUHbPl5pf.json b/packs/items/Holzbesteck_hGiaAJyEUHbPl5pf.json new file mode 100644 index 00000000..c6756285 --- /dev/null +++ b/packs/items/Holzbesteck_hGiaAJyEUHbPl5pf.json @@ -0,0 +1,31 @@ +{ + "_id": "hGiaAJyEUHbPl5pf", + "name": "Holzbesteck", + "type": "loot", + "img": "icons/tools/cooking/fork-steel-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.2, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343232, + "modifiedTime": 1740227863016, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hGiaAJyEUHbPl5pf" +} diff --git a/packs/items/Holzschild_J7d2zx4kqKEdMR1j.json b/packs/items/Holzschild_J7d2zx4kqKEdMR1j.json new file mode 100644 index 00000000..2a8ef265 --- /dev/null +++ b/packs/items/Holzschild_J7d2zx4kqKEdMR1j.json @@ -0,0 +1,33 @@ +{ + "_id": "J7d2zx4kqKEdMR1j", + "name": "Holzschild", + "type": "shield", + "img": "icons/equipment/shield/round-wooden-boss-steel-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zerbricht bei einem Abwehr-Patzer

", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342872, + "modifiedTime": 1740227862983, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!J7d2zx4kqKEdMR1j" +} diff --git a/packs/items/Holzschild__1_89ZunLlXp1Lm6Wzd.json b/packs/items/Holzschild__1_89ZunLlXp1Lm6Wzd.json new file mode 100644 index 00000000..56ef6406 --- /dev/null +++ b/packs/items/Holzschild__1_89ZunLlXp1Lm6Wzd.json @@ -0,0 +1,85 @@ +{ + "_id": "89ZunLlXp1Lm6Wzd", + "name": "Holzschild +1", + "type": "shield", + "img": "icons/equipment/shield/round-wooden-boss-steel-red.webp", + "effects": [ + { + "_id": "1M6yYhufFsvYsske", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!89ZunLlXp1Lm6Wzd.1M6yYhufFsvYsske" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342758, + "modifiedTime": 1740227862969, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!89ZunLlXp1Lm6Wzd" +} diff --git a/packs/items/Holzschild__2_0SrSqLjQ5CMNbwXV.json b/packs/items/Holzschild__2_0SrSqLjQ5CMNbwXV.json new file mode 100644 index 00000000..9da689d5 --- /dev/null +++ b/packs/items/Holzschild__2_0SrSqLjQ5CMNbwXV.json @@ -0,0 +1,85 @@ +{ + "_id": "0SrSqLjQ5CMNbwXV", + "name": "Holzschild +2", + "type": "shield", + "img": "icons/equipment/shield/round-wooden-reinforced-boss-steel.webp", + "effects": [ + { + "_id": "eu80ImNhR1gsT7jg", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0SrSqLjQ5CMNbwXV.eu80ImNhR1gsT7jg" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342631, + "modifiedTime": 1740227862960, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0SrSqLjQ5CMNbwXV" +} diff --git a/packs/items/Holzschild__3_KefO4lxHxwddpFFu.json b/packs/items/Holzschild__3_KefO4lxHxwddpFFu.json new file mode 100644 index 00000000..0c9f9f95 --- /dev/null +++ b/packs/items/Holzschild__3_KefO4lxHxwddpFFu.json @@ -0,0 +1,85 @@ +{ + "_id": "KefO4lxHxwddpFFu", + "name": "Holzschild +3", + "type": "shield", + "img": "icons/equipment/shield/round-wooden-boss-gold-brown.webp", + "effects": [ + { + "_id": "AkDi2TNzgpT2ZfrH", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!KefO4lxHxwddpFFu.AkDi2TNzgpT2ZfrH" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342895, + "modifiedTime": 1740227862985, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KefO4lxHxwddpFFu" +} diff --git a/packs/items/Holzw_rfel__sechsseitig__iWOrlMcGVAXTvFEg.json b/packs/items/Holzw_rfel__sechsseitig__iWOrlMcGVAXTvFEg.json new file mode 100644 index 00000000..6981dbf7 --- /dev/null +++ b/packs/items/Holzw_rfel__sechsseitig__iWOrlMcGVAXTvFEg.json @@ -0,0 +1,31 @@ +{ + "_id": "iWOrlMcGVAXTvFEg", + "name": "Holzwürfel (sechsseitig)", + "type": "loot", + "img": "icons/sundries/gaming/dice-runed-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.02, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343290, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iWOrlMcGVAXTvFEg" +} diff --git a/packs/items/Immertreff_5cqP2SvMe5j0BD3t.json b/packs/items/Immertreff_5cqP2SvMe5j0BD3t.json new file mode 100644 index 00000000..7be52c54 --- /dev/null +++ b/packs/items/Immertreff_5cqP2SvMe5j0BD3t.json @@ -0,0 +1,138 @@ +{ + "_id": "5cqP2SvMe5j0BD3t", + "name": "Immertreff", + "type": "weapon", + "img": "icons/weapons/bows/longbow-gold-pink.webp", + "effects": [ + { + "_id": "QN5NueLJpTY2Vwat", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Fieser Schuss", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Fieser Schuss +II", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!5cqP2SvMe5j0BD3t.QN5NueLJpTY2Vwat" + }, + { + "_id": "rDzmy3Xb0qQfErWi", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Scharfschütze", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Scharfschütze +II", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!5cqP2SvMe5j0BD3t.rDzmy3Xb0qQfErWi" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein tödlicher Langbogen +2 mit Fieser Schuss +II und Scharfschütze +II.

\n

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 10660, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342725, + "modifiedTime": 1740227862966, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5cqP2SvMe5j0BD3t" +} diff --git a/packs/items/K_nigsblut_cqVt9s7u46u0925o.json b/packs/items/K_nigsblut_cqVt9s7u46u0925o.json new file mode 100644 index 00000000..642150eb --- /dev/null +++ b/packs/items/K_nigsblut_cqVt9s7u46u0925o.json @@ -0,0 +1,87 @@ +{ + "_id": "cqVt9s7u46u0925o", + "name": "Königsblut", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-bone-engraved-black.webp", + "effects": [ + { + "_id": "JLc9UYdHy4aAeqA2", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!cqVt9s7u46u0925o.JLc9UYdHy4aAeqA2" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Durch diesen magischen Dolch +3 mit @Compendium[ds4.spells.RUfE7hqqHCKMEMbh]{Schattenklinge}, @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} (Abklingzeit 1x täglich ignorierbar) sollen angeblich schon Könige gestorben sein

\n

Initiative +1

", + "quantity": 1, + "price": 17352, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343116, + "modifiedTime": 1740227863008, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cqVt9s7u46u0925o" +} diff --git a/packs/items/Kampfstab__1_dq4wK5bmMvOfwoWH.json b/packs/items/Kampfstab__1_dq4wK5bmMvOfwoWH.json new file mode 100644 index 00000000..f961470d --- /dev/null +++ b/packs/items/Kampfstab__1_dq4wK5bmMvOfwoWH.json @@ -0,0 +1,35 @@ +{ + "_id": "dq4wK5bmMvOfwoWH", + "name": "Kampfstab +1", + "type": "weapon", + "img": "icons/weapons/staves/staff-simple-gold.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Zielzaubern +1

", + "quantity": 1, + "price": 1250.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343142, + "modifiedTime": 1740227863011, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dq4wK5bmMvOfwoWH" +} diff --git a/packs/items/Kampfstab__2_HcN322i9KLPzp1d4.json b/packs/items/Kampfstab__2_HcN322i9KLPzp1d4.json new file mode 100644 index 00000000..0190ed8f --- /dev/null +++ b/packs/items/Kampfstab__2_HcN322i9KLPzp1d4.json @@ -0,0 +1,87 @@ +{ + "_id": "HcN322i9KLPzp1d4", + "name": "Kampfstab +2", + "type": "weapon", + "img": "icons/weapons/staves/staff-simple-carved.webp", + "effects": [ + { + "_id": "7AIeGsBF1gYX7cSX", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!HcN322i9KLPzp1d4.7AIeGsBF1gYX7cSX" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Zielzaubern +1

", + "quantity": 1, + "price": 1750.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342865, + "modifiedTime": 1740227862982, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HcN322i9KLPzp1d4" +} diff --git a/packs/items/Kampfstab__3_JG18wEtysl2m6sWq.json b/packs/items/Kampfstab__3_JG18wEtysl2m6sWq.json new file mode 100644 index 00000000..e88f4e14 --- /dev/null +++ b/packs/items/Kampfstab__3_JG18wEtysl2m6sWq.json @@ -0,0 +1,87 @@ +{ + "_id": "JG18wEtysl2m6sWq", + "name": "Kampfstab +3", + "type": "weapon", + "img": "icons/weapons/staves/staff-ornate.webp", + "effects": [ + { + "_id": "jMu0Mqf6qy2Df8vI", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!JG18wEtysl2m6sWq.jMu0Mqf6qy2Df8vI" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Zielzaubern +1

", + "quantity": 1, + "price": 2250.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342875, + "modifiedTime": 1740227862983, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JG18wEtysl2m6sWq" +} diff --git a/packs/items/Kampfstab_ylWwhiSGGWLee2PA.json b/packs/items/Kampfstab_ylWwhiSGGWLee2PA.json new file mode 100644 index 00000000..19f71201 --- /dev/null +++ b/packs/items/Kampfstab_ylWwhiSGGWLee2PA.json @@ -0,0 +1,79 @@ +{ + "_id": "ylWwhiSGGWLee2PA", + "name": "Kampfstab", + "type": "weapon", + "img": "icons/weapons/staves/staff-simple.webp", + "effects": [ + { + "_id": "1aNTAQBai6qAcWGM", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.targetedSpellcasting.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Zielzaubern +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ylWwhiSGGWLee2PA.1aNTAQBai6qAcWGM" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Zielzaubern +1, Zerbricht bei Schlagen-Patzer

", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343583, + "modifiedTime": 1740227863030, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ylWwhiSGGWLee2PA" +} diff --git a/packs/items/Kampftrank_kIiDbrtAPno14O85.json b/packs/items/Kampftrank_kIiDbrtAPno14O85.json new file mode 100644 index 00000000..3983b2cc --- /dev/null +++ b/packs/items/Kampftrank_kIiDbrtAPno14O85.json @@ -0,0 +1,31 @@ +{ + "_id": "kIiDbrtAPno14O85", + "name": "Kampftrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-corked-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Meist von oranger Farbe erhöht solch ein Trank Schlagen und Abwehr für die Dauer eines Kampfes um +1.

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343317, + "modifiedTime": 1740227863019, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kIiDbrtAPno14O85" +} diff --git a/packs/items/Karren__2_R_der__FPriMnCQK7DQHzJa.json b/packs/items/Karren__2_R_der__FPriMnCQK7DQHzJa.json new file mode 100644 index 00000000..6fdb60ca --- /dev/null +++ b/packs/items/Karren__2_R_der__FPriMnCQK7DQHzJa.json @@ -0,0 +1,31 @@ +{ + "_id": "FPriMnCQK7DQHzJa", + "name": "Karren (2 Räder)", + "type": "loot", + "img": "icons/commodities/wood/wood-wheel-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 15, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342819, + "modifiedTime": 1740227862979, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FPriMnCQK7DQHzJa" +} diff --git a/packs/items/Karten_des_Schummlers_nff3XieL5dvOZga9.json b/packs/items/Karten_des_Schummlers_nff3XieL5dvOZga9.json new file mode 100644 index 00000000..5ee0e3a1 --- /dev/null +++ b/packs/items/Karten_des_Schummlers_nff3XieL5dvOZga9.json @@ -0,0 +1,31 @@ +{ + "_id": "nff3XieL5dvOZga9", + "name": "Karten des Schummlers", + "type": "loot", + "img": "icons/sundries/gaming/playing-cards-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

In dieses wunderschöne Spielkarten-Set ist der Zauber @Compendium[ds4.spells.BGnY1p1qZXwpzXFA]{Zeitstop} eingebettet.

", + "quantity": 1, + "price": 13031, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343351, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nff3XieL5dvOZga9" +} diff --git a/packs/items/Kartenspiel_CsUnbnytOapKsjuW.json b/packs/items/Kartenspiel_CsUnbnytOapKsjuW.json new file mode 100644 index 00000000..a5738541 --- /dev/null +++ b/packs/items/Kartenspiel_CsUnbnytOapKsjuW.json @@ -0,0 +1,31 @@ +{ + "_id": "CsUnbnytOapKsjuW", + "name": "Kartenspiel", + "type": "loot", + "img": "icons/sundries/gaming/playing-cards-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342803, + "modifiedTime": 1740227862977, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!CsUnbnytOapKsjuW" +} diff --git a/packs/items/Kette_der_Regeneration_VfjAtfQv5Ga8hoHu.json b/packs/items/Kette_der_Regeneration_VfjAtfQv5Ga8hoHu.json new file mode 100644 index 00000000..6809e3e5 --- /dev/null +++ b/packs/items/Kette_der_Regeneration_VfjAtfQv5Ga8hoHu.json @@ -0,0 +1,32 @@ +{ + "_id": "VfjAtfQv5Ga8hoHu", + "name": "Kette der Regeneration", + "type": "equipment", + "img": "icons/equipment/neck/choker-chain-thick-silver.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese schlichte Silberkette heilt in jeder Kamfprunde 1 LK.

", + "quantity": 1, + "price": null, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343052, + "modifiedTime": 1740227863002, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VfjAtfQv5Ga8hoHu" +} diff --git a/packs/items/Kettenpanzer_09Hp2c2jgoXx7cV0.json b/packs/items/Kettenpanzer_09Hp2c2jgoXx7cV0.json new file mode 100644 index 00000000..a38665a7 --- /dev/null +++ b/packs/items/Kettenpanzer_09Hp2c2jgoXx7cV0.json @@ -0,0 +1,35 @@ +{ + "_id": "09Hp2c2jgoXx7cV0", + "name": "Kettenpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 10, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342626, + "modifiedTime": 1740227862959, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!09Hp2c2jgoXx7cV0" +} diff --git a/packs/items/Kettenpanzer__1_TcyE0faEebPLoLOD.json b/packs/items/Kettenpanzer__1_TcyE0faEebPLoLOD.json new file mode 100644 index 00000000..0880a33b --- /dev/null +++ b/packs/items/Kettenpanzer__1_TcyE0faEebPLoLOD.json @@ -0,0 +1,35 @@ +{ + "_id": "TcyE0faEebPLoLOD", + "name": "Kettenpanzer +1", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343004, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TcyE0faEebPLoLOD" +} diff --git a/packs/items/Kettenpanzer__2_12WbnUt5h84JQxMp.json b/packs/items/Kettenpanzer__2_12WbnUt5h84JQxMp.json new file mode 100644 index 00000000..613dc9ce --- /dev/null +++ b/packs/items/Kettenpanzer__2_12WbnUt5h84JQxMp.json @@ -0,0 +1,87 @@ +{ + "_id": "12WbnUt5h84JQxMp", + "name": "Kettenpanzer +2", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "gPN9UcowmdjdyGyn", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!12WbnUt5h84JQxMp.gPN9UcowmdjdyGyn" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342645, + "modifiedTime": 1740227862962, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!12WbnUt5h84JQxMp" +} diff --git a/packs/items/Kettenpanzer__3_DRClmtZNGGYtritZ.json b/packs/items/Kettenpanzer__3_DRClmtZNGGYtritZ.json new file mode 100644 index 00000000..ade86053 --- /dev/null +++ b/packs/items/Kettenpanzer__3_DRClmtZNGGYtritZ.json @@ -0,0 +1,87 @@ +{ + "_id": "DRClmtZNGGYtritZ", + "name": "Kettenpanzer +3", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "BKpvNVwaSovtKyRB", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!DRClmtZNGGYtritZ.BKpvNVwaSovtKyRB" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 5260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342808, + "modifiedTime": 1740227862977, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DRClmtZNGGYtritZ" +} diff --git a/packs/items/Keule__1_pzD6fcJa1Hk4Duwu.json b/packs/items/Keule__1_pzD6fcJa1Hk4Duwu.json new file mode 100644 index 00000000..36cf5bc1 --- /dev/null +++ b/packs/items/Keule__1_pzD6fcJa1Hk4Duwu.json @@ -0,0 +1,87 @@ +{ + "_id": "pzD6fcJa1Hk4Duwu", + "name": "Keule +1", + "type": "weapon", + "img": "icons/weapons/clubs/club-simple-barbed.webp", + "effects": [ + { + "_id": "9ZyXiW0n9WJ5WQOv", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!pzD6fcJa1Hk4Duwu.9ZyXiW0n9WJ5WQOv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1250.2, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343466, + "modifiedTime": 1740227863022, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pzD6fcJa1Hk4Duwu" +} diff --git a/packs/items/Keule__2_GG7o5XbvBmmauzIw.json b/packs/items/Keule__2_GG7o5XbvBmmauzIw.json new file mode 100644 index 00000000..9f1be6d3 --- /dev/null +++ b/packs/items/Keule__2_GG7o5XbvBmmauzIw.json @@ -0,0 +1,87 @@ +{ + "_id": "GG7o5XbvBmmauzIw", + "name": "Keule +2", + "type": "weapon", + "img": "icons/weapons/clubs/club-barbed-engraved-brown.webp", + "effects": [ + { + "_id": "a8zW4tAcGbak3nno", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!GG7o5XbvBmmauzIw.a8zW4tAcGbak3nno" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1750.2, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342855, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GG7o5XbvBmmauzIw" +} diff --git a/packs/items/Keule__3_7g4vNrJOoX0v4Byu.json b/packs/items/Keule__3_7g4vNrJOoX0v4Byu.json new file mode 100644 index 00000000..bfd7e9a1 --- /dev/null +++ b/packs/items/Keule__3_7g4vNrJOoX0v4Byu.json @@ -0,0 +1,87 @@ +{ + "_id": "7g4vNrJOoX0v4Byu", + "name": "Keule +3", + "type": "weapon", + "img": "icons/weapons/clubs/club-banded-brown.webp", + "effects": [ + { + "_id": "8y8e8BsFQZZkwUXk", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!7g4vNrJOoX0v4Byu.8y8e8BsFQZZkwUXk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2250.2, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342744, + "modifiedTime": 1740227862968, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7g4vNrJOoX0v4Byu" +} diff --git a/packs/items/Keule_siJAzGmpHVegUKBF.json b/packs/items/Keule_siJAzGmpHVegUKBF.json new file mode 100644 index 00000000..7913abde --- /dev/null +++ b/packs/items/Keule_siJAzGmpHVegUKBF.json @@ -0,0 +1,35 @@ +{ + "_id": "siJAzGmpHVegUKBF", + "name": "Keule", + "type": "weapon", + "img": "icons/weapons/clubs/club-simple-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zerbricht bei Schlagen-Patzer

", + "quantity": 1, + "price": 0.2, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343492, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!siJAzGmpHVegUKBF" +} diff --git a/packs/items/Kletterausr_stung_3zqSBuiQWIsIov4h.json b/packs/items/Kletterausr_stung_3zqSBuiQWIsIov4h.json new file mode 100644 index 00000000..718b1a94 --- /dev/null +++ b/packs/items/Kletterausr_stung_3zqSBuiQWIsIov4h.json @@ -0,0 +1,31 @@ +{ + "_id": "3zqSBuiQWIsIov4h", + "name": "Kletterausrüstung", + "type": "loot", + "img": "icons/sundries/survival/rope-wrapped-loops-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342702, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3zqSBuiQWIsIov4h" +} diff --git a/packs/items/Klettertrank_udsNOh5h0TQmOYBl.json b/packs/items/Klettertrank_udsNOh5h0TQmOYBl.json new file mode 100644 index 00000000..58fb97d2 --- /dev/null +++ b/packs/items/Klettertrank_udsNOh5h0TQmOYBl.json @@ -0,0 +1,31 @@ +{ + "_id": "udsNOh5h0TQmOYBl", + "name": "Klettertrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-conical-corked-cyan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann für W20 Runden mit seinem normalen Laufen-Wert wie eine Spinne klettern, selbst kopfüber an der Decke.

", + "quantity": 1, + "price": 50, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343544, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!udsNOh5h0TQmOYBl" +} diff --git a/packs/items/Kluft_des_J_gers_zWMPzHIY3vkrCIEJ.json b/packs/items/Kluft_des_J_gers_zWMPzHIY3vkrCIEJ.json new file mode 100644 index 00000000..71f17eba --- /dev/null +++ b/packs/items/Kluft_des_J_gers_zWMPzHIY3vkrCIEJ.json @@ -0,0 +1,130 @@ +{ + "_id": "zWMPzHIY3vkrCIEJ", + "name": "Kluft des Jägers", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-leather-green.webp", + "effects": [ + { + "_id": "RXgVHCUhqvSvdubt", + "flags": {}, + "changes": [ + { + "key": "system.traits.agility.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Bewegung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!zWMPzHIY3vkrCIEJ.RXgVHCUhqvSvdubt" + }, + { + "_id": "XsKZUk7lLh6egc89", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Jäger", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Jäger +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!zWMPzHIY3vkrCIEJ.XsKZUk7lLh6egc89" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese braun-grüne Lederrüstung gewährt neben Jäger +I ihrem Träger +1 auf Bewegung.

", + "quantity": 1, + "price": 1504, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343602, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zWMPzHIY3vkrCIEJ" +} diff --git a/packs/items/Kompass_xwjafjsWdZJBVN0A.json b/packs/items/Kompass_xwjafjsWdZJBVN0A.json new file mode 100644 index 00000000..fd8bd6f9 --- /dev/null +++ b/packs/items/Kompass_xwjafjsWdZJBVN0A.json @@ -0,0 +1,31 @@ +{ + "_id": "xwjafjsWdZJBVN0A", + "name": "Kompass", + "type": "loot", + "img": "icons/tools/navigation/compass-brass-blue-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 35, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343573, + "modifiedTime": 1740227863029, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xwjafjsWdZJBVN0A" +} diff --git a/packs/items/Konzentrationstrank_W2dHT0OENc5kNwnZ.json b/packs/items/Konzentrationstrank_W2dHT0OENc5kNwnZ.json new file mode 100644 index 00000000..17d3e41f --- /dev/null +++ b/packs/items/Konzentrationstrank_W2dHT0OENc5kNwnZ.json @@ -0,0 +1,31 @@ +{ + "_id": "W2dHT0OENc5kNwnZ", + "name": "Konzentrationstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser oft graue Trank verdoppelt GEI für GEI in Runden.

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343054, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!W2dHT0OENc5kNwnZ" +} diff --git a/packs/items/Kriegshorn_c3YlvFbZJD6LbhVi.json b/packs/items/Kriegshorn_c3YlvFbZJD6LbhVi.json new file mode 100644 index 00000000..e9728dd4 --- /dev/null +++ b/packs/items/Kriegshorn_c3YlvFbZJD6LbhVi.json @@ -0,0 +1,84 @@ +{ + "_id": "c3YlvFbZJD6LbhVi", + "name": "Kriegshorn", + "type": "equipment", + "img": "icons/commodities/treasure/horn-carved-banded.webp", + "effects": [ + { + "_id": "DZXHZOg7edkW2RS2", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Schlachtruf", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schlachtruf +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!c3YlvFbZJD6LbhVi.DZXHZOg7edkW2RS2" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Klang des Horns feuert die Kampfgefährten mit seinem eingebetteten Schlachtruf +I an.

", + "quantity": 1, + "price": 2750.05, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343102, + "modifiedTime": 1740227863007, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!c3YlvFbZJD6LbhVi" +} diff --git a/packs/items/Kristallkugel_PQfSHYKxPqia6nG3.json b/packs/items/Kristallkugel_PQfSHYKxPqia6nG3.json new file mode 100644 index 00000000..428b2803 --- /dev/null +++ b/packs/items/Kristallkugel_PQfSHYKxPqia6nG3.json @@ -0,0 +1,31 @@ +{ + "_id": "PQfSHYKxPqia6nG3", + "name": "Kristallkugel", + "type": "loot", + "img": "icons/tools/laboratory/alembic-glass-ball-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauber @Compendium[ds4.spells.xR5aBGFz3916e82x]{Spionage} ist in diese äußerst zerbrechliche Kugel eingebettet.

", + "quantity": 1, + "price": 1485, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342932, + "modifiedTime": 1740227862990, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PQfSHYKxPqia6nG3" +} diff --git a/packs/items/Krumms_bel_FbfsU0H1E7wCxm0q.json b/packs/items/Krumms_bel_FbfsU0H1E7wCxm0q.json new file mode 100644 index 00000000..9ef91f96 --- /dev/null +++ b/packs/items/Krumms_bel_FbfsU0H1E7wCxm0q.json @@ -0,0 +1,35 @@ +{ + "_id": "FbfsU0H1E7wCxm0q", + "name": "Krummsäbel", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-worn-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342827, + "modifiedTime": 1740227862980, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FbfsU0H1E7wCxm0q" +} diff --git a/packs/items/Krumms_bel__1_R1cxU1hzcLopZwhA.json b/packs/items/Krumms_bel__1_R1cxU1hzcLopZwhA.json new file mode 100644 index 00000000..5bf30ec3 --- /dev/null +++ b/packs/items/Krumms_bel__1_R1cxU1hzcLopZwhA.json @@ -0,0 +1,87 @@ +{ + "_id": "R1cxU1hzcLopZwhA", + "name": "Krummsäbel +1", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-guard.webp", + "effects": [ + { + "_id": "uYIt59oaCKobgftJ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!R1cxU1hzcLopZwhA.uYIt59oaCKobgftJ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342955, + "modifiedTime": 1740227862994, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!R1cxU1hzcLopZwhA" +} diff --git a/packs/items/Krumms_bel__2_2C0GH1sYXj8QtRTK.json b/packs/items/Krumms_bel__2_2C0GH1sYXj8QtRTK.json new file mode 100644 index 00000000..b5c50390 --- /dev/null +++ b/packs/items/Krumms_bel__2_2C0GH1sYXj8QtRTK.json @@ -0,0 +1,87 @@ +{ + "_id": "2C0GH1sYXj8QtRTK", + "name": "Krummsäbel +2", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-guard-brown.webp", + "effects": [ + { + "_id": "xjUL1B0P5jhze3vQ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!2C0GH1sYXj8QtRTK.xjUL1B0P5jhze3vQ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1756, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342675, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2C0GH1sYXj8QtRTK" +} diff --git a/packs/items/Krumms_bel__3_8B4biRyQ6SN0fYtl.json b/packs/items/Krumms_bel__3_8B4biRyQ6SN0fYtl.json new file mode 100644 index 00000000..11a7fb97 --- /dev/null +++ b/packs/items/Krumms_bel__3_8B4biRyQ6SN0fYtl.json @@ -0,0 +1,87 @@ +{ + "_id": "8B4biRyQ6SN0fYtl", + "name": "Krummsäbel +3", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-guard-red.webp", + "effects": [ + { + "_id": "muxy8RtkuaOsrY2H", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!8B4biRyQ6SN0fYtl.muxy8RtkuaOsrY2H" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342759, + "modifiedTime": 1740227862969, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8B4biRyQ6SN0fYtl" +} diff --git a/packs/items/Krummschwert_0EwYRuQCBmE3LIm2.json b/packs/items/Krummschwert_0EwYRuQCBmE3LIm2.json new file mode 100644 index 00000000..8b075029 --- /dev/null +++ b/packs/items/Krummschwert_0EwYRuQCBmE3LIm2.json @@ -0,0 +1,35 @@ +{ + "_id": "0EwYRuQCBmE3LIm2", + "name": "Krummschwert", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-broad.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342629, + "modifiedTime": 1740227862960, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0EwYRuQCBmE3LIm2" +} diff --git a/packs/items/Krummschwert__1_7CCoTap4GzN1uSNw.json b/packs/items/Krummschwert__1_7CCoTap4GzN1uSNw.json new file mode 100644 index 00000000..c7ed30e0 --- /dev/null +++ b/packs/items/Krummschwert__1_7CCoTap4GzN1uSNw.json @@ -0,0 +1,87 @@ +{ + "_id": "7CCoTap4GzN1uSNw", + "name": "Krummschwert +1", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-guard-wood.webp", + "effects": [ + { + "_id": "Vg3Q9A7QIXHrABFk", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!7CCoTap4GzN1uSNw.Vg3Q9A7QIXHrABFk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342737, + "modifiedTime": 1740227862967, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7CCoTap4GzN1uSNw" +} diff --git a/packs/items/Krummschwert__2_3ZCLI6UN4i0zTeuv.json b/packs/items/Krummschwert__2_3ZCLI6UN4i0zTeuv.json new file mode 100644 index 00000000..1837e687 --- /dev/null +++ b/packs/items/Krummschwert__2_3ZCLI6UN4i0zTeuv.json @@ -0,0 +1,87 @@ +{ + "_id": "3ZCLI6UN4i0zTeuv", + "name": "Krummschwert +2", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-bone.webp", + "effects": [ + { + "_id": "MUERgL0DjjZR3sv0", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!3ZCLI6UN4i0zTeuv.MUERgL0DjjZR3sv0" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342698, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3ZCLI6UN4i0zTeuv" +} diff --git a/packs/items/Krummschwert__3_opq2AakrpM9gLSa0.json b/packs/items/Krummschwert__3_opq2AakrpM9gLSa0.json new file mode 100644 index 00000000..5645f32b --- /dev/null +++ b/packs/items/Krummschwert__3_opq2AakrpM9gLSa0.json @@ -0,0 +1,87 @@ +{ + "_id": "opq2AakrpM9gLSa0", + "name": "Krummschwert +3", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-blue.webp", + "effects": [ + { + "_id": "RGYzuIow1nDLd681", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!opq2AakrpM9gLSa0.RGYzuIow1nDLd681" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343410, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!opq2AakrpM9gLSa0" +} diff --git a/packs/items/Kundschafterpanzer_ZLDJNdtwxbdiJOP2.json b/packs/items/Kundschafterpanzer_ZLDJNdtwxbdiJOP2.json new file mode 100644 index 00000000..d86ce715 --- /dev/null +++ b/packs/items/Kundschafterpanzer_ZLDJNdtwxbdiJOP2.json @@ -0,0 +1,122 @@ +{ + "_id": "ZLDJNdtwxbdiJOP2", + "name": "Kundschafterpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-leather.webp", + "effects": [ + { + "_id": "EkJB0kpYFHRMYSgl", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZLDJNdtwxbdiJOP2.EkJB0kpYFHRMYSgl" + }, + { + "_id": "mq2ViimrfXr7sGC7", + "flags": {}, + "changes": [ + { + "key": "system.traits.agility.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Bewegung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZLDJNdtwxbdiJOP2.mq2ViimrfXr7sGC7" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese mit braunen Fellschulterpolstern verzierte Kettenrüstung gewährt ihrem Träger +1 auf Bewegung.

\n

Laufen -0,5

", + "quantity": 1, + "price": 1260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343083, + "modifiedTime": 1740227863004, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZLDJNdtwxbdiJOP2" +} diff --git a/packs/items/Kurzbogen_QsnvAep80sSVJToD.json b/packs/items/Kurzbogen_QsnvAep80sSVJToD.json new file mode 100644 index 00000000..81e2eeae --- /dev/null +++ b/packs/items/Kurzbogen_QsnvAep80sSVJToD.json @@ -0,0 +1,35 @@ +{ + "_id": "QsnvAep80sSVJToD", + "name": "Kurzbogen", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-leather.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342954, + "modifiedTime": 1740227862993, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QsnvAep80sSVJToD" +} diff --git a/packs/items/Kurzbogen__1_6WqPqjMQMMPjV99U.json b/packs/items/Kurzbogen__1_6WqPqjMQMMPjV99U.json new file mode 100644 index 00000000..4de46dad --- /dev/null +++ b/packs/items/Kurzbogen__1_6WqPqjMQMMPjV99U.json @@ -0,0 +1,35 @@ +{ + "_id": "6WqPqjMQMMPjV99U", + "name": "Kurzbogen +1", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-recurve-leather.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 1256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342732, + "modifiedTime": 1740227862967, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6WqPqjMQMMPjV99U" +} diff --git a/packs/items/Kurzbogen__2_1hmprC7XVhIPemy5.json b/packs/items/Kurzbogen__2_1hmprC7XVhIPemy5.json new file mode 100644 index 00000000..53951884 --- /dev/null +++ b/packs/items/Kurzbogen__2_1hmprC7XVhIPemy5.json @@ -0,0 +1,87 @@ +{ + "_id": "1hmprC7XVhIPemy5", + "name": "Kurzbogen +2", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-recurve.webp", + "effects": [ + { + "_id": "VkuGm7hES83WX4HD", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!1hmprC7XVhIPemy5.VkuGm7hES83WX4HD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 1756, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342654, + "modifiedTime": 1740227862963, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1hmprC7XVhIPemy5" +} diff --git a/packs/items/Kurzbogen__3_RKKhoedvylYWFBN3.json b/packs/items/Kurzbogen__3_RKKhoedvylYWFBN3.json new file mode 100644 index 00000000..bcd9476f --- /dev/null +++ b/packs/items/Kurzbogen__3_RKKhoedvylYWFBN3.json @@ -0,0 +1,130 @@ +{ + "_id": "RKKhoedvylYWFBN3", + "name": "Kurzbogen +3", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-recurve-blue.webp", + "effects": [ + { + "_id": "zgiIGlRMVCgAzrn7", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RKKhoedvylYWFBN3.zgiIGlRMVCgAzrn7" + }, + { + "_id": "OQr5POyJ0Azklftu", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RKKhoedvylYWFBN3.OQr5POyJ0Azklftu" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342963, + "modifiedTime": 1740227862995, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RKKhoedvylYWFBN3" +} diff --git a/packs/items/Kurzschwert_Sj1iVgklsdFtLq8M.json b/packs/items/Kurzschwert_Sj1iVgklsdFtLq8M.json new file mode 100644 index 00000000..c3d3402d --- /dev/null +++ b/packs/items/Kurzschwert_Sj1iVgklsdFtLq8M.json @@ -0,0 +1,35 @@ +{ + "_id": "Sj1iVgklsdFtLq8M", + "name": "Kurzschwert", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-guard-brass.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342989, + "modifiedTime": 1740227862999, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Sj1iVgklsdFtLq8M" +} diff --git a/packs/items/Kurzschwert__1_8la7FJ8kpGNUWrCg.json b/packs/items/Kurzschwert__1_8la7FJ8kpGNUWrCg.json new file mode 100644 index 00000000..2e72bcd1 --- /dev/null +++ b/packs/items/Kurzschwert__1_8la7FJ8kpGNUWrCg.json @@ -0,0 +1,87 @@ +{ + "_id": "8la7FJ8kpGNUWrCg", + "name": "Kurzschwert +1", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-green.webp", + "effects": [ + { + "_id": "CElngj6OWPpIw37j", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!8la7FJ8kpGNUWrCg.CElngj6OWPpIw37j" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342764, + "modifiedTime": 1740227862969, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8la7FJ8kpGNUWrCg" +} diff --git a/packs/items/Kurzschwert__2_MO1ga2aLjjkBZRzt.json b/packs/items/Kurzschwert__2_MO1ga2aLjjkBZRzt.json new file mode 100644 index 00000000..b0d3087a --- /dev/null +++ b/packs/items/Kurzschwert__2_MO1ga2aLjjkBZRzt.json @@ -0,0 +1,87 @@ +{ + "_id": "MO1ga2aLjjkBZRzt", + "name": "Kurzschwert +2", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-guard-silver.webp", + "effects": [ + { + "_id": "qkDy1MWD6Fkk97e6", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!MO1ga2aLjjkBZRzt.qkDy1MWD6Fkk97e6" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1756, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342906, + "modifiedTime": 1740227862986, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MO1ga2aLjjkBZRzt" +} diff --git a/packs/items/Kurzschwert__3_F1XnlA28XCnT7Y0V.json b/packs/items/Kurzschwert__3_F1XnlA28XCnT7Y0V.json new file mode 100644 index 00000000..7b4fd894 --- /dev/null +++ b/packs/items/Kurzschwert__3_F1XnlA28XCnT7Y0V.json @@ -0,0 +1,87 @@ +{ + "_id": "F1XnlA28XCnT7Y0V", + "name": "Kurzschwert +3", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-guard-gold-red.webp", + "effects": [ + { + "_id": "FZMhm4De8EXj7dBZ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!F1XnlA28XCnT7Y0V.FZMhm4De8EXj7dBZ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342815, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!F1XnlA28XCnT7Y0V" +} diff --git a/packs/items/Langbogen__1_EwjFWRaLhR33wP92.json b/packs/items/Langbogen__1_EwjFWRaLhR33wP92.json new file mode 100644 index 00000000..ed7f447e --- /dev/null +++ b/packs/items/Langbogen__1_EwjFWRaLhR33wP92.json @@ -0,0 +1,87 @@ +{ + "_id": "EwjFWRaLhR33wP92", + "name": "Langbogen +1", + "type": "weapon", + "img": "icons/weapons/bows/bow-ornamental-silver-black.webp", + "effects": [ + { + "_id": "zQsujP8ZT0cwdtqk", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!EwjFWRaLhR33wP92.zQsujP8ZT0cwdtqk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 1760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342814, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!EwjFWRaLhR33wP92" +} diff --git a/packs/items/Langbogen__2_gVwoOpuHkmwvcUow.json b/packs/items/Langbogen__2_gVwoOpuHkmwvcUow.json new file mode 100644 index 00000000..1e03f2d0 --- /dev/null +++ b/packs/items/Langbogen__2_gVwoOpuHkmwvcUow.json @@ -0,0 +1,130 @@ +{ + "_id": "gVwoOpuHkmwvcUow", + "name": "Langbogen +2", + "type": "weapon", + "img": "icons/weapons/bows/bow-ornamental-gold-blue.webp", + "effects": [ + { + "_id": "XsqzwEX1AvYJyczG", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gVwoOpuHkmwvcUow.XsqzwEX1AvYJyczG" + }, + { + "_id": "iUXn0CQKZw6Rr1yH", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gVwoOpuHkmwvcUow.iUXn0CQKZw6Rr1yH" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343210, + "modifiedTime": 1740227863015, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gVwoOpuHkmwvcUow" +} diff --git a/packs/items/Langbogen__3_WiW9Sad1D2HjkNMz.json b/packs/items/Langbogen__3_WiW9Sad1D2HjkNMz.json new file mode 100644 index 00000000..b6888efb --- /dev/null +++ b/packs/items/Langbogen__3_WiW9Sad1D2HjkNMz.json @@ -0,0 +1,87 @@ +{ + "_id": "WiW9Sad1D2HjkNMz", + "name": "Langbogen +3", + "type": "weapon", + "img": "icons/weapons/bows/bow-recurve-black.webp", + "effects": [ + { + "_id": "B6tNz4B208qZf3JU", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!WiW9Sad1D2HjkNMz.B6tNz4B208qZf3JU" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343058, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!WiW9Sad1D2HjkNMz" +} diff --git a/packs/items/Langbogen_fmunGPk80ObkIzUl.json b/packs/items/Langbogen_fmunGPk80ObkIzUl.json new file mode 100644 index 00000000..16f095bb --- /dev/null +++ b/packs/items/Langbogen_fmunGPk80ObkIzUl.json @@ -0,0 +1,35 @@ +{ + "_id": "fmunGPk80ObkIzUl", + "name": "Langbogen", + "type": "weapon", + "img": "icons/weapons/bows/longbow-leather-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 10, + "availability": "city", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343202, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fmunGPk80ObkIzUl" +} diff --git a/packs/items/Langschwert__1_dMbjx675yI2F4rUg.json b/packs/items/Langschwert__1_dMbjx675yI2F4rUg.json new file mode 100644 index 00000000..7433c756 --- /dev/null +++ b/packs/items/Langschwert__1_dMbjx675yI2F4rUg.json @@ -0,0 +1,87 @@ +{ + "_id": "dMbjx675yI2F4rUg", + "name": "Langschwert +1", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-embossed-green.webp", + "effects": [ + { + "_id": "l7qeGLLyuz7VXAAd", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dMbjx675yI2F4rUg.l7qeGLLyuz7VXAAd" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343138, + "modifiedTime": 1740227863010, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dMbjx675yI2F4rUg" +} diff --git a/packs/items/Langschwert__2_i1ZcbKzviqz0nxjV.json b/packs/items/Langschwert__2_i1ZcbKzviqz0nxjV.json new file mode 100644 index 00000000..1fda322b --- /dev/null +++ b/packs/items/Langschwert__2_i1ZcbKzviqz0nxjV.json @@ -0,0 +1,87 @@ +{ + "_id": "i1ZcbKzviqz0nxjV", + "name": "Langschwert +2", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-purple.webp", + "effects": [ + { + "_id": "5JZ001rLJuZMJSrD", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!i1ZcbKzviqz0nxjV.5JZ001rLJuZMJSrD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343243, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!i1ZcbKzviqz0nxjV" +} diff --git a/packs/items/Langschwert__3_Dg8qq9n5FFxZG68k.json b/packs/items/Langschwert__3_Dg8qq9n5FFxZG68k.json new file mode 100644 index 00000000..0a9d50c9 --- /dev/null +++ b/packs/items/Langschwert__3_Dg8qq9n5FFxZG68k.json @@ -0,0 +1,87 @@ +{ + "_id": "Dg8qq9n5FFxZG68k", + "name": "Langschwert +3", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-engraved.webp", + "effects": [ + { + "_id": "DSf5BV955w2hKZuf", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Dg8qq9n5FFxZG68k.DSf5BV955w2hKZuf" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342810, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Dg8qq9n5FFxZG68k" +} diff --git a/packs/items/Langschwert_htmQWmMCQN620KrE.json b/packs/items/Langschwert_htmQWmMCQN620KrE.json new file mode 100644 index 00000000..7f0582d1 --- /dev/null +++ b/packs/items/Langschwert_htmQWmMCQN620KrE.json @@ -0,0 +1,35 @@ +{ + "_id": "htmQWmMCQN620KrE", + "name": "Langschwert", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343241, + "modifiedTime": 1740227863016, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!htmQWmMCQN620KrE" +} diff --git a/packs/items/Lanze_DS11ssHOcZTdZiLK.json b/packs/items/Lanze_DS11ssHOcZTdZiLK.json new file mode 100644 index 00000000..494e7951 --- /dev/null +++ b/packs/items/Lanze_DS11ssHOcZTdZiLK.json @@ -0,0 +1,35 @@ +{ + "_id": "DS11ssHOcZTdZiLK", + "name": "Lanze", + "type": "weapon", + "img": "icons/weapons/polearms/spear-simple-engraved.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Nur im Trab (WB +1) oder Galopp (WB +4), Zerbricht bei Schlagen-Patzer

", + "quantity": 1, + "price": 2, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": null, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342809, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DS11ssHOcZTdZiLK" +} diff --git a/packs/items/Lanze__1_upkDR02zMILTPib6.json b/packs/items/Lanze__1_upkDR02zMILTPib6.json new file mode 100644 index 00000000..7142a514 --- /dev/null +++ b/packs/items/Lanze__1_upkDR02zMILTPib6.json @@ -0,0 +1,87 @@ +{ + "_id": "upkDR02zMILTPib6", + "name": "Lanze +1", + "type": "weapon", + "img": "icons/weapons/polearms/spear-flared-green.webp", + "effects": [ + { + "_id": "d8N240qBKaRGqkcf", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!upkDR02zMILTPib6.d8N240qBKaRGqkcf" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", + "quantity": 1, + "price": 1252, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343547, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!upkDR02zMILTPib6" +} diff --git a/packs/items/Lanze__2_5MrsKOS4sAxpMv2U.json b/packs/items/Lanze__2_5MrsKOS4sAxpMv2U.json new file mode 100644 index 00000000..da269f8e --- /dev/null +++ b/packs/items/Lanze__2_5MrsKOS4sAxpMv2U.json @@ -0,0 +1,87 @@ +{ + "_id": "5MrsKOS4sAxpMv2U", + "name": "Lanze +2", + "type": "weapon", + "img": "icons/weapons/polearms/spear-flared-blue.webp", + "effects": [ + { + "_id": "iLA1AQrTlmA0BFnC", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!5MrsKOS4sAxpMv2U.iLA1AQrTlmA0BFnC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", + "quantity": 1, + "price": 1752, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342718, + "modifiedTime": 1740227862966, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5MrsKOS4sAxpMv2U" +} diff --git a/packs/items/Lanze__3_bVeWMNBKPWRqrFGj.json b/packs/items/Lanze__3_bVeWMNBKPWRqrFGj.json new file mode 100644 index 00000000..d024768b --- /dev/null +++ b/packs/items/Lanze__3_bVeWMNBKPWRqrFGj.json @@ -0,0 +1,87 @@ +{ + "_id": "bVeWMNBKPWRqrFGj", + "name": "Lanze +3", + "type": "weapon", + "img": "icons/weapons/polearms/spear-flared-purple.webp", + "effects": [ + { + "_id": "5CFUcYAipdyZHdde", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!bVeWMNBKPWRqrFGj.5CFUcYAipdyZHdde" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", + "quantity": 1, + "price": 2252, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343098, + "modifiedTime": 1740227863007, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!bVeWMNBKPWRqrFGj" +} diff --git a/packs/items/Laterne_ZyML0QPctIXK8A4c.json b/packs/items/Laterne_ZyML0QPctIXK8A4c.json new file mode 100644 index 00000000..f8f6aa37 --- /dev/null +++ b/packs/items/Laterne_ZyML0QPctIXK8A4c.json @@ -0,0 +1,31 @@ +{ + "_id": "ZyML0QPctIXK8A4c", + "name": "Laterne", + "type": "loot", + "img": "icons/sundries/lights/lantern-iron-yellow.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343085, + "modifiedTime": 1740227863005, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZyML0QPctIXK8A4c" +} diff --git a/packs/items/Laternen_l__brennt_4h__C2ggZE3ifOXlonkj.json b/packs/items/Laternen_l__brennt_4h__C2ggZE3ifOXlonkj.json new file mode 100644 index 00000000..90821547 --- /dev/null +++ b/packs/items/Laternen_l__brennt_4h__C2ggZE3ifOXlonkj.json @@ -0,0 +1,31 @@ +{ + "_id": "C2ggZE3ifOXlonkj", + "name": "Laternenöl (brennt 4h)", + "type": "loot", + "img": "icons/containers/kitchenware/vase-clay-cracked-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.05, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342799, + "modifiedTime": 1740227862974, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!C2ggZE3ifOXlonkj" +} diff --git a/packs/items/Lederbecher_d4OegxLYAGpzMFsc.json b/packs/items/Lederbecher_d4OegxLYAGpzMFsc.json new file mode 100644 index 00000000..b2abfdc7 --- /dev/null +++ b/packs/items/Lederbecher_d4OegxLYAGpzMFsc.json @@ -0,0 +1,31 @@ +{ + "_id": "d4OegxLYAGpzMFsc", + "name": "Lederbecher", + "type": "loot", + "img": "icons/containers/kitchenware/mug-stein-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343127, + "modifiedTime": 1740227863010, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!d4OegxLYAGpzMFsc" +} diff --git a/packs/items/Lederpanzer_60MhQmXh0c2cT5nx.json b/packs/items/Lederpanzer_60MhQmXh0c2cT5nx.json new file mode 100644 index 00000000..add0b62a --- /dev/null +++ b/packs/items/Lederpanzer_60MhQmXh0c2cT5nx.json @@ -0,0 +1,35 @@ +{ + "_id": "60MhQmXh0c2cT5nx", + "name": "Lederpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-banded-leather-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342726, + "modifiedTime": 1740227862966, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!60MhQmXh0c2cT5nx" +} diff --git a/packs/items/Lederpanzer__1_GgYd2UCD2Juq7EUF.json b/packs/items/Lederpanzer__1_GgYd2UCD2Juq7EUF.json new file mode 100644 index 00000000..59b9e735 --- /dev/null +++ b/packs/items/Lederpanzer__1_GgYd2UCD2Juq7EUF.json @@ -0,0 +1,35 @@ +{ + "_id": "GgYd2UCD2Juq7EUF", + "name": "Lederpanzer +1", + "type": "armor", + "img": "icons/equipment/chest/breastplate-collared-leather-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342860, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GgYd2UCD2Juq7EUF" +} diff --git a/packs/items/Lederpanzer__2_JUTPfEGHEEwpeLvv.json b/packs/items/Lederpanzer__2_JUTPfEGHEEwpeLvv.json new file mode 100644 index 00000000..aaea18dd --- /dev/null +++ b/packs/items/Lederpanzer__2_JUTPfEGHEEwpeLvv.json @@ -0,0 +1,35 @@ +{ + "_id": "JUTPfEGHEEwpeLvv", + "name": "Lederpanzer +2", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-leather-studded-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 3254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342876, + "modifiedTime": 1740227862983, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JUTPfEGHEEwpeLvv" +} diff --git a/packs/items/Lederpanzer__3_A6hSQX9cPpoWHiOh.json b/packs/items/Lederpanzer__3_A6hSQX9cPpoWHiOh.json new file mode 100644 index 00000000..b83da0e4 --- /dev/null +++ b/packs/items/Lederpanzer__3_A6hSQX9cPpoWHiOh.json @@ -0,0 +1,87 @@ +{ + "_id": "A6hSQX9cPpoWHiOh", + "name": "Lederpanzer +3", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-leather-studded.webp", + "effects": [ + { + "_id": "pYb7mMRhc5KBnUJT", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!A6hSQX9cPpoWHiOh.pYb7mMRhc5KBnUJT" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342779, + "modifiedTime": 1740227862972, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!A6hSQX9cPpoWHiOh" +} diff --git a/packs/items/Lederpanzer__F_r_Reittiere___1_yuSDAJwN3NFfcTSE.json b/packs/items/Lederpanzer__F_r_Reittiere___1_yuSDAJwN3NFfcTSE.json new file mode 100644 index 00000000..eaa3423c --- /dev/null +++ b/packs/items/Lederpanzer__F_r_Reittiere___1_yuSDAJwN3NFfcTSE.json @@ -0,0 +1,87 @@ +{ + "_id": "yuSDAJwN3NFfcTSE", + "name": "Lederpanzer (Für Reittiere) +1", + "type": "armor", + "img": "icons/commodities/leather/leather-leaf-tan.webp", + "effects": [ + { + "_id": "ISagK3JV33VmnmoX", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!yuSDAJwN3NFfcTSE.ISagK3JV33VmnmoX" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2262, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343590, + "modifiedTime": 1740227863030, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yuSDAJwN3NFfcTSE" +} diff --git a/packs/items/Lederpanzer__F_r_Reittiere___2_QNJVRtALi17otgDU.json b/packs/items/Lederpanzer__F_r_Reittiere___2_QNJVRtALi17otgDU.json new file mode 100644 index 00000000..d4ade773 --- /dev/null +++ b/packs/items/Lederpanzer__F_r_Reittiere___2_QNJVRtALi17otgDU.json @@ -0,0 +1,87 @@ +{ + "_id": "QNJVRtALi17otgDU", + "name": "Lederpanzer (Für Reittiere) +2", + "type": "armor", + "img": "icons/commodities/leather/leather-leaf-tan.webp", + "effects": [ + { + "_id": "9qPThLRf5cwflety", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!QNJVRtALi17otgDU.9qPThLRf5cwflety" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 3262, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342944, + "modifiedTime": 1740227862991, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QNJVRtALi17otgDU" +} diff --git a/packs/items/Lederpanzer__F_r_Reittiere___3_34fD45Yzi3s2cSgy.json b/packs/items/Lederpanzer__F_r_Reittiere___3_34fD45Yzi3s2cSgy.json new file mode 100644 index 00000000..4323a26d --- /dev/null +++ b/packs/items/Lederpanzer__F_r_Reittiere___3_34fD45Yzi3s2cSgy.json @@ -0,0 +1,87 @@ +{ + "_id": "34fD45Yzi3s2cSgy", + "name": "Lederpanzer (Für Reittiere) +3", + "type": "armor", + "img": "icons/commodities/leather/leather-leaf-tan.webp", + "effects": [ + { + "_id": "DY0fXwaK8RHbyo75", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!34fD45Yzi3s2cSgy.DY0fXwaK8RHbyo75" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4262, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342696, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!34fD45Yzi3s2cSgy" +} diff --git a/packs/items/Lederpanzer__F_r_Reittiere__aNGn2tplXGSikyV7.json b/packs/items/Lederpanzer__F_r_Reittiere__aNGn2tplXGSikyV7.json new file mode 100644 index 00000000..da52fe50 --- /dev/null +++ b/packs/items/Lederpanzer__F_r_Reittiere__aNGn2tplXGSikyV7.json @@ -0,0 +1,35 @@ +{ + "_id": "aNGn2tplXGSikyV7", + "name": "Lederpanzer (Für Reittiere)", + "type": "armor", + "img": "icons/commodities/leather/leather-leaf-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 12, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343088, + "modifiedTime": 1740227863005, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aNGn2tplXGSikyV7" +} diff --git a/packs/items/Lederschienen_GgWdEi4yyPb1wqYn.json b/packs/items/Lederschienen_GgWdEi4yyPb1wqYn.json new file mode 100644 index 00000000..d834f744 --- /dev/null +++ b/packs/items/Lederschienen_GgWdEi4yyPb1wqYn.json @@ -0,0 +1,35 @@ +{ + "_id": "GgWdEi4yyPb1wqYn", + "name": "Lederschienen", + "type": "armor", + "img": "icons/equipment/wrist/bracer-simple-leather.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

An Arm & Bein

", + "quantity": 1, + "price": 4, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "vambraceGreaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342859, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GgWdEi4yyPb1wqYn" +} diff --git a/packs/items/Lederschienen__1_Hna91ve4yx84u7zJ.json b/packs/items/Lederschienen__1_Hna91ve4yx84u7zJ.json new file mode 100644 index 00000000..51164e25 --- /dev/null +++ b/packs/items/Lederschienen__1_Hna91ve4yx84u7zJ.json @@ -0,0 +1,87 @@ +{ + "_id": "Hna91ve4yx84u7zJ", + "name": "Lederschienen +1", + "type": "armor", + "img": "icons/equipment/wrist/bracer-simple-leather-steel.webp", + "effects": [ + { + "_id": "KL8cnKi5NITkDENS", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Hna91ve4yx84u7zJ.KL8cnKi5NITkDENS" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

An Arm & Bein

", + "quantity": 1, + "price": 2254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "vambraceGreaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342866, + "modifiedTime": 1740227862982, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Hna91ve4yx84u7zJ" +} diff --git a/packs/items/Lederschienen__2_yleQcy5mTJ5jn3RZ.json b/packs/items/Lederschienen__2_yleQcy5mTJ5jn3RZ.json new file mode 100644 index 00000000..edd4098e --- /dev/null +++ b/packs/items/Lederschienen__2_yleQcy5mTJ5jn3RZ.json @@ -0,0 +1,87 @@ +{ + "_id": "yleQcy5mTJ5jn3RZ", + "name": "Lederschienen +2", + "type": "armor", + "img": "icons/equipment/wrist/bracer-straight-leather-red.webp", + "effects": [ + { + "_id": "YzSUbB0a2EknrxQQ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!yleQcy5mTJ5jn3RZ.YzSUbB0a2EknrxQQ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

An Arm & Bein

", + "quantity": 1, + "price": 3254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "vambraceGreaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343585, + "modifiedTime": 1740227863030, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yleQcy5mTJ5jn3RZ" +} diff --git a/packs/items/Lederschienen__3_Aw9aoumlI69gYv75.json b/packs/items/Lederschienen__3_Aw9aoumlI69gYv75.json new file mode 100644 index 00000000..4b7e5f46 --- /dev/null +++ b/packs/items/Lederschienen__3_Aw9aoumlI69gYv75.json @@ -0,0 +1,87 @@ +{ + "_id": "Aw9aoumlI69gYv75", + "name": "Lederschienen +3", + "type": "armor", + "img": "icons/equipment/wrist/bracer-banded-leather-black.webp", + "effects": [ + { + "_id": "LE8TRjZF13O6kDB8", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Aw9aoumlI69gYv75.LE8TRjZF13O6kDB8" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

An Arm & Bein

", + "quantity": 1, + "price": 4254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "vambraceGreaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342791, + "modifiedTime": 1740227862974, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Aw9aoumlI69gYv75" +} diff --git a/packs/items/Leichte_Armbrust__1_9MsBlnMhvAMe4zTk.json b/packs/items/Leichte_Armbrust__1_9MsBlnMhvAMe4zTk.json new file mode 100644 index 00000000..dd2662c7 --- /dev/null +++ b/packs/items/Leichte_Armbrust__1_9MsBlnMhvAMe4zTk.json @@ -0,0 +1,87 @@ +{ + "_id": "9MsBlnMhvAMe4zTk", + "name": "Leichte Armbrust +1", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-simple-brown.webp", + "effects": [ + { + "_id": "sACwF2e5qLRs6c1a", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!9MsBlnMhvAMe4zTk.sACwF2e5qLRs6c1a" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 1758, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342769, + "modifiedTime": 1740227862970, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9MsBlnMhvAMe4zTk" +} diff --git a/packs/items/Leichte_Armbrust__2_PihP9eVyE4UEi1jj.json b/packs/items/Leichte_Armbrust__2_PihP9eVyE4UEi1jj.json new file mode 100644 index 00000000..acc839db --- /dev/null +++ b/packs/items/Leichte_Armbrust__2_PihP9eVyE4UEi1jj.json @@ -0,0 +1,87 @@ +{ + "_id": "PihP9eVyE4UEi1jj", + "name": "Leichte Armbrust +2", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-simple-black.webp", + "effects": [ + { + "_id": "63yxBIQ4ZvuvtVsV", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!PihP9eVyE4UEi1jj.63yxBIQ4ZvuvtVsV" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342939, + "modifiedTime": 1740227862990, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PihP9eVyE4UEi1jj" +} diff --git a/packs/items/Leichte_Armbrust__3_XSXEDiMN27cuEoOx.json b/packs/items/Leichte_Armbrust__3_XSXEDiMN27cuEoOx.json new file mode 100644 index 00000000..bca89614 --- /dev/null +++ b/packs/items/Leichte_Armbrust__3_XSXEDiMN27cuEoOx.json @@ -0,0 +1,87 @@ +{ + "_id": "XSXEDiMN27cuEoOx", + "name": "Leichte Armbrust +3", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-purple.webp", + "effects": [ + { + "_id": "z2uPOzDQ47VbWmt5", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!XSXEDiMN27cuEoOx.z2uPOzDQ47VbWmt5" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2758, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343066, + "modifiedTime": 1740227863004, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XSXEDiMN27cuEoOx" +} diff --git a/packs/items/Leichte_Armbrust_fnq4WOljIoYdbsUT.json b/packs/items/Leichte_Armbrust_fnq4WOljIoYdbsUT.json new file mode 100644 index 00000000..8e3b4917 --- /dev/null +++ b/packs/items/Leichte_Armbrust_fnq4WOljIoYdbsUT.json @@ -0,0 +1,80 @@ +{ + "_id": "fnq4WOljIoYdbsUT", + "name": "Leichte Armbrust", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-simple-purple.webp", + "effects": [ + { + "_id": "gMm2PnBADqXBrCi1", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "-2", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!fnq4WOljIoYdbsUT.gMm2PnBADqXBrCi1" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 8, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": 0, + "name": " +1" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343203, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fnq4WOljIoYdbsUT" +} diff --git a/packs/items/Mantel_der_Augen_9xjica2DVZso8NIU.json b/packs/items/Mantel_der_Augen_9xjica2DVZso8NIU.json new file mode 100644 index 00000000..7385e3c1 --- /dev/null +++ b/packs/items/Mantel_der_Augen_9xjica2DVZso8NIU.json @@ -0,0 +1,84 @@ +{ + "_id": "9xjica2DVZso8NIU", + "name": "Mantel der Augen", + "type": "equipment", + "img": "icons/equipment/back/cloak-collared-red.webp", + "effects": [ + { + "_id": "7I80O404E6ty4pHv", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Wahrnehmung", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Wahrnehmung +III", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!9xjica2DVZso8NIU.7I80O404E6ty4pHv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser mit Augenmustern bestickte Mantel gewährt seinem Träger Wahrnehmung +III.

", + "quantity": 1, + "price": 376, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342776, + "modifiedTime": 1740227862971, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9xjica2DVZso8NIU" +} diff --git a/packs/items/Metallbesteck_7JCc96rbTbTSASbT.json b/packs/items/Metallbesteck_7JCc96rbTbTSASbT.json new file mode 100644 index 00000000..ef223141 --- /dev/null +++ b/packs/items/Metallbesteck_7JCc96rbTbTSASbT.json @@ -0,0 +1,31 @@ +{ + "_id": "7JCc96rbTbTSASbT", + "name": "Metallbesteck", + "type": "loot", + "img": "icons/tools/cooking/fork-steel-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342741, + "modifiedTime": 1740227862968, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7JCc96rbTbTSASbT" +} diff --git a/packs/items/Metallhelm__1_esfwvMs1ffgSXjbS.json b/packs/items/Metallhelm__1_esfwvMs1ffgSXjbS.json new file mode 100644 index 00000000..ebc1bfb9 --- /dev/null +++ b/packs/items/Metallhelm__1_esfwvMs1ffgSXjbS.json @@ -0,0 +1,87 @@ +{ + "_id": "esfwvMs1ffgSXjbS", + "name": "Metallhelm +1", + "type": "armor", + "img": "icons/equipment/head/helm-barbute-rounded-steel.webp", + "effects": [ + { + "_id": "uo5922qyPvi35mhm", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!esfwvMs1ffgSXjbS.uo5922qyPvi35mhm" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "helmet" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343188, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!esfwvMs1ffgSXjbS" +} diff --git a/packs/items/Metallhelm__2_9PdQv9CRy4ckaF0j.json b/packs/items/Metallhelm__2_9PdQv9CRy4ckaF0j.json new file mode 100644 index 00000000..9b243441 --- /dev/null +++ b/packs/items/Metallhelm__2_9PdQv9CRy4ckaF0j.json @@ -0,0 +1,87 @@ +{ + "_id": "9PdQv9CRy4ckaF0j", + "name": "Metallhelm +2", + "type": "armor", + "img": "icons/equipment/head/helm-barbute-engraved.webp", + "effects": [ + { + "_id": "9IOcWr1CbRpF3lya", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!9PdQv9CRy4ckaF0j.9IOcWr1CbRpF3lya" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "helmet" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342772, + "modifiedTime": 1740227862971, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9PdQv9CRy4ckaF0j" +} diff --git a/packs/items/Metallhelm__3_A109X3ZiGGGiWCze.json b/packs/items/Metallhelm__3_A109X3ZiGGGiWCze.json new file mode 100644 index 00000000..281d9ca6 --- /dev/null +++ b/packs/items/Metallhelm__3_A109X3ZiGGGiWCze.json @@ -0,0 +1,87 @@ +{ + "_id": "A109X3ZiGGGiWCze", + "name": "Metallhelm +3", + "type": "armor", + "img": "icons/equipment/head/helm-barbute-engraved-steel.webp", + "effects": [ + { + "_id": "vhwepr5mHZHWDkCf", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!A109X3ZiGGGiWCze.vhwepr5mHZHWDkCf" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "helmet" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342777, + "modifiedTime": 1740227862971, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!A109X3ZiGGGiWCze" +} diff --git a/packs/items/Metallhelm_fKhTsMO4YXDYY8GX.json b/packs/items/Metallhelm_fKhTsMO4YXDYY8GX.json new file mode 100644 index 00000000..798a246f --- /dev/null +++ b/packs/items/Metallhelm_fKhTsMO4YXDYY8GX.json @@ -0,0 +1,79 @@ +{ + "_id": "fKhTsMO4YXDYY8GX", + "name": "Metallhelm", + "type": "armor", + "img": "icons/equipment/head/helm-barbute-reinforced.webp", + "effects": [ + { + "_id": "wlQWjU1kXovR5G1J", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "-1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!fKhTsMO4YXDYY8GX.wlQWjU1kXovR5G1J" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -1

", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "helmet" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343198, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fKhTsMO4YXDYY8GX" +} diff --git a/packs/items/Metallkrug_egleYygLWn8IfeuF.json b/packs/items/Metallkrug_egleYygLWn8IfeuF.json new file mode 100644 index 00000000..1959b950 --- /dev/null +++ b/packs/items/Metallkrug_egleYygLWn8IfeuF.json @@ -0,0 +1,31 @@ +{ + "_id": "egleYygLWn8IfeuF", + "name": "Metallkrug", + "type": "loot", + "img": "icons/containers/kitchenware/mug-steel-wood-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343177, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!egleYygLWn8IfeuF" +} diff --git a/packs/items/Metallschild__1_iGiZU77IGQQqlYFr.json b/packs/items/Metallschild__1_iGiZU77IGQQqlYFr.json new file mode 100644 index 00000000..65d357ff --- /dev/null +++ b/packs/items/Metallschild__1_iGiZU77IGQQqlYFr.json @@ -0,0 +1,85 @@ +{ + "_id": "iGiZU77IGQQqlYFr", + "name": "Metallschild +1", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-grey.webp", + "effects": [ + { + "_id": "9xMdH6XQxlulL7wv", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!iGiZU77IGQQqlYFr.9xMdH6XQxlulL7wv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343247, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iGiZU77IGQQqlYFr" +} diff --git a/packs/items/Metallschild__2_XyDt7MThnLkDCldV.json b/packs/items/Metallschild__2_XyDt7MThnLkDCldV.json new file mode 100644 index 00000000..510dfcec --- /dev/null +++ b/packs/items/Metallschild__2_XyDt7MThnLkDCldV.json @@ -0,0 +1,85 @@ +{ + "_id": "XyDt7MThnLkDCldV", + "name": "Metallschild +2", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-sword-yellow-black.webp", + "effects": [ + { + "_id": "MidC9f4kBbIz7Z7S", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!XyDt7MThnLkDCldV.MidC9f4kBbIz7Z7S" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343075, + "modifiedTime": 1740227863004, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XyDt7MThnLkDCldV" +} diff --git a/packs/items/Metallschild__3_FKg3YI1EtiNfDcYO.json b/packs/items/Metallschild__3_FKg3YI1EtiNfDcYO.json new file mode 100644 index 00000000..8615b23e --- /dev/null +++ b/packs/items/Metallschild__3_FKg3YI1EtiNfDcYO.json @@ -0,0 +1,85 @@ +{ + "_id": "FKg3YI1EtiNfDcYO", + "name": "Metallschild +3", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-spiral.webp", + "effects": [ + { + "_id": "KZBNNdOmSqFkXC0X", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!FKg3YI1EtiNfDcYO.KZBNNdOmSqFkXC0X" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342817, + "modifiedTime": 1740227862979, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FKg3YI1EtiNfDcYO" +} diff --git a/packs/items/Metallschild_gyfU78OLQj8qH3Zh.json b/packs/items/Metallschild_gyfU78OLQj8qH3Zh.json new file mode 100644 index 00000000..fa534f42 --- /dev/null +++ b/packs/items/Metallschild_gyfU78OLQj8qH3Zh.json @@ -0,0 +1,77 @@ +{ + "_id": "gyfU78OLQj8qH3Zh", + "name": "Metallschild", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-worn.webp", + "effects": [ + { + "_id": "kDcyXkLx75K2YRCl", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gyfU78OLQj8qH3Zh.kDcyXkLx75K2YRCl" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 8, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343221, + "modifiedTime": 1740227863015, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gyfU78OLQj8qH3Zh" +} diff --git a/packs/items/Morgenstern_QNDLfvjiv9szUTYT.json b/packs/items/Morgenstern_QNDLfvjiv9szUTYT.json new file mode 100644 index 00000000..7f7812c0 --- /dev/null +++ b/packs/items/Morgenstern_QNDLfvjiv9szUTYT.json @@ -0,0 +1,35 @@ +{ + "_id": "QNDLfvjiv9szUTYT", + "name": "Morgenstern", + "type": "weapon", + "img": "icons/weapons/maces/mace-flanged-steel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342942, + "modifiedTime": 1740227862991, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QNDLfvjiv9szUTYT" +} diff --git a/packs/items/Morgenstern__1_u1ycDWee8nHPfZHA.json b/packs/items/Morgenstern__1_u1ycDWee8nHPfZHA.json new file mode 100644 index 00000000..a8beebf6 --- /dev/null +++ b/packs/items/Morgenstern__1_u1ycDWee8nHPfZHA.json @@ -0,0 +1,87 @@ +{ + "_id": "u1ycDWee8nHPfZHA", + "name": "Morgenstern +1", + "type": "weapon", + "img": "icons/weapons/maces/mace-round-studded.webp", + "effects": [ + { + "_id": "nTOl8E9qA6stLcEJ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!u1ycDWee8nHPfZHA.nTOl8E9qA6stLcEJ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343519, + "modifiedTime": 1740227863026, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!u1ycDWee8nHPfZHA" +} diff --git a/packs/items/Morgenstern__2_TSoSy8ck9XCUa1SM.json b/packs/items/Morgenstern__2_TSoSy8ck9XCUa1SM.json new file mode 100644 index 00000000..2ece9fa8 --- /dev/null +++ b/packs/items/Morgenstern__2_TSoSy8ck9XCUa1SM.json @@ -0,0 +1,87 @@ +{ + "_id": "TSoSy8ck9XCUa1SM", + "name": "Morgenstern +2", + "type": "weapon", + "img": "icons/weapons/maces/mace-round-spiked-grey.webp", + "effects": [ + { + "_id": "fZ3VByauGosUUN3D", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!TSoSy8ck9XCUa1SM.fZ3VByauGosUUN3D" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343000, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TSoSy8ck9XCUa1SM" +} diff --git a/packs/items/Morgenstern__3_czxph9BZaC6Cj7kM.json b/packs/items/Morgenstern__3_czxph9BZaC6Cj7kM.json new file mode 100644 index 00000000..df8ccd37 --- /dev/null +++ b/packs/items/Morgenstern__3_czxph9BZaC6Cj7kM.json @@ -0,0 +1,87 @@ +{ + "_id": "czxph9BZaC6Cj7kM", + "name": "Morgenstern +3", + "type": "weapon", + "img": "icons/weapons/maces/mace-round-spiked-black.webp", + "effects": [ + { + "_id": "JzKt4gdYSSlA6hSo", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!czxph9BZaC6Cj7kM.JzKt4gdYSSlA6hSo" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343120, + "modifiedTime": 1740227863008, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!czxph9BZaC6Cj7kM" +} diff --git a/packs/items/Orkspalter_RGyfv3y0LxHORAzA.json b/packs/items/Orkspalter_RGyfv3y0LxHORAzA.json new file mode 100644 index 00000000..07e67fab --- /dev/null +++ b/packs/items/Orkspalter_RGyfv3y0LxHORAzA.json @@ -0,0 +1,138 @@ +{ + "_id": "RGyfv3y0LxHORAzA", + "name": "Orkspalter", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-engraved-runes.webp", + "effects": [ + { + "_id": "armx56Psy1qosJib", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RGyfv3y0LxHORAzA.armx56Psy1qosJib" + }, + { + "_id": "qr1bY5zTm5ViDmnd", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Brutaler Hieb", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Brutaler Hieb +II", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RGyfv3y0LxHORAzA.qr1bY5zTm5ViDmnd" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine alte, legendäre Zwergenaxt +1 mit Brutaler Hieb +II.

\n

Zweihändig, Initiative -1

", + "quantity": 1, + "price": 4310, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342960, + "modifiedTime": 1740227862995, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RGyfv3y0LxHORAzA" +} diff --git a/packs/items/Parf_m__50_x_benutzbar__uVYJY3A8kLne2ZkQ.json b/packs/items/Parf_m__50_x_benutzbar__uVYJY3A8kLne2ZkQ.json new file mode 100644 index 00000000..9ad35db6 --- /dev/null +++ b/packs/items/Parf_m__50_x_benutzbar__uVYJY3A8kLne2ZkQ.json @@ -0,0 +1,31 @@ +{ + "_id": "uVYJY3A8kLne2ZkQ", + "name": "Parfüm (50 x benutzbar)", + "type": "loot", + "img": "icons/tools/laboratory/vial-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gibt 4 Stunden lang +1 auf Proben sozialer Interaktion mit anderem Geschlecht

", + "quantity": 1, + "price": 5, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343526, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uVYJY3A8kLne2ZkQ" +} diff --git a/packs/items/Pergamentblatt_zx3FKwvrLw147ARX.json b/packs/items/Pergamentblatt_zx3FKwvrLw147ARX.json new file mode 100644 index 00000000..c858d43e --- /dev/null +++ b/packs/items/Pergamentblatt_zx3FKwvrLw147ARX.json @@ -0,0 +1,31 @@ +{ + "_id": "zx3FKwvrLw147ARX", + "name": "Pergamentblatt", + "type": "loot", + "img": "icons/sundries/documents/paper-plain-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343620, + "modifiedTime": 1740227863032, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zx3FKwvrLw147ARX" +} diff --git a/packs/items/Pfanne_pYP26CskxKade3GF.json b/packs/items/Pfanne_pYP26CskxKade3GF.json new file mode 100644 index 00000000..64fda214 --- /dev/null +++ b/packs/items/Pfanne_pYP26CskxKade3GF.json @@ -0,0 +1,31 @@ +{ + "_id": "pYP26CskxKade3GF", + "name": "Pfanne", + "type": "loot", + "img": "icons/tools/cooking/pot-camping-iron-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343456, + "modifiedTime": 1740227863022, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pYP26CskxKade3GF" +} diff --git a/packs/items/Pfeife_iOAmrK7t7ZyrtGy1.json b/packs/items/Pfeife_iOAmrK7t7ZyrtGy1.json new file mode 100644 index 00000000..750075ec --- /dev/null +++ b/packs/items/Pfeife_iOAmrK7t7ZyrtGy1.json @@ -0,0 +1,31 @@ +{ + "_id": "iOAmrK7t7ZyrtGy1", + "name": "Pfeife", + "type": "loot", + "img": "icons/sundries/misc/pipe-wooden-straight-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343253, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iOAmrK7t7ZyrtGy1" +} diff --git a/packs/items/Plattenarmschienen_RsKimH7snoPFlg4L.json b/packs/items/Plattenarmschienen_RsKimH7snoPFlg4L.json new file mode 100644 index 00000000..eca2701a --- /dev/null +++ b/packs/items/Plattenarmschienen_RsKimH7snoPFlg4L.json @@ -0,0 +1,79 @@ +{ + "_id": "RsKimH7snoPFlg4L", + "name": "Plattenarmschienen", + "type": "armor", + "img": "icons/equipment/wrist/bracer-armored-steel.webp", + "effects": [ + { + "_id": "DxcTuYT1mUpj9RdQ", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RsKimH7snoPFlg4L.DxcTuYT1mUpj9RdQ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 7, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "vambrace" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342970, + "modifiedTime": 1740227862997, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RsKimH7snoPFlg4L" +} diff --git a/packs/items/Plattenarmschienen__1_XBCdDIpdR1weOhiy.json b/packs/items/Plattenarmschienen__1_XBCdDIpdR1weOhiy.json new file mode 100644 index 00000000..6e9b43cf --- /dev/null +++ b/packs/items/Plattenarmschienen__1_XBCdDIpdR1weOhiy.json @@ -0,0 +1,87 @@ +{ + "_id": "XBCdDIpdR1weOhiy", + "name": "Plattenarmschienen +1", + "type": "armor", + "img": "icons/equipment/wrist/bracer-armored-steel-white.webp", + "effects": [ + { + "_id": "IwrLITAgM3vLzkwA", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!XBCdDIpdR1weOhiy.IwrLITAgM3vLzkwA" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "vambrace" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343061, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XBCdDIpdR1weOhiy" +} diff --git a/packs/items/Plattenarmschienen__2_VQtcpPYhzifN9Lqr.json b/packs/items/Plattenarmschienen__2_VQtcpPYhzifN9Lqr.json new file mode 100644 index 00000000..44cd6d90 --- /dev/null +++ b/packs/items/Plattenarmschienen__2_VQtcpPYhzifN9Lqr.json @@ -0,0 +1,87 @@ +{ + "_id": "VQtcpPYhzifN9Lqr", + "name": "Plattenarmschienen +2", + "type": "armor", + "img": "icons/equipment/wrist/bracer-armored-steel-worn.webp", + "effects": [ + { + "_id": "pPtRJMUFA3gbNZXx", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!VQtcpPYhzifN9Lqr.pPtRJMUFA3gbNZXx" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "vambrace" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343049, + "modifiedTime": 1740227863002, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VQtcpPYhzifN9Lqr" +} diff --git a/packs/items/Plattenarmschienen__3_2BNzuiU6wc3r9ByF.json b/packs/items/Plattenarmschienen__3_2BNzuiU6wc3r9ByF.json new file mode 100644 index 00000000..8fb15426 --- /dev/null +++ b/packs/items/Plattenarmschienen__3_2BNzuiU6wc3r9ByF.json @@ -0,0 +1,87 @@ +{ + "_id": "2BNzuiU6wc3r9ByF", + "name": "Plattenarmschienen +3", + "type": "armor", + "img": "icons/equipment/wrist/bracer-armored-steel-blue.webp", + "effects": [ + { + "_id": "PIRBFfHOrmdREhnH", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!2BNzuiU6wc3r9ByF.PIRBFfHOrmdREhnH" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "vambrace" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342668, + "modifiedTime": 1740227862963, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2BNzuiU6wc3r9ByF" +} diff --git a/packs/items/Plattenbeinschienen_9H3CBGOLUJ5JCHGJ.json b/packs/items/Plattenbeinschienen_9H3CBGOLUJ5JCHGJ.json new file mode 100644 index 00000000..ca809a2f --- /dev/null +++ b/packs/items/Plattenbeinschienen_9H3CBGOLUJ5JCHGJ.json @@ -0,0 +1,79 @@ +{ + "_id": "9H3CBGOLUJ5JCHGJ", + "name": "Plattenbeinschienen", + "type": "armor", + "img": "icons/equipment/leg/pants-armored-tasset-steel.webp", + "effects": [ + { + "_id": "sIbiQW6tSjZyfCzk", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!9H3CBGOLUJ5JCHGJ.sIbiQW6tSjZyfCzk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 8, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "greaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342768, + "modifiedTime": 1740227862970, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9H3CBGOLUJ5JCHGJ" +} diff --git a/packs/items/Plattenbeinschienen__1_KJsCiqvtPqjyu65Y.json b/packs/items/Plattenbeinschienen__1_KJsCiqvtPqjyu65Y.json new file mode 100644 index 00000000..192817de --- /dev/null +++ b/packs/items/Plattenbeinschienen__1_KJsCiqvtPqjyu65Y.json @@ -0,0 +1,87 @@ +{ + "_id": "KJsCiqvtPqjyu65Y", + "name": "Plattenbeinschienen +1", + "type": "armor", + "img": "icons/equipment/leg/cuisses-reticulated-steel.webp", + "effects": [ + { + "_id": "I32OnPe7rgPEHtEk", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!KJsCiqvtPqjyu65Y.I32OnPe7rgPEHtEk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "greaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342891, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KJsCiqvtPqjyu65Y" +} diff --git a/packs/items/Plattenbeinschienen__2_FVnS20q8S7LrAdFj.json b/packs/items/Plattenbeinschienen__2_FVnS20q8S7LrAdFj.json new file mode 100644 index 00000000..9cc1eba2 --- /dev/null +++ b/packs/items/Plattenbeinschienen__2_FVnS20q8S7LrAdFj.json @@ -0,0 +1,87 @@ +{ + "_id": "FVnS20q8S7LrAdFj", + "name": "Plattenbeinschienen +2", + "type": "armor", + "img": "icons/equipment/leg/cuisses-reticulated-black.webp", + "effects": [ + { + "_id": "Zw9tFdr75QWyt8lO", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!FVnS20q8S7LrAdFj.Zw9tFdr75QWyt8lO" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "greaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342821, + "modifiedTime": 1740227862979, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FVnS20q8S7LrAdFj" +} diff --git a/packs/items/Plattenbeinschienen__3_yDq5abf47mYIw3OG.json b/packs/items/Plattenbeinschienen__3_yDq5abf47mYIw3OG.json new file mode 100644 index 00000000..b92a21d3 --- /dev/null +++ b/packs/items/Plattenbeinschienen__3_yDq5abf47mYIw3OG.json @@ -0,0 +1,87 @@ +{ + "_id": "yDq5abf47mYIw3OG", + "name": "Plattenbeinschienen +3", + "type": "armor", + "img": "icons/equipment/leg/cuisses-plate-reticulated-steel-blue.webp", + "effects": [ + { + "_id": "dJcAdxKxsUIXzHCa", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!yDq5abf47mYIw3OG.dJcAdxKxsUIXzHCa" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "greaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343577, + "modifiedTime": 1740227863029, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yDq5abf47mYIw3OG" +} diff --git a/packs/items/Plattenpanzer__1_ABxdFjBvQWavQsEk.json b/packs/items/Plattenpanzer__1_ABxdFjBvQWavQsEk.json new file mode 100644 index 00000000..382eb08b --- /dev/null +++ b/packs/items/Plattenpanzer__1_ABxdFjBvQWavQsEk.json @@ -0,0 +1,35 @@ +{ + "_id": "ABxdFjBvQWavQsEk", + "name": "Plattenpanzer +1", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-steel-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 4300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342783, + "modifiedTime": 1740227862972, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ABxdFjBvQWavQsEk" +} diff --git a/packs/items/Plattenpanzer__2_03wnfxowhzvSJPSj.json b/packs/items/Plattenpanzer__2_03wnfxowhzvSJPSj.json new file mode 100644 index 00000000..58dd4a28 --- /dev/null +++ b/packs/items/Plattenpanzer__2_03wnfxowhzvSJPSj.json @@ -0,0 +1,35 @@ +{ + "_id": "03wnfxowhzvSJPSj", + "name": "Plattenpanzer +2", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-steel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 5300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342624, + "modifiedTime": 1740227862959, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!03wnfxowhzvSJPSj" +} diff --git a/packs/items/Plattenpanzer__3_5DY52CR03xXJHG6m.json b/packs/items/Plattenpanzer__3_5DY52CR03xXJHG6m.json new file mode 100644 index 00000000..2498dd24 --- /dev/null +++ b/packs/items/Plattenpanzer__3_5DY52CR03xXJHG6m.json @@ -0,0 +1,35 @@ +{ + "_id": "5DY52CR03xXJHG6m", + "name": "Plattenpanzer +3", + "type": "armor", + "img": "icons/equipment/chest/breastplate-gorget-steel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 6300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342711, + "modifiedTime": 1740227862966, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5DY52CR03xXJHG6m" +} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere__D4aCfCqniMSQ43hL.json b/packs/items/Plattenpanzer__F_r_Reittiere__D4aCfCqniMSQ43hL.json new file mode 100644 index 00000000..4f7e2d59 --- /dev/null +++ b/packs/items/Plattenpanzer__F_r_Reittiere__D4aCfCqniMSQ43hL.json @@ -0,0 +1,35 @@ +{ + "_id": "D4aCfCqniMSQ43hL", + "name": "Plattenpanzer (Für Reittiere)", + "type": "armor", + "img": "icons/commodities/metal/mail-plate-steel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -1

", + "quantity": 1, + "price": 150, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342805, + "modifiedTime": 1740227862977, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!D4aCfCqniMSQ43hL" +} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere___1_99xGE9jkmXEXyf4U.json b/packs/items/Plattenpanzer__F_r_Reittiere___1_99xGE9jkmXEXyf4U.json new file mode 100644 index 00000000..98ec0ead --- /dev/null +++ b/packs/items/Plattenpanzer__F_r_Reittiere___1_99xGE9jkmXEXyf4U.json @@ -0,0 +1,87 @@ +{ + "_id": "99xGE9jkmXEXyf4U", + "name": "Plattenpanzer (Für Reittiere) +1", + "type": "armor", + "img": "icons/commodities/metal/mail-plate-steel.webp", + "effects": [ + { + "_id": "Jkhqmke6gzWU8vPZ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!99xGE9jkmXEXyf4U.Jkhqmke6gzWU8vPZ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 4400, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342766, + "modifiedTime": 1740227862970, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!99xGE9jkmXEXyf4U" +} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere___2_c6N4vskeYthnydo3.json b/packs/items/Plattenpanzer__F_r_Reittiere___2_c6N4vskeYthnydo3.json new file mode 100644 index 00000000..4a2861ae --- /dev/null +++ b/packs/items/Plattenpanzer__F_r_Reittiere___2_c6N4vskeYthnydo3.json @@ -0,0 +1,87 @@ +{ + "_id": "c6N4vskeYthnydo3", + "name": "Plattenpanzer (Für Reittiere) +2", + "type": "armor", + "img": "icons/commodities/metal/mail-plate-steel.webp", + "effects": [ + { + "_id": "n0pBAhNqTJbvqDWx", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!c6N4vskeYthnydo3.n0pBAhNqTJbvqDWx" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 5400, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343105, + "modifiedTime": 1740227863007, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!c6N4vskeYthnydo3" +} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere___3_TBrsx86DgKfq9Qat.json b/packs/items/Plattenpanzer__F_r_Reittiere___3_TBrsx86DgKfq9Qat.json new file mode 100644 index 00000000..cb35f673 --- /dev/null +++ b/packs/items/Plattenpanzer__F_r_Reittiere___3_TBrsx86DgKfq9Qat.json @@ -0,0 +1,87 @@ +{ + "_id": "TBrsx86DgKfq9Qat", + "name": "Plattenpanzer (Für Reittiere) +3", + "type": "armor", + "img": "icons/commodities/metal/mail-plate-steel.webp", + "effects": [ + { + "_id": "ioazIqWWKawYuPBQ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!TBrsx86DgKfq9Qat.ioazIqWWKawYuPBQ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 6400, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342994, + "modifiedTime": 1740227862999, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TBrsx86DgKfq9Qat" +} diff --git a/packs/items/Plattenpanzer_t13RJoXrsS0HAyIQ.json b/packs/items/Plattenpanzer_t13RJoXrsS0HAyIQ.json new file mode 100644 index 00000000..c8b8d1b2 --- /dev/null +++ b/packs/items/Plattenpanzer_t13RJoXrsS0HAyIQ.json @@ -0,0 +1,87 @@ +{ + "_id": "t13RJoXrsS0HAyIQ", + "name": "Plattenpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-steel-grey.webp", + "effects": [ + { + "_id": "pAxAXam5JBN6Acz9", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.movement.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!t13RJoXrsS0HAyIQ.pAxAXam5JBN6Acz9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -1 m

", + "quantity": 1, + "price": 50, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343507, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!t13RJoXrsS0HAyIQ" +} diff --git a/packs/items/R_stung_des_Kriegers_55AkLjiaIn0SWO9k.json b/packs/items/R_stung_des_Kriegers_55AkLjiaIn0SWO9k.json new file mode 100644 index 00000000..fb89c396 --- /dev/null +++ b/packs/items/R_stung_des_Kriegers_55AkLjiaIn0SWO9k.json @@ -0,0 +1,79 @@ +{ + "_id": "55AkLjiaIn0SWO9k", + "name": "Rüstung des Kriegers", + "type": "armor", + "img": "icons/equipment/chest/breastplate-collared-steel.webp", + "effects": [ + { + "_id": "TZoEpatdi8z1nreX", + "flags": {}, + "changes": [ + { + "key": "system.attributes.body.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Körper +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!55AkLjiaIn0SWO9k.TZoEpatdi8z1nreX" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese aufwendig verzierte Plattenrüstung +2 gewährt ihrem Träger +1 auf Körper.

", + "quantity": 1, + "price": 7300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342708, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!55AkLjiaIn0SWO9k" +} diff --git a/packs/items/R_stung_des_L_wen_1uYooTtDWgzB9FI9.json b/packs/items/R_stung_des_L_wen_1uYooTtDWgzB9FI9.json new file mode 100644 index 00000000..ead087af --- /dev/null +++ b/packs/items/R_stung_des_L_wen_1uYooTtDWgzB9FI9.json @@ -0,0 +1,79 @@ +{ + "_id": "1uYooTtDWgzB9FI9", + "name": "Rüstung des Löwen", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-gold.webp", + "effects": [ + { + "_id": "iIT1kOsyMJn0mIte", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "1.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen +1,5 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!1uYooTtDWgzB9FI9.iIT1kOsyMJn0mIte" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine Plattenrüstung +2 mit verzierten Löwenköpfen, die Laufen +1,5 m gewährt.

", + "quantity": 1, + "price": 6800, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342658, + "modifiedTime": 1740227862963, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1uYooTtDWgzB9FI9" +} diff --git a/packs/items/R_stung_des_Sch_tzen_tQ1LUX7in4xuuR12.json b/packs/items/R_stung_des_Sch_tzen_tQ1LUX7in4xuuR12.json new file mode 100644 index 00000000..2b7a5ec4 --- /dev/null +++ b/packs/items/R_stung_des_Sch_tzen_tQ1LUX7in4xuuR12.json @@ -0,0 +1,130 @@ +{ + "_id": "tQ1LUX7in4xuuR12", + "name": "Rüstung des Schützen", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "C7jqj8julpambLpm", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!tQ1LUX7in4xuuR12.C7jqj8julpambLpm" + }, + { + "_id": "fwNP4w1u7JP3OFEb", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.rangedAttack.total", + "value": "3", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Schießen +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!tQ1LUX7in4xuuR12.fwNP4w1u7JP3OFEb" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese mit dunkelgrünen Stoffrändern gesäumte Kettenrüstung +1 gewährt ihrem Träger +3 auf Schießen.

", + "quantity": 1, + "price": 4760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343512, + "modifiedTime": 1740227863026, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tQ1LUX7in4xuuR12" +} diff --git a/packs/items/R_stung_des_Sp_hers_Akhijp2Wayupy1qw.json b/packs/items/R_stung_des_Sp_hers_Akhijp2Wayupy1qw.json new file mode 100644 index 00000000..d6d48e37 --- /dev/null +++ b/packs/items/R_stung_des_Sp_hers_Akhijp2Wayupy1qw.json @@ -0,0 +1,79 @@ +{ + "_id": "Akhijp2Wayupy1qw", + "name": "Rüstung des Spähers", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "1swDTN9Kj7othjdB", + "flags": {}, + "changes": [ + { + "key": "system.attributes.mobility.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Agilität +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Akhijp2Wayupy1qw.1swDTN9Kj7othjdB" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese mit braunen Lederpolstern verstärkte Kettenrüstung +1 gewährt ihrem Träger +1 auf Agilität.

", + "quantity": 1, + "price": 5260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342785, + "modifiedTime": 1740227862973, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Akhijp2Wayupy1qw" +} diff --git a/packs/items/Rauchkraut__5_Pfeifenk_pfe__8CYWepouh43ffkZ0.json b/packs/items/Rauchkraut__5_Pfeifenk_pfe__8CYWepouh43ffkZ0.json new file mode 100644 index 00000000..23f60f5e --- /dev/null +++ b/packs/items/Rauchkraut__5_Pfeifenk_pfe__8CYWepouh43ffkZ0.json @@ -0,0 +1,31 @@ +{ + "_id": "8CYWepouh43ffkZ0", + "name": "Rauchkraut (5 Pfeifenköpfe)", + "type": "loot", + "img": "icons/commodities/flowers/flower-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342761, + "modifiedTime": 1740227862969, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8CYWepouh43ffkZ0" +} diff --git a/packs/items/Robe_WP62N2sjGz3eIN18.json b/packs/items/Robe_WP62N2sjGz3eIN18.json new file mode 100644 index 00000000..d4a8d77e --- /dev/null +++ b/packs/items/Robe_WP62N2sjGz3eIN18.json @@ -0,0 +1,35 @@ +{ + "_id": "WP62N2sjGz3eIN18", + "name": "Robe", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-teal.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343055, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!WP62N2sjGz3eIN18" +} diff --git a/packs/items/Robe__1_FFCSMuHlDKiT0MxR.json b/packs/items/Robe__1_FFCSMuHlDKiT0MxR.json new file mode 100644 index 00000000..edd73f16 --- /dev/null +++ b/packs/items/Robe__1_FFCSMuHlDKiT0MxR.json @@ -0,0 +1,35 @@ +{ + "_id": "FFCSMuHlDKiT0MxR", + "name": "Robe +1", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342816, + "modifiedTime": 1740227862979, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FFCSMuHlDKiT0MxR" +} diff --git a/packs/items/Robe__2_NSg4SdEHDuCfwXji.json b/packs/items/Robe__2_NSg4SdEHDuCfwXji.json new file mode 100644 index 00000000..bc7e1d3e --- /dev/null +++ b/packs/items/Robe__2_NSg4SdEHDuCfwXji.json @@ -0,0 +1,87 @@ +{ + "_id": "NSg4SdEHDuCfwXji", + "name": "Robe +2", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-red.webp", + "effects": [ + { + "_id": "0GJ943ZfeGKcsb2l", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!NSg4SdEHDuCfwXji.0GJ943ZfeGKcsb2l" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342915, + "modifiedTime": 1740227862987, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NSg4SdEHDuCfwXji" +} diff --git a/packs/items/Robe__3_cFMcSg7PFIcQvf0B.json b/packs/items/Robe__3_cFMcSg7PFIcQvf0B.json new file mode 100644 index 00000000..c1308b31 --- /dev/null +++ b/packs/items/Robe__3_cFMcSg7PFIcQvf0B.json @@ -0,0 +1,35 @@ +{ + "_id": "cFMcSg7PFIcQvf0B", + "name": "Robe +3", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 3251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343111, + "modifiedTime": 1740227863008, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cFMcSg7PFIcQvf0B" +} diff --git a/packs/items/Robe_der_Macht_KGk7UFwLwrsdPuQe.json b/packs/items/Robe_der_Macht_KGk7UFwLwrsdPuQe.json new file mode 100644 index 00000000..0e8ecec4 --- /dev/null +++ b/packs/items/Robe_der_Macht_KGk7UFwLwrsdPuQe.json @@ -0,0 +1,79 @@ +{ + "_id": "KGk7UFwLwrsdPuQe", + "name": "Robe der Macht", + "type": "armor", + "img": "icons/equipment/chest/robe-collared-pink.webp", + "effects": [ + { + "_id": "tGAxxMZu2cj0Pzs2", + "flags": {}, + "changes": [ + { + "key": "system.attributes.mind.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Geist +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!KGk7UFwLwrsdPuQe.tGAxxMZu2cj0Pzs2" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese violette Robe +3 verleiht ihrem Träger +1 auf Geist.

", + "quantity": 1, + "price": 5251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342888, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KGk7UFwLwrsdPuQe" +} diff --git a/packs/items/Robe_des_Denkers_A9QnXaonGzuUBktX.json b/packs/items/Robe_des_Denkers_A9QnXaonGzuUBktX.json new file mode 100644 index 00000000..a3316320 --- /dev/null +++ b/packs/items/Robe_des_Denkers_A9QnXaonGzuUBktX.json @@ -0,0 +1,79 @@ +{ + "_id": "A9QnXaonGzuUBktX", + "name": "Robe des Denkers", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-white.webp", + "effects": [ + { + "_id": "Fyl7VFU1QhIbh2ul", + "flags": {}, + "changes": [ + { + "key": "system.traits.intellect.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "+1 Verstand (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!A9QnXaonGzuUBktX.Fyl7VFU1QhIbh2ul" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese graue Robe +2 verleiht +1 auf Verstand.

", + "quantity": 1, + "price": 3251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342781, + "modifiedTime": 1740227862972, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!A9QnXaonGzuUBktX" +} diff --git a/packs/items/Robe_des_Heilers_kVRybb0knZkoJLlj.json b/packs/items/Robe_des_Heilers_kVRybb0knZkoJLlj.json new file mode 100644 index 00000000..b59be378 --- /dev/null +++ b/packs/items/Robe_des_Heilers_kVRybb0knZkoJLlj.json @@ -0,0 +1,87 @@ +{ + "_id": "kVRybb0knZkoJLlj", + "name": "Robe des Heilers", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-white.webp", + "effects": [ + { + "_id": "GgAFMmXGb1B5KIda", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.healing" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Heilzauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!kVRybb0knZkoJLlj.GgAFMmXGb1B5KIda" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine weiße Robe, die ihrem Träger +1 auf Heilzauber gewährt.

", + "quantity": 1, + "price": 751, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343318, + "modifiedTime": 1740227863019, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kVRybb0knZkoJLlj" +} diff --git a/packs/items/Rucksack_HzqK6sd3ovgEZdWz.json b/packs/items/Rucksack_HzqK6sd3ovgEZdWz.json new file mode 100644 index 00000000..17e2d152 --- /dev/null +++ b/packs/items/Rucksack_HzqK6sd3ovgEZdWz.json @@ -0,0 +1,31 @@ +{ + "_id": "HzqK6sd3ovgEZdWz", + "name": "Rucksack", + "type": "loot", + "img": "icons/containers/bags/pack-leather-white-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342867, + "modifiedTime": 1740227862982, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HzqK6sd3ovgEZdWz" +} diff --git a/packs/items/Ruderboot__2_Mann__an96cOOwr3YujKpe.json b/packs/items/Ruderboot__2_Mann__an96cOOwr3YujKpe.json new file mode 100644 index 00000000..4aab6bd5 --- /dev/null +++ b/packs/items/Ruderboot__2_Mann__an96cOOwr3YujKpe.json @@ -0,0 +1,31 @@ +{ + "_id": "an96cOOwr3YujKpe", + "name": "Ruderboot (2 Mann)", + "type": "loot", + "img": "icons/tools/nautical/steering-wheel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 25, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343095, + "modifiedTime": 1740227863006, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!an96cOOwr3YujKpe" +} diff --git a/packs/items/Runenbestickte_Feurrobe_gK76RPRhQF7T4AQC.json b/packs/items/Runenbestickte_Feurrobe_gK76RPRhQF7T4AQC.json new file mode 100644 index 00000000..fd230b8a --- /dev/null +++ b/packs/items/Runenbestickte_Feurrobe_gK76RPRhQF7T4AQC.json @@ -0,0 +1,138 @@ +{ + "_id": "gK76RPRhQF7T4AQC", + "name": "Runenbestickte Feurrobe", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-red.webp", + "effects": [ + { + "_id": "Qpy3XcHOokbU7ZaS", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gK76RPRhQF7T4AQC.Qpy3XcHOokbU7ZaS" + }, + { + "_id": "IbOD7GxGN30V1AYL", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "5", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Feuermagier", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Feuermagier +V", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gK76RPRhQF7T4AQC.IbOD7GxGN30V1AYL" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine feuerrote Robe +3 mit aufgestickten Flammenrunen und Feuermagier +V.

", + "quantity": 1, + "price": 4501, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343207, + "modifiedTime": 1740227863015, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gK76RPRhQF7T4AQC" +} diff --git a/packs/items/Runenbestickte_Robe__1_sUHJSIG8aTs0do67.json b/packs/items/Runenbestickte_Robe__1_sUHJSIG8aTs0do67.json new file mode 100644 index 00000000..a655111d --- /dev/null +++ b/packs/items/Runenbestickte_Robe__1_sUHJSIG8aTs0do67.json @@ -0,0 +1,87 @@ +{ + "_id": "sUHJSIG8aTs0do67", + "name": "Runenbestickte Robe +1", + "type": "armor", + "img": "icons/equipment/chest/robe-collared-blue.webp", + "effects": [ + { + "_id": "6NLQSkPxsA3H8Gc8", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!sUHJSIG8aTs0do67.6NLQSkPxsA3H8Gc8" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aura +1

", + "quantity": 1, + "price": 1258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343486, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sUHJSIG8aTs0do67" +} diff --git a/packs/items/Runenbestickte_Robe__2_j3wcDmBNiDx7sK0n.json b/packs/items/Runenbestickte_Robe__2_j3wcDmBNiDx7sK0n.json new file mode 100644 index 00000000..1dc025c8 --- /dev/null +++ b/packs/items/Runenbestickte_Robe__2_j3wcDmBNiDx7sK0n.json @@ -0,0 +1,87 @@ +{ + "_id": "j3wcDmBNiDx7sK0n", + "name": "Runenbestickte Robe +2", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-blue.webp", + "effects": [ + { + "_id": "a2GXKNKHJWdyKb7h", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!j3wcDmBNiDx7sK0n.a2GXKNKHJWdyKb7h" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aura +1

", + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343301, + "modifiedTime": 1740227863018, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!j3wcDmBNiDx7sK0n" +} diff --git a/packs/items/Runenbestickte_Robe__3_U8iwfv7oJNl8CsKK.json b/packs/items/Runenbestickte_Robe__3_U8iwfv7oJNl8CsKK.json new file mode 100644 index 00000000..8664cf79 --- /dev/null +++ b/packs/items/Runenbestickte_Robe__3_U8iwfv7oJNl8CsKK.json @@ -0,0 +1,87 @@ +{ + "_id": "U8iwfv7oJNl8CsKK", + "name": "Runenbestickte Robe +3", + "type": "armor", + "img": "icons/equipment/chest/robe-collared-pink.webp", + "effects": [ + { + "_id": "CFyX5reV96JVL2Cg", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!U8iwfv7oJNl8CsKK.CFyX5reV96JVL2Cg" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aura +1

", + "quantity": 1, + "price": 3258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343029, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!U8iwfv7oJNl8CsKK" +} diff --git a/packs/items/Runenbestickte_Robe_w1bZ2431gdOQumWK.json b/packs/items/Runenbestickte_Robe_w1bZ2431gdOQumWK.json new file mode 100644 index 00000000..37704a4f --- /dev/null +++ b/packs/items/Runenbestickte_Robe_w1bZ2431gdOQumWK.json @@ -0,0 +1,79 @@ +{ + "_id": "w1bZ2431gdOQumWK", + "name": "Runenbestickte Robe", + "type": "armor", + "img": "icons/equipment/chest/coat-leather-blue.webp", + "effects": [ + { + "_id": "vgJWV95OeyzrjyFw", + "flags": {}, + "changes": [ + { + "key": "system.traits.aura.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Aura +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!w1bZ2431gdOQumWK.vgJWV95OeyzrjyFw" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aura +1

", + "quantity": 1, + "price": 8, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343553, + "modifiedTime": 1740227863028, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!w1bZ2431gdOQumWK" +} diff --git a/packs/items/S_ldnertreu_FVrbrxqVURPP3Yee.json b/packs/items/S_ldnertreu_FVrbrxqVURPP3Yee.json new file mode 100644 index 00000000..54223706 --- /dev/null +++ b/packs/items/S_ldnertreu_FVrbrxqVURPP3Yee.json @@ -0,0 +1,79 @@ +{ + "_id": "FVrbrxqVURPP3Yee", + "name": "Söldnertreu", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "qTM84JzHmlfYXGCb", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.meleeAttack.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Schlagen +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!FVrbrxqVURPP3Yee.qTM84JzHmlfYXGCb" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese mit blauen Stoffrändern gesäumte Kettenrüstung +1 gewährt ihrem Träger +1 auf Schlagen.

", + "quantity": 1, + "price": 3760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342825, + "modifiedTime": 1740227862979, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FVrbrxqVURPP3Yee" +} diff --git a/packs/items/Sack_RD0HKxmbhfluw73R.json b/packs/items/Sack_RD0HKxmbhfluw73R.json new file mode 100644 index 00000000..f5854278 --- /dev/null +++ b/packs/items/Sack_RD0HKxmbhfluw73R.json @@ -0,0 +1,31 @@ +{ + "_id": "RD0HKxmbhfluw73R", + "name": "Sack", + "type": "loot", + "img": "icons/containers/bags/sack-simple-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.8, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342958, + "modifiedTime": 1740227862994, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RD0HKxmbhfluw73R" +} diff --git a/packs/items/Sanduhr_R2LeIutCjDzwGwUx.json b/packs/items/Sanduhr_R2LeIutCjDzwGwUx.json new file mode 100644 index 00000000..acd46e4b --- /dev/null +++ b/packs/items/Sanduhr_R2LeIutCjDzwGwUx.json @@ -0,0 +1,31 @@ +{ + "_id": "R2LeIutCjDzwGwUx", + "name": "Sanduhr", + "type": "loot", + "img": "icons/tools/navigation/hourglass-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 10, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342957, + "modifiedTime": 1740227862994, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!R2LeIutCjDzwGwUx" +} diff --git a/packs/items/Sattel_nslQfc441x1GG0SL.json b/packs/items/Sattel_nslQfc441x1GG0SL.json new file mode 100644 index 00000000..0479dfa0 --- /dev/null +++ b/packs/items/Sattel_nslQfc441x1GG0SL.json @@ -0,0 +1,32 @@ +{ + "_id": "nslQfc441x1GG0SL", + "name": "Sattel", + "type": "equipment", + "img": "icons/commodities/leather/leather-scrap-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 5, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343364, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nslQfc441x1GG0SL" +} diff --git a/packs/items/Satteltasche_UpkQTtuxNS1eOIRu.json b/packs/items/Satteltasche_UpkQTtuxNS1eOIRu.json new file mode 100644 index 00000000..e2c558d5 --- /dev/null +++ b/packs/items/Satteltasche_UpkQTtuxNS1eOIRu.json @@ -0,0 +1,31 @@ +{ + "_id": "UpkQTtuxNS1eOIRu", + "name": "Satteltasche", + "type": "loot", + "img": "icons/containers/bags/pouch-simple-leather-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343040, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!UpkQTtuxNS1eOIRu" +} diff --git a/packs/items/Schlachtbeil_0UDiL2xAlGCEeckL.json b/packs/items/Schlachtbeil_0UDiL2xAlGCEeckL.json new file mode 100644 index 00000000..8e53ee0e --- /dev/null +++ b/packs/items/Schlachtbeil_0UDiL2xAlGCEeckL.json @@ -0,0 +1,35 @@ +{ + "_id": "0UDiL2xAlGCEeckL", + "name": "Schlachtbeil", + "type": "weapon", + "img": "icons/weapons/axes/axe-battle-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 20, + "availability": "city", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342632, + "modifiedTime": 1740227862960, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0UDiL2xAlGCEeckL" +} diff --git a/packs/items/Schlachtbeil__1_N3RcggWJuKGtKZyP.json b/packs/items/Schlachtbeil__1_N3RcggWJuKGtKZyP.json new file mode 100644 index 00000000..1aeb02f2 --- /dev/null +++ b/packs/items/Schlachtbeil__1_N3RcggWJuKGtKZyP.json @@ -0,0 +1,87 @@ +{ + "_id": "N3RcggWJuKGtKZyP", + "name": "Schlachtbeil +1", + "type": "weapon", + "img": "icons/weapons/axes/axe-battle-blackened.webp", + "effects": [ + { + "_id": "aHr33jsfG78BJ7m2", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!N3RcggWJuKGtKZyP.aHr33jsfG78BJ7m2" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2770, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342908, + "modifiedTime": 1740227862987, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!N3RcggWJuKGtKZyP" +} diff --git a/packs/items/Schlachtbeil__2_Qncx0jbmnD2KJAfG.json b/packs/items/Schlachtbeil__2_Qncx0jbmnD2KJAfG.json new file mode 100644 index 00000000..bcb9c419 --- /dev/null +++ b/packs/items/Schlachtbeil__2_Qncx0jbmnD2KJAfG.json @@ -0,0 +1,138 @@ +{ + "_id": "Qncx0jbmnD2KJAfG", + "name": "Schlachtbeil +2", + "type": "weapon", + "img": "icons/weapons/axes/axe-battle-engraved-purple.webp", + "effects": [ + { + "_id": "atmWPMxgNoeole7n", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-6", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -6", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Qncx0jbmnD2KJAfG.atmWPMxgNoeole7n" + }, + { + "_id": "Qdjy0578meoXi49p", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Qncx0jbmnD2KJAfG.Qdjy0578meoXi49p" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 3270, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -6 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342949, + "modifiedTime": 1740227862993, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Qncx0jbmnD2KJAfG" +} diff --git a/packs/items/Schlachtbeil__3_Nb65CmtFiiWPpnNZ.json b/packs/items/Schlachtbeil__3_Nb65CmtFiiWPpnNZ.json new file mode 100644 index 00000000..9afeadfa --- /dev/null +++ b/packs/items/Schlachtbeil__3_Nb65CmtFiiWPpnNZ.json @@ -0,0 +1,87 @@ +{ + "_id": "Nb65CmtFiiWPpnNZ", + "name": "Schlachtbeil +3", + "type": "weapon", + "img": "icons/weapons/axes/axe-battle-heavy-black.webp", + "effects": [ + { + "_id": "DJQ1hHJRJuraxIym", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Nb65CmtFiiWPpnNZ.DJQ1hHJRJuraxIym" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 3770, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 7, + "opponentDefense": -7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342917, + "modifiedTime": 1740227862988, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Nb65CmtFiiWPpnNZ" +} diff --git a/packs/items/Schlachtgei_el__1_hBemmfRcQLFU7PSt.json b/packs/items/Schlachtgei_el__1_hBemmfRcQLFU7PSt.json new file mode 100644 index 00000000..873cdb33 --- /dev/null +++ b/packs/items/Schlachtgei_el__1_hBemmfRcQLFU7PSt.json @@ -0,0 +1,87 @@ +{ + "_id": "hBemmfRcQLFU7PSt", + "name": "Schlachtgeißel +1", + "type": "weapon", + "img": "icons/weapons/maces/flail-triple-grey.webp", + "effects": [ + { + "_id": "oOQJt7Ub0PGGjdzW", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!hBemmfRcQLFU7PSt.oOQJt7Ub0PGGjdzW" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", + "quantity": 1, + "price": 2266, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343226, + "modifiedTime": 1740227863016, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hBemmfRcQLFU7PSt" +} diff --git a/packs/items/Schlachtgei_el__2_YSl6qdVC6fDYVkFQ.json b/packs/items/Schlachtgei_el__2_YSl6qdVC6fDYVkFQ.json new file mode 100644 index 00000000..9e004d86 --- /dev/null +++ b/packs/items/Schlachtgei_el__2_YSl6qdVC6fDYVkFQ.json @@ -0,0 +1,87 @@ +{ + "_id": "YSl6qdVC6fDYVkFQ", + "name": "Schlachtgeißel +2", + "type": "weapon", + "img": "icons/weapons/maces/flail-triple-grey.webp", + "effects": [ + { + "_id": "OF7IAa9tUBoz23TD", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!YSl6qdVC6fDYVkFQ.OF7IAa9tUBoz23TD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", + "quantity": 1, + "price": 2766, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -6 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343079, + "modifiedTime": 1740227863004, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!YSl6qdVC6fDYVkFQ" +} diff --git a/packs/items/Schlachtgei_el__3_eqGo6VKETI1UTxP1.json b/packs/items/Schlachtgei_el__3_eqGo6VKETI1UTxP1.json new file mode 100644 index 00000000..67d8f2d0 --- /dev/null +++ b/packs/items/Schlachtgei_el__3_eqGo6VKETI1UTxP1.json @@ -0,0 +1,87 @@ +{ + "_id": "eqGo6VKETI1UTxP1", + "name": "Schlachtgeißel +3", + "type": "weapon", + "img": "icons/weapons/maces/flail-triple-grey.webp", + "effects": [ + { + "_id": "uhpIAR3T0P3bJw1C", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!eqGo6VKETI1UTxP1.uhpIAR3T0P3bJw1C" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", + "quantity": 1, + "price": 3266, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343181, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eqGo6VKETI1UTxP1" +} diff --git a/packs/items/Schlachtgei_el_yfqzgTskyIgWZq8A.json b/packs/items/Schlachtgei_el_yfqzgTskyIgWZq8A.json new file mode 100644 index 00000000..635caddc --- /dev/null +++ b/packs/items/Schlachtgei_el_yfqzgTskyIgWZq8A.json @@ -0,0 +1,87 @@ +{ + "_id": "yfqzgTskyIgWZq8A", + "name": "Schlachtgeißel", + "type": "weapon", + "img": "icons/weapons/maces/flail-triple-grey.webp", + "effects": [ + { + "_id": "BdejYg7Bq6tM2ROu", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-4", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -4", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!yfqzgTskyIgWZq8A.BdejYg7Bq6tM2ROu" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", + "quantity": 1, + "price": 16, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343580, + "modifiedTime": 1740227863029, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yfqzgTskyIgWZq8A" +} diff --git a/packs/items/Schlafstaub_UBH03jh91dP6KMtL.json b/packs/items/Schlafstaub_UBH03jh91dP6KMtL.json new file mode 100644 index 00000000..295a0ce6 --- /dev/null +++ b/packs/items/Schlafstaub_UBH03jh91dP6KMtL.json @@ -0,0 +1,31 @@ +{ + "_id": "UBH03jh91dP6KMtL", + "name": "Schlafstaub", + "type": "loot", + "img": "icons/tools/laboratory/bowl-powder-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wirkt auf ein beworfenes Ziel den Zauber @Compendium[ds4.spells.CrZ8L7oaWvPjLou0]{Einschläfern}.

", + "quantity": 1, + "price": 151, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343033, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!UBH03jh91dP6KMtL" +} diff --git a/packs/items/Schlagring__1_fziU7tEIQPowqBJj.json b/packs/items/Schlagring__1_fziU7tEIQPowqBJj.json new file mode 100644 index 00000000..4146cc0b --- /dev/null +++ b/packs/items/Schlagring__1_fziU7tEIQPowqBJj.json @@ -0,0 +1,87 @@ +{ + "_id": "fziU7tEIQPowqBJj", + "name": "Schlagring +1", + "type": "weapon", + "img": "icons/weapons/fist/fist-knuckles-spiked-blue.webp", + "effects": [ + { + "_id": "ph5sqT08zd8lSi7s", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!fziU7tEIQPowqBJj.ph5sqT08zd8lSi7s" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", + "quantity": 1, + "price": 751, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343205, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fziU7tEIQPowqBJj" +} diff --git a/packs/items/Schlagring__2_830D1zHS3v0Gx4nB.json b/packs/items/Schlagring__2_830D1zHS3v0Gx4nB.json new file mode 100644 index 00000000..26be63c2 --- /dev/null +++ b/packs/items/Schlagring__2_830D1zHS3v0Gx4nB.json @@ -0,0 +1,87 @@ +{ + "_id": "830D1zHS3v0Gx4nB", + "name": "Schlagring +2", + "type": "weapon", + "img": "icons/weapons/fist/fist-knuckles-spiked-stone.webp", + "effects": [ + { + "_id": "iQZLQlcUQgnYg0Hs", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!830D1zHS3v0Gx4nB.iQZLQlcUQgnYg0Hs" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", + "quantity": 1, + "price": 1251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342750, + "modifiedTime": 1740227862968, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!830D1zHS3v0Gx4nB" +} diff --git a/packs/items/Schlagring__3_CHRqMQxkgz3jad9J.json b/packs/items/Schlagring__3_CHRqMQxkgz3jad9J.json new file mode 100644 index 00000000..0fc74214 --- /dev/null +++ b/packs/items/Schlagring__3_CHRqMQxkgz3jad9J.json @@ -0,0 +1,87 @@ +{ + "_id": "CHRqMQxkgz3jad9J", + "name": "Schlagring +3", + "type": "weapon", + "img": "icons/weapons/fist/fist-knuckles-brass.webp", + "effects": [ + { + "_id": "K3m0tLhoW9vT6e19", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!CHRqMQxkgz3jad9J.K3m0tLhoW9vT6e19" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", + "quantity": 1, + "price": 1751, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342800, + "modifiedTime": 1740227862975, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!CHRqMQxkgz3jad9J" +} diff --git a/packs/items/Schlagring_aJ9xkECmqeBUhING.json b/packs/items/Schlagring_aJ9xkECmqeBUhING.json new file mode 100644 index 00000000..3662f2fd --- /dev/null +++ b/packs/items/Schlagring_aJ9xkECmqeBUhING.json @@ -0,0 +1,35 @@ +{ + "_id": "aJ9xkECmqeBUhING", + "name": "Schlagring", + "type": "weapon", + "img": "icons/weapons/fist/fist-knuckles-spiked-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", + "quantity": 1, + "price": 1, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343087, + "modifiedTime": 1740227863005, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aJ9xkECmqeBUhING" +} diff --git a/packs/items/Schleuder_ETpbN0Q39eKPmWK0.json b/packs/items/Schleuder_ETpbN0Q39eKPmWK0.json new file mode 100644 index 00000000..ac74c0ee --- /dev/null +++ b/packs/items/Schleuder_ETpbN0Q39eKPmWK0.json @@ -0,0 +1,35 @@ +{ + "_id": "ETpbN0Q39eKPmWK0", + "name": "Schleuder", + "type": "weapon", + "img": "icons/weapons/slings/slingshot-wood.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342812, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ETpbN0Q39eKPmWK0" +} diff --git a/packs/items/Schleuder__1_GEBWsHBuyh9KbIbb.json b/packs/items/Schleuder__1_GEBWsHBuyh9KbIbb.json new file mode 100644 index 00000000..b0e84519 --- /dev/null +++ b/packs/items/Schleuder__1_GEBWsHBuyh9KbIbb.json @@ -0,0 +1,87 @@ +{ + "_id": "GEBWsHBuyh9KbIbb", + "name": "Schleuder +1", + "type": "weapon", + "img": "icons/weapons/slings/slingshot-wood.webp", + "effects": [ + { + "_id": "YCgrTPMCggWZOFdJ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!GEBWsHBuyh9KbIbb.YCgrTPMCggWZOFdJ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 750.1, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342850, + "modifiedTime": 1740227862980, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GEBWsHBuyh9KbIbb" +} diff --git a/packs/items/Schleuder__2_1IWsAaMSnz1Q9ZWd.json b/packs/items/Schleuder__2_1IWsAaMSnz1Q9ZWd.json new file mode 100644 index 00000000..c5a5237b --- /dev/null +++ b/packs/items/Schleuder__2_1IWsAaMSnz1Q9ZWd.json @@ -0,0 +1,87 @@ +{ + "_id": "1IWsAaMSnz1Q9ZWd", + "name": "Schleuder +2", + "type": "weapon", + "img": "icons/weapons/slings/slingshot-wood.webp", + "effects": [ + { + "_id": "aKfE4S2oocgJMro8", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!1IWsAaMSnz1Q9ZWd.aKfE4S2oocgJMro8" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 1250.1, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342651, + "modifiedTime": 1740227862962, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1IWsAaMSnz1Q9ZWd" +} diff --git a/packs/items/Schleuder__3_S4pc70BxmRU0DCsW.json b/packs/items/Schleuder__3_S4pc70BxmRU0DCsW.json new file mode 100644 index 00000000..9b32711a --- /dev/null +++ b/packs/items/Schleuder__3_S4pc70BxmRU0DCsW.json @@ -0,0 +1,87 @@ +{ + "_id": "S4pc70BxmRU0DCsW", + "name": "Schleuder +3", + "type": "weapon", + "img": "icons/weapons/slings/slingshot-wood.webp", + "effects": [ + { + "_id": "kM7ZknhuQS8uIJbu", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!S4pc70BxmRU0DCsW.kM7ZknhuQS8uIJbu" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 1750.1, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342981, + "modifiedTime": 1740227862998, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!S4pc70BxmRU0DCsW" +} diff --git a/packs/items/Schloss__Einfach__SW__0__3pdw4CN8Wc9oCKX5.json b/packs/items/Schloss__Einfach__SW__0__3pdw4CN8Wc9oCKX5.json new file mode 100644 index 00000000..69ec3d15 --- /dev/null +++ b/packs/items/Schloss__Einfach__SW__0__3pdw4CN8Wc9oCKX5.json @@ -0,0 +1,31 @@ +{ + "_id": "3pdw4CN8Wc9oCKX5", + "name": "Schloss: Einfach (SW: 0)", + "type": "loot", + "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342700, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3pdw4CN8Wc9oCKX5" +} diff --git a/packs/items/Schloss__Gut__SW__2__zAMFB4HHHUQp4RFa.json b/packs/items/Schloss__Gut__SW__2__zAMFB4HHHUQp4RFa.json new file mode 100644 index 00000000..753f9a85 --- /dev/null +++ b/packs/items/Schloss__Gut__SW__2__zAMFB4HHHUQp4RFa.json @@ -0,0 +1,31 @@ +{ + "_id": "zAMFB4HHHUQp4RFa", + "name": "Schloss: Gut (SW: 2)", + "type": "loot", + "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343593, + "modifiedTime": 1740227863030, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zAMFB4HHHUQp4RFa" +} diff --git a/packs/items/Schloss__Meisterartbeit__SW__8__Sks4O3NpwOWQIrIa.json b/packs/items/Schloss__Meisterartbeit__SW__8__Sks4O3NpwOWQIrIa.json new file mode 100644 index 00000000..65f80e36 --- /dev/null +++ b/packs/items/Schloss__Meisterartbeit__SW__8__Sks4O3NpwOWQIrIa.json @@ -0,0 +1,31 @@ +{ + "_id": "Sks4O3NpwOWQIrIa", + "name": "Schloss: Meisterartbeit (SW: 8)", + "type": "loot", + "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 50, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342990, + "modifiedTime": 1740227862999, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Sks4O3NpwOWQIrIa" +} diff --git a/packs/items/Schloss__Solide__SW__4__dW8OETKY21O3GNHf.json b/packs/items/Schloss__Solide__SW__4__dW8OETKY21O3GNHf.json new file mode 100644 index 00000000..ddee2f90 --- /dev/null +++ b/packs/items/Schloss__Solide__SW__4__dW8OETKY21O3GNHf.json @@ -0,0 +1,31 @@ +{ + "_id": "dW8OETKY21O3GNHf", + "name": "Schloss: Solide (SW: 4)", + "type": "loot", + "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 10, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343141, + "modifiedTime": 1740227863011, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dW8OETKY21O3GNHf" +} diff --git a/packs/items/Schloss__Zwergenarbeit__SW__12__tPlXSWQ4mP0dqnOa.json b/packs/items/Schloss__Zwergenarbeit__SW__12__tPlXSWQ4mP0dqnOa.json new file mode 100644 index 00000000..0f04a3cf --- /dev/null +++ b/packs/items/Schloss__Zwergenarbeit__SW__12__tPlXSWQ4mP0dqnOa.json @@ -0,0 +1,31 @@ +{ + "_id": "tPlXSWQ4mP0dqnOa", + "name": "Schloss: Zwergenarbeit (SW: 12)", + "type": "loot", + "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 250, + "availability": "city", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343511, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tPlXSWQ4mP0dqnOa" +} diff --git a/packs/items/Schnelligkeitstrank_Tlfjrxlm9NpmVR0L.json b/packs/items/Schnelligkeitstrank_Tlfjrxlm9NpmVR0L.json new file mode 100644 index 00000000..dcd84014 --- /dev/null +++ b/packs/items/Schnelligkeitstrank_Tlfjrxlm9NpmVR0L.json @@ -0,0 +1,31 @@ +{ + "_id": "Tlfjrxlm9NpmVR0L", + "name": "Schnelligkeitstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-fancy-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Für W20 Runden erhöht sich der Laufen- Wert des Trinkenden um 100%.

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343014, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Tlfjrxlm9NpmVR0L" +} diff --git a/packs/items/Schutzring__1_kGTB9f2zPrmedHq4.json b/packs/items/Schutzring__1_kGTB9f2zPrmedHq4.json new file mode 100644 index 00000000..e231c045 --- /dev/null +++ b/packs/items/Schutzring__1_kGTB9f2zPrmedHq4.json @@ -0,0 +1,76 @@ +{ + "_id": "kGTB9f2zPrmedHq4", + "name": "Schutzring +1", + "type": "equipment", + "img": "icons/equipment/finger/ring-band-engraved-lines-bronze.webp", + "effects": [ + { + "_id": "yH3Ujo3jKNCYI4n9", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Abwehr +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!kGTB9f2zPrmedHq4.yH3Ujo3jKNCYI4n9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht die Abwehr um 1, ohne dabei Panzerungsmalus zu verursachen.

", + "quantity": 1, + "price": 752, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343316, + "modifiedTime": 1740227863018, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kGTB9f2zPrmedHq4" +} diff --git a/packs/items/Schutzring__2_cg1y2GTJRGhE9Fpy.json b/packs/items/Schutzring__2_cg1y2GTJRGhE9Fpy.json new file mode 100644 index 00000000..0fae28f7 --- /dev/null +++ b/packs/items/Schutzring__2_cg1y2GTJRGhE9Fpy.json @@ -0,0 +1,76 @@ +{ + "_id": "cg1y2GTJRGhE9Fpy", + "name": "Schutzring +2", + "type": "equipment", + "img": "icons/equipment/finger/ring-band-engraved-scrolls-bronze.webp", + "effects": [ + { + "_id": "yH3Ujo3jKNCYI4n9", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "2", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Abwehr +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!cg1y2GTJRGhE9Fpy.yH3Ujo3jKNCYI4n9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht die Abwehr um 2, ohne dabei Panzerungsmalus zu verursachen.

", + "quantity": 1, + "price": 1252, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343113, + "modifiedTime": 1740227863008, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cg1y2GTJRGhE9Fpy" +} diff --git a/packs/items/Schutzring__3_qlBIUI00RTYZzclX.json b/packs/items/Schutzring__3_qlBIUI00RTYZzclX.json new file mode 100644 index 00000000..4e9591a1 --- /dev/null +++ b/packs/items/Schutzring__3_qlBIUI00RTYZzclX.json @@ -0,0 +1,76 @@ +{ + "_id": "qlBIUI00RTYZzclX", + "name": "Schutzring +3", + "type": "equipment", + "img": "icons/equipment/finger/ring-band-engraved-scrolls-gold.webp", + "effects": [ + { + "_id": "yH3Ujo3jKNCYI4n9", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "3", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Abwehr +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!qlBIUI00RTYZzclX.yH3Ujo3jKNCYI4n9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht die Abwehr um 3, ohne dabei Panzerungsmalus zu verursachen.

", + "quantity": 1, + "price": 1752, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343471, + "modifiedTime": 1740227863023, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!qlBIUI00RTYZzclX" +} diff --git a/packs/items/Schutztrank_XiW3k793840i0rdo.json b/packs/items/Schutztrank_XiW3k793840i0rdo.json new file mode 100644 index 00000000..3c5da18d --- /dev/null +++ b/packs/items/Schutztrank_XiW3k793840i0rdo.json @@ -0,0 +1,31 @@ +{ + "_id": "XiW3k793840i0rdo", + "name": "Schutztrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-pear-corked-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht für W20 Runden die Abwehr um +2.

", + "quantity": 1, + "price": 50, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343069, + "modifiedTime": 1740227863004, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XiW3k793840i0rdo" +} diff --git a/packs/items/Schwebenamulett_ElUWNqUWZB4dH3QS.json b/packs/items/Schwebenamulett_ElUWNqUWZB4dH3QS.json new file mode 100644 index 00000000..9d5183a4 --- /dev/null +++ b/packs/items/Schwebenamulett_ElUWNqUWZB4dH3QS.json @@ -0,0 +1,32 @@ +{ + "_id": "ElUWNqUWZB4dH3QS", + "name": "Schwebenamulett", + "type": "equipment", + "img": "icons/equipment/neck/amulet-moth-gold-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauber @Compendium[ds4.spells.SPnYNGggFb8XRICE]{Schweben} wurde in dieses Amulett gebettet.

", + "quantity": 1, + "price": 1515, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342813, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ElUWNqUWZB4dH3QS" +} diff --git a/packs/items/Schwebentrank_OZU7ietSpnivKPVt.json b/packs/items/Schwebentrank_OZU7ietSpnivKPVt.json new file mode 100644 index 00000000..911fe32d --- /dev/null +++ b/packs/items/Schwebentrank_OZU7ietSpnivKPVt.json @@ -0,0 +1,31 @@ +{ + "_id": "OZU7ietSpnivKPVt", + "name": "Schwebentrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-bulb-corked-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses meist grünliche Getränk wirkt den Zauber Schweben (Probenwert 20; Patzer ausgeschlossen).

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342923, + "modifiedTime": 1740227862988, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!OZU7ietSpnivKPVt" +} diff --git a/packs/items/Schwere_Armbrust_GJdez2VgLxwzlZAQ.json b/packs/items/Schwere_Armbrust_GJdez2VgLxwzlZAQ.json new file mode 100644 index 00000000..7fcaebf1 --- /dev/null +++ b/packs/items/Schwere_Armbrust_GJdez2VgLxwzlZAQ.json @@ -0,0 +1,35 @@ +{ + "_id": "GJdez2VgLxwzlZAQ", + "name": "Schwere Armbrust", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-heavy-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 15, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342858, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GJdez2VgLxwzlZAQ" +} diff --git a/packs/items/Schwere_Armbrust__1_S0EV25lf5TbN6COJ.json b/packs/items/Schwere_Armbrust__1_S0EV25lf5TbN6COJ.json new file mode 100644 index 00000000..b1107049 --- /dev/null +++ b/packs/items/Schwere_Armbrust__1_S0EV25lf5TbN6COJ.json @@ -0,0 +1,130 @@ +{ + "_id": "S0EV25lf5TbN6COJ", + "name": "Schwere Armbrust +1", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-loaded-black.webp", + "effects": [ + { + "_id": "N4vxVFNLW9Q9QsIp", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "-4", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative -4", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!S0EV25lf5TbN6COJ.N4vxVFNLW9Q9QsIp" + }, + { + "_id": "ZBJldrSO6rRHmgnI", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!S0EV25lf5TbN6COJ.ZBJldrSO6rRHmgnI" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 2265, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342977, + "modifiedTime": 1740227862997, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!S0EV25lf5TbN6COJ" +} diff --git a/packs/items/Schwere_Armbrust__2_NMmZ3Uu9uwAHc5IP.json b/packs/items/Schwere_Armbrust__2_NMmZ3Uu9uwAHc5IP.json new file mode 100644 index 00000000..1c7ad6bb --- /dev/null +++ b/packs/items/Schwere_Armbrust__2_NMmZ3Uu9uwAHc5IP.json @@ -0,0 +1,87 @@ +{ + "_id": "NMmZ3Uu9uwAHc5IP", + "name": "Schwere Armbrust +2", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-blue.webp", + "effects": [ + { + "_id": "sOBnfFviucXKykt1", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!NMmZ3Uu9uwAHc5IP.sOBnfFviucXKykt1" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 2765, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 5, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342912, + "modifiedTime": 1740227862987, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NMmZ3Uu9uwAHc5IP" +} diff --git a/packs/items/Schwere_Armbrust__3_RWSRxi9np1UrEi7N.json b/packs/items/Schwere_Armbrust__3_RWSRxi9np1UrEi7N.json new file mode 100644 index 00000000..bbfdb98f --- /dev/null +++ b/packs/items/Schwere_Armbrust__3_RWSRxi9np1UrEi7N.json @@ -0,0 +1,87 @@ +{ + "_id": "RWSRxi9np1UrEi7N", + "name": "Schwere Armbrust +3", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-ornamental-black.webp", + "effects": [ + { + "_id": "SlJV88ZHTV0VORzk", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RWSRxi9np1UrEi7N.SlJV88ZHTV0VORzk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 3265, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 6, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342966, + "modifiedTime": 1740227862996, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RWSRxi9np1UrEi7N" +} diff --git a/packs/items/Seife__1_St_ck__ozPRhUPx9Y9u3GNE.json b/packs/items/Seife__1_St_ck__ozPRhUPx9Y9u3GNE.json new file mode 100644 index 00000000..31b417a8 --- /dev/null +++ b/packs/items/Seife__1_St_ck__ozPRhUPx9Y9u3GNE.json @@ -0,0 +1,31 @@ +{ + "_id": "ozPRhUPx9Y9u3GNE", + "name": "Seife (1 Stück)", + "type": "loot", + "img": "icons/sundries/survival/soap.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343446, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ozPRhUPx9Y9u3GNE" +} diff --git a/packs/items/Seil__10m__aUKnYWOr7Fjy9sVX.json b/packs/items/Seil__10m__aUKnYWOr7Fjy9sVX.json new file mode 100644 index 00000000..6a167041 --- /dev/null +++ b/packs/items/Seil__10m__aUKnYWOr7Fjy9sVX.json @@ -0,0 +1,31 @@ +{ + "_id": "aUKnYWOr7Fjy9sVX", + "name": "Seil (10m)", + "type": "loot", + "img": "icons/sundries/survival/rope-wrapped-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343090, + "modifiedTime": 1740227863005, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aUKnYWOr7Fjy9sVX" +} diff --git a/packs/items/Skrupelloser_Bogen_K4fd3AlpMoK1EZeg.json b/packs/items/Skrupelloser_Bogen_K4fd3AlpMoK1EZeg.json new file mode 100644 index 00000000..3f936ae0 --- /dev/null +++ b/packs/items/Skrupelloser_Bogen_K4fd3AlpMoK1EZeg.json @@ -0,0 +1,87 @@ +{ + "_id": "K4fd3AlpMoK1EZeg", + "name": "Skrupelloser Bogen", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-recurve-red.webp", + "effects": [ + { + "_id": "8iny3Tt6i6g5EcYh", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!K4fd3AlpMoK1EZeg.8iny3Tt6i6g5EcYh" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Kurzbogen +1 mit @Compendium[ds4.spells.dt2E4g7iwVqTSlMl]{Kleiner Terror}, der Feinde angeblich immer in den Rücken trifft.

\n

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 2006, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342885, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!K4fd3AlpMoK1EZeg" +} diff --git a/packs/items/Smaragd_Schl_ssel_9xQRXWUYj3giHVRC.json b/packs/items/Smaragd_Schl_ssel_9xQRXWUYj3giHVRC.json new file mode 100644 index 00000000..396962b5 --- /dev/null +++ b/packs/items/Smaragd_Schl_ssel_9xQRXWUYj3giHVRC.json @@ -0,0 +1,31 @@ +{ + "_id": "9xQRXWUYj3giHVRC", + "name": "Smaragd-Schlüssel", + "type": "loot", + "img": "icons/sundries/misc/key-jeweled-gold-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Einmal alle 24h kann man damit den Zauber @Compendium[ds4.spells.ip0DVeb1YeNrEeUu]{Öffnen} auf ein Schloss wirken.

", + "quantity": 1, + "price": null, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342775, + "modifiedTime": 1740227862971, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9xQRXWUYj3giHVRC" +} diff --git a/packs/items/Speer__1_jRzgvvygxk5IjXYB.json b/packs/items/Speer__1_jRzgvvygxk5IjXYB.json new file mode 100644 index 00000000..9c84bf02 --- /dev/null +++ b/packs/items/Speer__1_jRzgvvygxk5IjXYB.json @@ -0,0 +1,87 @@ +{ + "_id": "jRzgvvygxk5IjXYB", + "name": "Speer +1", + "type": "weapon", + "img": "icons/weapons/polearms/spear-hooked-red.webp", + "effects": [ + { + "_id": "r0XGSAypTjvBmHHC", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!jRzgvvygxk5IjXYB.r0XGSAypTjvBmHHC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343306, + "modifiedTime": 1740227863018, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!jRzgvvygxk5IjXYB" +} diff --git a/packs/items/Speer__2_IfvOtBwOEYLPPvJK.json b/packs/items/Speer__2_IfvOtBwOEYLPPvJK.json new file mode 100644 index 00000000..31786b75 --- /dev/null +++ b/packs/items/Speer__2_IfvOtBwOEYLPPvJK.json @@ -0,0 +1,87 @@ +{ + "_id": "IfvOtBwOEYLPPvJK", + "name": "Speer +2", + "type": "weapon", + "img": "icons/weapons/polearms/spear-hooked-double-engraved.webp", + "effects": [ + { + "_id": "Kk9b3biK0mISYf75", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!IfvOtBwOEYLPPvJK.Kk9b3biK0mISYf75" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1751, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342870, + "modifiedTime": 1740227862983, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!IfvOtBwOEYLPPvJK" +} diff --git a/packs/items/Speer__3_HNHMmE4wNi0iXIjO.json b/packs/items/Speer__3_HNHMmE4wNi0iXIjO.json new file mode 100644 index 00000000..50df92f9 --- /dev/null +++ b/packs/items/Speer__3_HNHMmE4wNi0iXIjO.json @@ -0,0 +1,87 @@ +{ + "_id": "HNHMmE4wNi0iXIjO", + "name": "Speer +3", + "type": "weapon", + "img": "icons/weapons/polearms/spear-hooked-double-jeweled.webp", + "effects": [ + { + "_id": "YUzHa2B8n4yYyWyY", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!HNHMmE4wNi0iXIjO.YUzHa2B8n4yYyWyY" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342863, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HNHMmE4wNi0iXIjO" +} diff --git a/packs/items/Speer_oWvJfxEBr83QxO9Q.json b/packs/items/Speer_oWvJfxEBr83QxO9Q.json new file mode 100644 index 00000000..23866e54 --- /dev/null +++ b/packs/items/Speer_oWvJfxEBr83QxO9Q.json @@ -0,0 +1,35 @@ +{ + "_id": "oWvJfxEBr83QxO9Q", + "name": "Speer", + "type": "weapon", + "img": "icons/weapons/polearms/spear-hooked-simple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zerbricht bei Schießen-Patzer

", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343397, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oWvJfxEBr83QxO9Q" +} diff --git a/packs/items/Spruchspeicherring_oJbpYZlvfJ6kpudj.json b/packs/items/Spruchspeicherring_oJbpYZlvfJ6kpudj.json new file mode 100644 index 00000000..1d3a68ef --- /dev/null +++ b/packs/items/Spruchspeicherring_oJbpYZlvfJ6kpudj.json @@ -0,0 +1,32 @@ +{ + "_id": "oJbpYZlvfJ6kpudj", + "name": "Spruchspeicherring", + "type": "equipment", + "img": "icons/equipment/finger/ring-cabochon-engraved-gold-pink.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Einmal pro Tag kann der Träger des Ringes zu einem vorher festgelegten Zauber aktionsfrei wechseln, ohne dafür würfeln zu müssen, da in den Ring @Compendium[ds4.spells.DNplbUwfxszg5UbZ]{Wechselzauber} eingebettet wurde.

", + "quantity": 1, + "price": 4992, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343371, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oJbpYZlvfJ6kpudj" +} diff --git a/packs/items/St_rketrank_JlcYB53S1wQRfmUG.json b/packs/items/St_rketrank_JlcYB53S1wQRfmUG.json new file mode 100644 index 00000000..d4e3554f --- /dev/null +++ b/packs/items/St_rketrank_JlcYB53S1wQRfmUG.json @@ -0,0 +1,31 @@ +{ + "_id": "JlcYB53S1wQRfmUG", + "name": "Stärketrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-stopper-yellow.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser nach Schweiß riechende Trank verdoppelt ST für ST in Runden.

", + "quantity": 1, + "price": 150, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342884, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JlcYB53S1wQRfmUG" +} diff --git a/packs/items/Stab_des_Magus_uafOWinH9nnRO3lr.json b/packs/items/Stab_des_Magus_uafOWinH9nnRO3lr.json new file mode 100644 index 00000000..f2393032 --- /dev/null +++ b/packs/items/Stab_des_Magus_uafOWinH9nnRO3lr.json @@ -0,0 +1,130 @@ +{ + "_id": "uafOWinH9nnRO3lr", + "name": "Stab des Magus", + "type": "weapon", + "img": "icons/weapons/staves/staff-ornate-purple.webp", + "effects": [ + { + "_id": "ve7iQmkxC6l5WmTE", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!uafOWinH9nnRO3lr.ve7iQmkxC6l5WmTE" + }, + { + "_id": "XD3tGbvi1S03diuz", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.targetedSpellcasting.total", + "value": "3", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Zielzaubern +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!uafOWinH9nnRO3lr.XD3tGbvi1S03diuz" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Kampfstab +1 mit Zielzaubern +3 (insgesamt also mit dem normalen Bonus Zielzaubern +4).

\n

Zweihändig, Zielzaubern +1

", + "quantity": 1, + "price": 2750.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343535, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uafOWinH9nnRO3lr" +} diff --git a/packs/items/Stahlflamme_PPNAghq5SEhO1zNM.json b/packs/items/Stahlflamme_PPNAghq5SEhO1zNM.json new file mode 100644 index 00000000..f1f66ef0 --- /dev/null +++ b/packs/items/Stahlflamme_PPNAghq5SEhO1zNM.json @@ -0,0 +1,35 @@ +{ + "_id": "PPNAghq5SEhO1zNM", + "name": "Stahlflamme", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Langschwert +1 mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge} kam schon in vielen Kriegen zum Einsatz.

", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342931, + "modifiedTime": 1740227862989, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PPNAghq5SEhO1zNM" +} diff --git a/packs/items/Streitaxt__1_s1xaEPPKJGMImZ9m.json b/packs/items/Streitaxt__1_s1xaEPPKJGMImZ9m.json new file mode 100644 index 00000000..1407482f --- /dev/null +++ b/packs/items/Streitaxt__1_s1xaEPPKJGMImZ9m.json @@ -0,0 +1,87 @@ +{ + "_id": "s1xaEPPKJGMImZ9m", + "name": "Streitaxt +1", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-chopping-black.webp", + "effects": [ + { + "_id": "fQgMSANHWdQrzmlJ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!s1xaEPPKJGMImZ9m.fQgMSANHWdQrzmlJ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343477, + "modifiedTime": 1740227863024, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!s1xaEPPKJGMImZ9m" +} diff --git a/packs/items/Streitaxt__2_Idj6BxduoI3v4u9A.json b/packs/items/Streitaxt__2_Idj6BxduoI3v4u9A.json new file mode 100644 index 00000000..7370a20d --- /dev/null +++ b/packs/items/Streitaxt__2_Idj6BxduoI3v4u9A.json @@ -0,0 +1,87 @@ +{ + "_id": "Idj6BxduoI3v4u9A", + "name": "Streitaxt +2", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-black.webp", + "effects": [ + { + "_id": "iImvUwfo7IRqnmVv", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Idj6BxduoI3v4u9A.iImvUwfo7IRqnmVv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342869, + "modifiedTime": 1740227862982, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Idj6BxduoI3v4u9A" +} diff --git a/packs/items/Streitaxt__3_0P2wJM5qG1VupfXq.json b/packs/items/Streitaxt__3_0P2wJM5qG1VupfXq.json new file mode 100644 index 00000000..8262e0a8 --- /dev/null +++ b/packs/items/Streitaxt__3_0P2wJM5qG1VupfXq.json @@ -0,0 +1,87 @@ +{ + "_id": "0P2wJM5qG1VupfXq", + "name": "Streitaxt +3", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-blue.webp", + "effects": [ + { + "_id": "aNtjz1DteptmA3ce", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0P2wJM5qG1VupfXq.aNtjz1DteptmA3ce" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 3257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342630, + "modifiedTime": 1740227862960, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0P2wJM5qG1VupfXq" +} diff --git a/packs/items/Streitaxt_vqKLn65gjoced8jV.json b/packs/items/Streitaxt_vqKLn65gjoced8jV.json new file mode 100644 index 00000000..216734cd --- /dev/null +++ b/packs/items/Streitaxt_vqKLn65gjoced8jV.json @@ -0,0 +1,87 @@ +{ + "_id": "vqKLn65gjoced8jV", + "name": "Streitaxt", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-brown.webp", + "effects": [ + { + "_id": "DPS3CaNXapsBzzsj", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!vqKLn65gjoced8jV.DPS3CaNXapsBzzsj" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343551, + "modifiedTime": 1740227863028, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!vqKLn65gjoced8jV" +} diff --git a/packs/items/Streithammer__1_eMyZ5EJ9SsiXaeKK.json b/packs/items/Streithammer__1_eMyZ5EJ9SsiXaeKK.json new file mode 100644 index 00000000..31cc8afa --- /dev/null +++ b/packs/items/Streithammer__1_eMyZ5EJ9SsiXaeKK.json @@ -0,0 +1,87 @@ +{ + "_id": "eMyZ5EJ9SsiXaeKK", + "name": "Streithammer +1", + "type": "weapon", + "img": "icons/weapons/hammers/hammer-war-spiked-simple.webp", + "effects": [ + { + "_id": "bPdVsWIS1AC54ZA8", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!eMyZ5EJ9SsiXaeKK.bPdVsWIS1AC54ZA8" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343161, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eMyZ5EJ9SsiXaeKK" +} diff --git a/packs/items/Streithammer__2_eMeS2JSyiRJ5xO48.json b/packs/items/Streithammer__2_eMeS2JSyiRJ5xO48.json new file mode 100644 index 00000000..bbc7f41b --- /dev/null +++ b/packs/items/Streithammer__2_eMeS2JSyiRJ5xO48.json @@ -0,0 +1,87 @@ +{ + "_id": "eMeS2JSyiRJ5xO48", + "name": "Streithammer +2", + "type": "weapon", + "img": "icons/weapons/hammers/hammer-war-rounding.webp", + "effects": [ + { + "_id": "1I5R9xQlug0aSVTZ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!eMeS2JSyiRJ5xO48.1I5R9xQlug0aSVTZ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 2756, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343156, + "modifiedTime": 1740227863012, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eMeS2JSyiRJ5xO48" +} diff --git a/packs/items/Streithammer__3_iORLpplub64kuxb4.json b/packs/items/Streithammer__3_iORLpplub64kuxb4.json new file mode 100644 index 00000000..8e3b32da --- /dev/null +++ b/packs/items/Streithammer__3_iORLpplub64kuxb4.json @@ -0,0 +1,35 @@ +{ + "_id": "iORLpplub64kuxb4", + "name": "Streithammer +3", + "type": "weapon", + "img": "icons/weapons/hammers/hammer-war-spiked.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 3256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343258, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iORLpplub64kuxb4" +} diff --git a/packs/items/Streithammer_fmFM71TpvBxYqmu2.json b/packs/items/Streithammer_fmFM71TpvBxYqmu2.json new file mode 100644 index 00000000..920010c7 --- /dev/null +++ b/packs/items/Streithammer_fmFM71TpvBxYqmu2.json @@ -0,0 +1,35 @@ +{ + "_id": "fmFM71TpvBxYqmu2", + "name": "Streithammer", + "type": "weapon", + "img": "icons/weapons/hammers/hammer-simple-iron.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343198, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fmFM71TpvBxYqmu2" +} diff --git a/packs/items/Streitkolben__1_SIE4g3gjSkqVIT6W.json b/packs/items/Streitkolben__1_SIE4g3gjSkqVIT6W.json new file mode 100644 index 00000000..0a2fb5af --- /dev/null +++ b/packs/items/Streitkolben__1_SIE4g3gjSkqVIT6W.json @@ -0,0 +1,87 @@ +{ + "_id": "SIE4g3gjSkqVIT6W", + "name": "Streitkolben +1", + "type": "weapon", + "img": "icons/weapons/maces/mace-spiked-wood-grey.webp", + "effects": [ + { + "_id": "Qg9niqX5oimvg2Fv", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!SIE4g3gjSkqVIT6W.Qg9niqX5oimvg2Fv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342985, + "modifiedTime": 1740227862998, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!SIE4g3gjSkqVIT6W" +} diff --git a/packs/items/Streitkolben__2_Trl2ljtHi1kRYHTX.json b/packs/items/Streitkolben__2_Trl2ljtHi1kRYHTX.json new file mode 100644 index 00000000..d1bd65b2 --- /dev/null +++ b/packs/items/Streitkolben__2_Trl2ljtHi1kRYHTX.json @@ -0,0 +1,87 @@ +{ + "_id": "Trl2ljtHi1kRYHTX", + "name": "Streitkolben +2", + "type": "weapon", + "img": "icons/weapons/maces/mace-studded-steel.webp", + "effects": [ + { + "_id": "PeyncDD5OoPJkkTO", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Trl2ljtHi1kRYHTX.PeyncDD5OoPJkkTO" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343017, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Trl2ljtHi1kRYHTX" +} diff --git a/packs/items/Streitkolben__3_rdOU1FmBq1nqQKW5.json b/packs/items/Streitkolben__3_rdOU1FmBq1nqQKW5.json new file mode 100644 index 00000000..b6771136 --- /dev/null +++ b/packs/items/Streitkolben__3_rdOU1FmBq1nqQKW5.json @@ -0,0 +1,87 @@ +{ + "_id": "rdOU1FmBq1nqQKW5", + "name": "Streitkolben +3", + "type": "weapon", + "img": "icons/weapons/maces/mace-spiked-steel-grey.webp", + "effects": [ + { + "_id": "dgH1Fyz2pVFcmhFL", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!rdOU1FmBq1nqQKW5.dgH1Fyz2pVFcmhFL" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343474, + "modifiedTime": 1740227863024, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rdOU1FmBq1nqQKW5" +} diff --git a/packs/items/Streitkolben_mjBwhnK5gf9MIdlm.json b/packs/items/Streitkolben_mjBwhnK5gf9MIdlm.json new file mode 100644 index 00000000..ed2fa842 --- /dev/null +++ b/packs/items/Streitkolben_mjBwhnK5gf9MIdlm.json @@ -0,0 +1,35 @@ +{ + "_id": "mjBwhnK5gf9MIdlm", + "name": "Streitkolben", + "type": "weapon", + "img": "icons/weapons/maces/mace-spiked-steel-wood.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343332, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mjBwhnK5gf9MIdlm" +} diff --git a/packs/items/Sturmrobe_xeSyfEpn3gABmKDR.json b/packs/items/Sturmrobe_xeSyfEpn3gABmKDR.json new file mode 100644 index 00000000..61db75ba --- /dev/null +++ b/packs/items/Sturmrobe_xeSyfEpn3gABmKDR.json @@ -0,0 +1,87 @@ +{ + "_id": "xeSyfEpn3gABmKDR", + "name": "Sturmrobe", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-teal.webp", + "effects": [ + { + "_id": "JjEEDD1H1NvKF1Vr", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!xeSyfEpn3gABmKDR.JjEEDD1H1NvKF1Vr" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese blaugraue Robe +1 mit aufgestickten Sturm- & Gewitterwolken gewährt +1 auf jeden Blitzzauber. Selbst bei Windstille wogt sie in einer leichten Brise.

", + "quantity": 1, + "price": 1751, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343566, + "modifiedTime": 1740227863029, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xeSyfEpn3gABmKDR" +} diff --git a/packs/items/Tagesration__3_Mahlzeiten__U89qHZqIfVM8xvaJ.json b/packs/items/Tagesration__3_Mahlzeiten__U89qHZqIfVM8xvaJ.json new file mode 100644 index 00000000..8f91c3b3 --- /dev/null +++ b/packs/items/Tagesration__3_Mahlzeiten__U89qHZqIfVM8xvaJ.json @@ -0,0 +1,31 @@ +{ + "_id": "U89qHZqIfVM8xvaJ", + "name": "Tagesration (3 Mahlzeiten)", + "type": "loot", + "img": "icons/tools/cooking/can.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343024, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!U89qHZqIfVM8xvaJ" +} diff --git a/packs/items/Talenttrank_pljOii88ltzuQNsu.json b/packs/items/Talenttrank_pljOii88ltzuQNsu.json new file mode 100644 index 00000000..2ef8265a --- /dev/null +++ b/packs/items/Talenttrank_pljOii88ltzuQNsu.json @@ -0,0 +1,31 @@ +{ + "_id": "pljOii88ltzuQNsu", + "name": "Talenttrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-corked-labeled-pink.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Metallisch riechend, erhöht dieser Trank für W20 Runden ein vom Trinkenden bereits beherrschtes Talent um +I.

", + "quantity": 1, + "price": 100, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343461, + "modifiedTime": 1740227863022, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pljOii88ltzuQNsu" +} diff --git a/packs/items/Talgkerze__brennt_6h__iMX7YuWPHnCnbeh8.json b/packs/items/Talgkerze__brennt_6h__iMX7YuWPHnCnbeh8.json new file mode 100644 index 00000000..4bfe151c --- /dev/null +++ b/packs/items/Talgkerze__brennt_6h__iMX7YuWPHnCnbeh8.json @@ -0,0 +1,31 @@ +{ + "_id": "iMX7YuWPHnCnbeh8", + "name": "Talgkerze (brennt 6h)", + "type": "loot", + "img": "icons/sundries/lights/candle-unlit-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.01, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343250, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iMX7YuWPHnCnbeh8" +} diff --git a/packs/items/Tee__10_Tassen__9aY1zWfD5RwZlAUH.json b/packs/items/Tee__10_Tassen__9aY1zWfD5RwZlAUH.json new file mode 100644 index 00000000..ad6156ec --- /dev/null +++ b/packs/items/Tee__10_Tassen__9aY1zWfD5RwZlAUH.json @@ -0,0 +1,31 @@ +{ + "_id": "9aY1zWfD5RwZlAUH", + "name": "Tee (10 Tassen)", + "type": "loot", + "img": "icons/commodities/flowers/buds-red-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.05, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342774, + "modifiedTime": 1740227862971, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9aY1zWfD5RwZlAUH" +} diff --git a/packs/items/Teleporttrank_1uHuQJcCjjxzvP4C.json b/packs/items/Teleporttrank_1uHuQJcCjjxzvP4C.json new file mode 100644 index 00000000..ede65106 --- /dev/null +++ b/packs/items/Teleporttrank_1uHuQJcCjjxzvP4C.json @@ -0,0 +1,31 @@ +{ + "_id": "1uHuQJcCjjxzvP4C", + "name": "Teleporttrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-fumes-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser rauchige, wirbelnde Trank wirkt den Zauber @Compendium[ds4.spells.ANV77WNlbZFRMssv]{Teleport} auf den Trinker (keine Probe notwendig), nicht jedoch auf weitere Charaktere.

", + "quantity": 1, + "price": 1000, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342655, + "modifiedTime": 1740227862963, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1uHuQJcCjjxzvP4C" +} diff --git a/packs/items/Tinte__reicht_f_r_50_Seiten__fB8GyT0S38fomHsg.json b/packs/items/Tinte__reicht_f_r_50_Seiten__fB8GyT0S38fomHsg.json new file mode 100644 index 00000000..9dbfa30a --- /dev/null +++ b/packs/items/Tinte__reicht_f_r_50_Seiten__fB8GyT0S38fomHsg.json @@ -0,0 +1,31 @@ +{ + "_id": "fB8GyT0S38fomHsg", + "name": "Tinte (reicht für 50 Seiten)", + "type": "loot", + "img": "icons/tools/scribal/ink-quill-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343196, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fB8GyT0S38fomHsg" +} diff --git a/packs/items/Topf_cDIVsXpVltyRnhqM.json b/packs/items/Topf_cDIVsXpVltyRnhqM.json new file mode 100644 index 00000000..2ba3248e --- /dev/null +++ b/packs/items/Topf_cDIVsXpVltyRnhqM.json @@ -0,0 +1,31 @@ +{ + "_id": "cDIVsXpVltyRnhqM", + "name": "Topf", + "type": "loot", + "img": "icons/tools/cooking/cauldron-empty.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343108, + "modifiedTime": 1740227863008, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cDIVsXpVltyRnhqM" +} diff --git a/packs/items/Trank_der_Gasgestalt_dUQPe5X6ka3HJLuF.json b/packs/items/Trank_der_Gasgestalt_dUQPe5X6ka3HJLuF.json new file mode 100644 index 00000000..4572a27e --- /dev/null +++ b/packs/items/Trank_der_Gasgestalt_dUQPe5X6ka3HJLuF.json @@ -0,0 +1,31 @@ +{ + "_id": "dUQPe5X6ka3HJLuF", + "name": "Trank der Gasgestalt", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-fancy-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser meist rauchige Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.tZJoj1PGrRGe9eMV]{Gasgestalt} (Probenwert 20; Patzer ausgeschlossen).

", + "quantity": 1, + "price": 500, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343139, + "modifiedTime": 1740227863011, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dUQPe5X6ka3HJLuF" +} diff --git a/packs/items/Trank_der_Lebenskraft_74iFRkzvOwLxOxOq.json b/packs/items/Trank_der_Lebenskraft_74iFRkzvOwLxOxOq.json new file mode 100644 index 00000000..d36a8bd7 --- /dev/null +++ b/packs/items/Trank_der_Lebenskraft_74iFRkzvOwLxOxOq.json @@ -0,0 +1,31 @@ +{ + "_id": "74iFRkzvOwLxOxOq", + "name": "Trank der Lebenskraft", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-labeled-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese meist blutroten Tränke erhöhen die Lebenskraft um W20 für W20 Stunden.

", + "quantity": 1, + "price": 500, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342735, + "modifiedTime": 1740227862967, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!74iFRkzvOwLxOxOq" +} diff --git a/packs/items/Trank_der_Zwergensicht_nixhgFSQ7jaZrvxD.json b/packs/items/Trank_der_Zwergensicht_nixhgFSQ7jaZrvxD.json new file mode 100644 index 00000000..45088efe --- /dev/null +++ b/packs/items/Trank_der_Zwergensicht_nixhgFSQ7jaZrvxD.json @@ -0,0 +1,31 @@ +{ + "_id": "nixhgFSQ7jaZrvxD", + "name": "Trank der Zwergensicht", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-labeled-medicine-capped-red-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses meist schwarze Getränk gewährt für W20 Stunden dem Trinker die zwergische Volksfähigkeit Dunkelsicht (DS4 S. 83).

", + "quantity": 1, + "price": 15, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343360, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nixhgFSQ7jaZrvxD" +} diff --git a/packs/items/Turmschild_0e8GeSHxVf72FXvT.json b/packs/items/Turmschild_0e8GeSHxVf72FXvT.json new file mode 100644 index 00000000..421356e8 --- /dev/null +++ b/packs/items/Turmschild_0e8GeSHxVf72FXvT.json @@ -0,0 +1,85 @@ +{ + "_id": "0e8GeSHxVf72FXvT", + "name": "Turmschild", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-boss-red.webp", + "effects": [ + { + "_id": "ScAKi1eiWow9Y1ZZ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.movement.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0e8GeSHxVf72FXvT.ScAKi1eiWow9Y1ZZ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -1

", + "quantity": 1, + "price": 15, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342637, + "modifiedTime": 1740227862961, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0e8GeSHxVf72FXvT" +} diff --git a/packs/items/Turmschild__1_ibiHqm4rH8meeu9m.json b/packs/items/Turmschild__1_ibiHqm4rH8meeu9m.json new file mode 100644 index 00000000..787778a8 --- /dev/null +++ b/packs/items/Turmschild__1_ibiHqm4rH8meeu9m.json @@ -0,0 +1,128 @@ +{ + "_id": "ibiHqm4rH8meeu9m", + "name": "Turmschild +1", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-engraved-lance-rest.webp", + "effects": [ + { + "_id": "ScAKi1eiWow9Y1ZZ", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ibiHqm4rH8meeu9m.ScAKi1eiWow9Y1ZZ" + }, + { + "_id": "TeyRcwja5lQWHICW", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ibiHqm4rH8meeu9m.TeyRcwja5lQWHICW" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 3265, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343297, + "modifiedTime": 1740227863018, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ibiHqm4rH8meeu9m" +} diff --git a/packs/items/Turmschild__2_Li5rC0lvytKRAc31.json b/packs/items/Turmschild__2_Li5rC0lvytKRAc31.json new file mode 100644 index 00000000..229a1c6d --- /dev/null +++ b/packs/items/Turmschild__2_Li5rC0lvytKRAc31.json @@ -0,0 +1,85 @@ +{ + "_id": "Li5rC0lvytKRAc31", + "name": "Turmschild +2", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-gold.webp", + "effects": [ + { + "_id": "yfHGGfxxGvmHG6b9", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Li5rC0lvytKRAc31.yfHGGfxxGvmHG6b9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4265, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342901, + "modifiedTime": 1740227862986, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Li5rC0lvytKRAc31" +} diff --git a/packs/items/Turmschild__3_UNd96UN0NQo8I0SI.json b/packs/items/Turmschild__3_UNd96UN0NQo8I0SI.json new file mode 100644 index 00000000..b458632c --- /dev/null +++ b/packs/items/Turmschild__3_UNd96UN0NQo8I0SI.json @@ -0,0 +1,85 @@ +{ + "_id": "UNd96UN0NQo8I0SI", + "name": "Turmschild +3", + "type": "shield", + "img": "icons/equipment/shield/heater-embossed-gold.webp", + "effects": [ + { + "_id": "ZXSBIh1UotdZuHbj", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!UNd96UN0NQo8I0SI.ZXSBIh1UotdZuHbj" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 5265, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343035, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!UNd96UN0NQo8I0SI" +} diff --git a/packs/items/Umh_ngetasche_BeXHrv1TQzgfV6Mc.json b/packs/items/Umh_ngetasche_BeXHrv1TQzgfV6Mc.json new file mode 100644 index 00000000..0917855c --- /dev/null +++ b/packs/items/Umh_ngetasche_BeXHrv1TQzgfV6Mc.json @@ -0,0 +1,31 @@ +{ + "_id": "BeXHrv1TQzgfV6Mc", + "name": "Umhängetasche", + "type": "loot", + "img": "icons/containers/bags/pack-leather-embossed-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342792, + "modifiedTime": 1740227862974, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!BeXHrv1TQzgfV6Mc" +} diff --git a/packs/items/Unsichtbarkeitsring_kurEYTP9rqk8YnND.json b/packs/items/Unsichtbarkeitsring_kurEYTP9rqk8YnND.json new file mode 100644 index 00000000..96164657 --- /dev/null +++ b/packs/items/Unsichtbarkeitsring_kurEYTP9rqk8YnND.json @@ -0,0 +1,32 @@ +{ + "_id": "kurEYTP9rqk8YnND", + "name": "Unsichtbarkeitsring", + "type": "equipment", + "img": "icons/equipment/finger/ring-band-rounded-gold.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Böse Zungen behaupten, dass dieser Ring, in den @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} eingebettet ist, seinen Träger zu seinem abhängigen Sklaven macht.

", + "quantity": 1, + "price": 6972, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343319, + "modifiedTime": 1740227863019, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kurEYTP9rqk8YnND" +} diff --git a/packs/items/Unsichtbarkeitstrank_uYcNgFz5PkaOmK6b.json b/packs/items/Unsichtbarkeitstrank_uYcNgFz5PkaOmK6b.json new file mode 100644 index 00000000..6983fea4 --- /dev/null +++ b/packs/items/Unsichtbarkeitstrank_uYcNgFz5PkaOmK6b.json @@ -0,0 +1,31 @@ +{ + "_id": "uYcNgFz5PkaOmK6b", + "name": "Unsichtbarkeitstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-corked-tied-necklace-teal.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser oft klare, farblose Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} (Probenwert 20; Patzer ausgeschlossen).

", + "quantity": 1, + "price": 500, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343529, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uYcNgFz5PkaOmK6b" +} diff --git a/packs/items/Unverwundbartrank_1HjmUAR5mf59yXlw.json b/packs/items/Unverwundbartrank_1HjmUAR5mf59yXlw.json new file mode 100644 index 00000000..7cdc2028 --- /dev/null +++ b/packs/items/Unverwundbartrank_1HjmUAR5mf59yXlw.json @@ -0,0 +1,31 @@ +{ + "_id": "1HjmUAR5mf59yXlw", + "name": "Unverwundbartrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-corked-shiny-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter erhält für W20 Runden +20 auf seine Abwehr durch diesen meist roten, flockigen Trank. Dieser Bonus gilt auch bei Schaden, gegen den normalerweise keine Abwehr zulässig ist.

", + "quantity": 1, + "price": 1000, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342649, + "modifiedTime": 1740227862962, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1HjmUAR5mf59yXlw" +} diff --git a/packs/items/Verbandszeug_HIfMiFd0ZbqE3VKt.json b/packs/items/Verbandszeug_HIfMiFd0ZbqE3VKt.json new file mode 100644 index 00000000..fd51f614 --- /dev/null +++ b/packs/items/Verbandszeug_HIfMiFd0ZbqE3VKt.json @@ -0,0 +1,31 @@ +{ + "_id": "HIfMiFd0ZbqE3VKt", + "name": "Verbandszeug", + "type": "loot", + "img": "icons/commodities/cloth/cloth-roll-worn-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Verschnaufen +1 oder natürliches Heilergebnis +1

", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342862, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HIfMiFd0ZbqE3VKt" +} diff --git a/packs/items/Vergr__erungstrank_Wjcv3WZW3j4jg9XY.json b/packs/items/Vergr__erungstrank_Wjcv3WZW3j4jg9XY.json new file mode 100644 index 00000000..1dd03b80 --- /dev/null +++ b/packs/items/Vergr__erungstrank_Wjcv3WZW3j4jg9XY.json @@ -0,0 +1,31 @@ +{ + "_id": "Wjcv3WZW3j4jg9XY", + "name": "Vergrößerungstrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-bulb-corked-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Vergrößert den Trinkenden auf das Doppelte seiner normalen Größe für W20/2 Minuten. KÖR, ST und HÄ werden verdoppelt und die Kampfwerte entsprechend angepasst.

", + "quantity": 1, + "price": 1000, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343060, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Wjcv3WZW3j4jg9XY" +} diff --git a/packs/items/Verj_ngungstrank_RlA4PIa9hnsqoqFi.json b/packs/items/Verj_ngungstrank_RlA4PIa9hnsqoqFi.json new file mode 100644 index 00000000..42668ec0 --- /dev/null +++ b/packs/items/Verj_ngungstrank_RlA4PIa9hnsqoqFi.json @@ -0,0 +1,31 @@ +{ + "_id": "RlA4PIa9hnsqoqFi", + "name": "Verjüngungstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-tube-corked-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Trinkende wird augenblicklich W20 Jahre jünger.

", + "quantity": 1, + "price": 5000, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342967, + "modifiedTime": 1740227862996, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RlA4PIa9hnsqoqFi" +} diff --git a/packs/items/Verkleinerungstrank_LAI81qZlbkr7MlGY.json b/packs/items/Verkleinerungstrank_LAI81qZlbkr7MlGY.json new file mode 100644 index 00000000..2b4db098 --- /dev/null +++ b/packs/items/Verkleinerungstrank_LAI81qZlbkr7MlGY.json @@ -0,0 +1,31 @@ +{ + "_id": "LAI81qZlbkr7MlGY", + "name": "Verkleinerungstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-corked-yellow.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Verkleinert den Trinkenden auf ein Zehntel seiner normalen Größe für W20 Minuten. KÖR, ST und HÄ werden solange halbiert und die Kampfwerte entsprechend angepasst.

", + "quantity": 1, + "price": 100, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342900, + "modifiedTime": 1740227862986, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!LAI81qZlbkr7MlGY" +} diff --git a/packs/items/Wachsamkeitstrank_gXr3lLQmlHeDMuv5.json b/packs/items/Wachsamkeitstrank_gXr3lLQmlHeDMuv5.json new file mode 100644 index 00000000..637f8a16 --- /dev/null +++ b/packs/items/Wachsamkeitstrank_gXr3lLQmlHeDMuv5.json @@ -0,0 +1,31 @@ +{ + "_id": "gXr3lLQmlHeDMuv5", + "name": "Wachsamkeitstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-tube-corked-labeled-cyan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses meist klare Getränk gewährt für W20 Stunden auf alle Bemerken-Proben einen Bonus von +5.

", + "quantity": 1, + "price": 15, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343214, + "modifiedTime": 1740227863015, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gXr3lLQmlHeDMuv5" +} diff --git a/packs/items/Wachskerze__brennt_10h__S204KfhmoRdMDVpZ.json b/packs/items/Wachskerze__brennt_10h__S204KfhmoRdMDVpZ.json new file mode 100644 index 00000000..717900bd --- /dev/null +++ b/packs/items/Wachskerze__brennt_10h__S204KfhmoRdMDVpZ.json @@ -0,0 +1,31 @@ +{ + "_id": "S204KfhmoRdMDVpZ", + "name": "Wachskerze (brennt 10h)", + "type": "loot", + "img": "icons/sundries/lights/candle-unlit-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.02, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342979, + "modifiedTime": 1740227862998, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!S204KfhmoRdMDVpZ" +} diff --git a/packs/items/Waffenlos_OvxWaEJrElas3EUL.json b/packs/items/Waffenlos_OvxWaEJrElas3EUL.json new file mode 100644 index 00000000..4cd60dcf --- /dev/null +++ b/packs/items/Waffenlos_OvxWaEJrElas3EUL.json @@ -0,0 +1,35 @@ +{ + "_id": "OvxWaEJrElas3EUL", + "name": "Waffenlos", + "type": "weapon", + "img": "icons/equipment/hand/gauntlet-tooled-leather-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342927, + "modifiedTime": 1740227862989, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!OvxWaEJrElas3EUL" +} diff --git a/packs/items/Waffenpaste_zXgxu2gCkaTSSSMU.json b/packs/items/Waffenpaste_zXgxu2gCkaTSSSMU.json new file mode 100644 index 00000000..effd711c --- /dev/null +++ b/packs/items/Waffenpaste_zXgxu2gCkaTSSSMU.json @@ -0,0 +1,31 @@ +{ + "_id": "zXgxu2gCkaTSSSMU", + "name": "Waffenpaste", + "type": "loot", + "img": "icons/tools/laboratory/bowl-liquid-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Macht WB+1; hält W20 Nahkampfangriffe bzw. reicht für W20 Fernkampfgeschosse

", + "quantity": 1, + "price": 0.5, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343609, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zXgxu2gCkaTSSSMU" +} diff --git a/packs/items/Waffenweih_luYRwVP5oR6cdDMQ.json b/packs/items/Waffenweih_luYRwVP5oR6cdDMQ.json new file mode 100644 index 00000000..984b1e6d --- /dev/null +++ b/packs/items/Waffenweih_luYRwVP5oR6cdDMQ.json @@ -0,0 +1,31 @@ +{ + "_id": "luYRwVP5oR6cdDMQ", + "name": "Waffenweih", + "type": "loot", + "img": "icons/consumables/potions/potion-jar-capped-teal.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Über eine Waffe geschüttet, verleiht dieser meist silberne Trank dieser für die Dauer eines Kampfes den Effekt des Zaubers @Compendium[ds4.spells.ASvdS1fyjmRS1Xb6]{Magische Waffe}.

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343322, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!luYRwVP5oR6cdDMQ" +} diff --git a/packs/items/Wagen__4_R_der__4E9WdEs1JaWrCYim.json b/packs/items/Wagen__4_R_der__4E9WdEs1JaWrCYim.json new file mode 100644 index 00000000..7817fa21 --- /dev/null +++ b/packs/items/Wagen__4_R_der__4E9WdEs1JaWrCYim.json @@ -0,0 +1,31 @@ +{ + "_id": "4E9WdEs1JaWrCYim", + "name": "Wagen (4 Räder)", + "type": "loot", + "img": "icons/commodities/wood/wood-wheel-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 35, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342704, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!4E9WdEs1JaWrCYim" +} diff --git a/packs/items/Wasserschlauch__5_Liter__ygiod7LPfxwz0Jbb.json b/packs/items/Wasserschlauch__5_Liter__ygiod7LPfxwz0Jbb.json new file mode 100644 index 00000000..7abac5a8 --- /dev/null +++ b/packs/items/Wasserschlauch__5_Liter__ygiod7LPfxwz0Jbb.json @@ -0,0 +1,31 @@ +{ + "_id": "ygiod7LPfxwz0Jbb", + "name": "Wasserschlauch (5 Liter)", + "type": "loot", + "img": "icons/sundries/survival/waterskin-leather-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343581, + "modifiedTime": 1740227863029, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ygiod7LPfxwz0Jbb" +} diff --git a/packs/items/Wasserwandeltrank_s47J9CEdTELiRlPT.json b/packs/items/Wasserwandeltrank_s47J9CEdTELiRlPT.json new file mode 100644 index 00000000..e7b58c2d --- /dev/null +++ b/packs/items/Wasserwandeltrank_s47J9CEdTELiRlPT.json @@ -0,0 +1,31 @@ +{ + "_id": "s47J9CEdTELiRlPT", + "name": "Wasserwandeltrank", + "type": "loot", + "img": "icons/consumables/potions/potion-jar-corked-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser oft braune Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.mYZ3gFtRJASLL9pv]{Wasserwandeln} (Probenwert 20; Patzer ausgeschlossen).

", + "quantity": 1, + "price": 100, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343479, + "modifiedTime": 1740227863024, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!s47J9CEdTELiRlPT" +} diff --git a/packs/items/Wechselring_1vrVO2sqFqC4AA1k.json b/packs/items/Wechselring_1vrVO2sqFqC4AA1k.json new file mode 100644 index 00000000..eb0896ba --- /dev/null +++ b/packs/items/Wechselring_1vrVO2sqFqC4AA1k.json @@ -0,0 +1,84 @@ +{ + "_id": "1vrVO2sqFqC4AA1k", + "name": "Wechselring", + "type": "equipment", + "img": "icons/equipment/finger/ring-cabochon-white-blue.webp", + "effects": [ + { + "_id": "uaLYD6951CS9od5d", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "5", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Wechsler", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Wechsler +V", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!1vrVO2sqFqC4AA1k.uaLYD6951CS9od5d" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mittels Wechsler +V verleiht dieser Ring +10 auf Proben, um die eigenen Zauber zu wechseln.

", + "quantity": 1, + "price": 1502, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342664, + "modifiedTime": 1740227862963, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1vrVO2sqFqC4AA1k" +} diff --git a/packs/items/Wehrpanzer_83CJm0YUiYxIpcQx.json b/packs/items/Wehrpanzer_83CJm0YUiYxIpcQx.json new file mode 100644 index 00000000..023cb1bf --- /dev/null +++ b/packs/items/Wehrpanzer_83CJm0YUiYxIpcQx.json @@ -0,0 +1,130 @@ +{ + "_id": "83CJm0YUiYxIpcQx", + "name": "Wehrpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-cuirass-steel-grey.webp", + "effects": [ + { + "_id": "wz2krJzwVba18XvV", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!83CJm0YUiYxIpcQx.wz2krJzwVba18XvV" + }, + { + "_id": "TuRxuZf6QZL2OvRk", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "2", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Abwehr +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!83CJm0YUiYxIpcQx.TuRxuZf6QZL2OvRk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese massive, mit Metallverzierungen verstärkte Plattenrüstung +3 verfügt sogar über einen Halspanzer und gewährt ihrem Träger zusätzlich +2 auf Abwehr.

", + "quantity": 1, + "price": 7300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342756, + "modifiedTime": 1740227862968, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!83CJm0YUiYxIpcQx" +} diff --git a/packs/items/Weihwasser__1_2_Liter__RoXGTPdisjn6AdYK.json b/packs/items/Weihwasser__1_2_Liter__RoXGTPdisjn6AdYK.json new file mode 100644 index 00000000..a2b180ff --- /dev/null +++ b/packs/items/Weihwasser__1_2_Liter__RoXGTPdisjn6AdYK.json @@ -0,0 +1,31 @@ +{ + "_id": "RoXGTPdisjn6AdYK", + "name": "Weihwasser (1/2 Liter)", + "type": "loot", + "img": "icons/consumables/potions/bottle-conical-corked-labeled-shell-cyan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Weihwasser verursacht gegen Dämonen und Untote nicht abwehrbaren Schaden. Jede Einheit Weihwasser hat einen anderen Angriffswert, der mit W20 ermittelt wird. Dieser Wert wird erst ausgewürfelt, wenn das Weihwasser den Dämonen bzw. Untoten trifft, es sei denn, es wird vorher in Bezug auf seinen Schadenswert von einem Zauberwirker mit GEI+AU, gefolgt von GEI+VE, erfolgreich analysiert.

\n

Eine Weihwassereinheit kann man auf eine Waffe/ein Geschoss auftragen (benötigt 1 Aktion) und dann einen normalen Angriff mit Schlagen bzw. Schießen würfeln. Ist dieser erfolgreich, wird bei Dämonen und Untoten neben dem normalen Schaden auch noch ein Angriff für das Weihwasser gewürfelt, der nicht abwehrbaren Schaden verursacht. Nach dem ersten Treffer ist die Einheit Weihwasser aufgebraucht.

\n

Alternativ kann man Weihwassereinheiten in zerbrechliche Phiolen (WB +0; 2 GM) füllen und diese im Nah- oder Fernkampf gegen Dämonen und Untote einsetzen, wobei die zerbrechlichen Gefäße zerspringen. In solchen Fällen verursacht nur das Weihwasser Schaden, nicht die Schießen-Probe.

\n

Weihwasser kann außerdem dazu benutzt werden, in schützenden Linien oder Kreisen (1 m pro Einheit) auf den Boden geschüttet zu werden, um für eine gewisse Zeit Dämonen bzw. Untote aufzuhalten, die das Weihwasser nicht passieren können.

", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342969, + "modifiedTime": 1740227862996, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RoXGTPdisjn6AdYK" +} diff --git a/packs/items/Werkzeugset_zQLTx3zmJfnrdmlN.json b/packs/items/Werkzeugset_zQLTx3zmJfnrdmlN.json new file mode 100644 index 00000000..cbf1e54a --- /dev/null +++ b/packs/items/Werkzeugset_zQLTx3zmJfnrdmlN.json @@ -0,0 +1,31 @@ +{ + "_id": "zQLTx3zmJfnrdmlN", + "name": "Werkzeugset", + "type": "loot", + "img": "icons/tools/hand/hammer-and-nail.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 5, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343597, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zQLTx3zmJfnrdmlN" +} diff --git a/packs/items/Wildh_terharnisch_yocl6DZ7hfOupqqz.json b/packs/items/Wildh_terharnisch_yocl6DZ7hfOupqqz.json new file mode 100644 index 00000000..a1142957 --- /dev/null +++ b/packs/items/Wildh_terharnisch_yocl6DZ7hfOupqqz.json @@ -0,0 +1,79 @@ +{ + "_id": "yocl6DZ7hfOupqqz", + "name": "Wildhüterharnisch", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-leather-brown.webp", + "effects": [ + { + "_id": "CUa4rA1A1cwWac46", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "origin": null, + "tint": "#ffffff", + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": null, + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!yocl6DZ7hfOupqqz.CUa4rA1A1cwWac46" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

In diese aus Fellen zusammengenähte Lederrüstung +1 wurde der Zauber @Compendium[ds4.spells.TVsayZ3WkUxyzKbL]{Tierbeherschung} eingebettet.

", + "quantity": 1, + "price": 4714, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343587, + "modifiedTime": 1740227863030, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yocl6DZ7hfOupqqz" +} diff --git a/packs/items/Wolfsmantel_D7MaTfapKAeO5TRs.json b/packs/items/Wolfsmantel_D7MaTfapKAeO5TRs.json new file mode 100644 index 00000000..7334fdd6 --- /dev/null +++ b/packs/items/Wolfsmantel_D7MaTfapKAeO5TRs.json @@ -0,0 +1,87 @@ +{ + "_id": "D7MaTfapKAeO5TRs", + "name": "Wolfsmantel", + "type": "armor", + "img": "icons/equipment/chest/shirt-simple-grey.webp", + "effects": [ + { + "_id": "2IDnDKbImHFAHAu6", + "changes": [ + { + "key": "system.checks.perception", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Bemerken +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!D7MaTfapKAeO5TRs.2IDnDKbImHFAHAu6" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese Lederrüstung aus Wolfspelz verleiht ihrem Träger +3 auf sämtliche Bemerken-Proben. Ein ausgenommener Wolfskopf bildet die Kapuze.

", + "quantity": 1, + "price": 1004, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342807, + "modifiedTime": 1740227862977, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!D7MaTfapKAeO5TRs" +} diff --git a/packs/items/Wurfmesser__1_hfxblADLXdGaRMAA.json b/packs/items/Wurfmesser__1_hfxblADLXdGaRMAA.json new file mode 100644 index 00000000..9ffba544 --- /dev/null +++ b/packs/items/Wurfmesser__1_hfxblADLXdGaRMAA.json @@ -0,0 +1,87 @@ +{ + "_id": "hfxblADLXdGaRMAA", + "name": "Wurfmesser +1", + "type": "weapon", + "img": "icons/weapons/thrown/dagger-ringed-steel.webp", + "effects": [ + { + "_id": "c2P4Qt8b6GonPFv7", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!hfxblADLXdGaRMAA.c2P4Qt8b6GonPFv7" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 752, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343237, + "modifiedTime": 1740227863016, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hfxblADLXdGaRMAA" +} diff --git a/packs/items/Wurfmesser__2_eIXRfSsAL5ECi1uq.json b/packs/items/Wurfmesser__2_eIXRfSsAL5ECi1uq.json new file mode 100644 index 00000000..3add72e1 --- /dev/null +++ b/packs/items/Wurfmesser__2_eIXRfSsAL5ECi1uq.json @@ -0,0 +1,87 @@ +{ + "_id": "eIXRfSsAL5ECi1uq", + "name": "Wurfmesser +2", + "type": "weapon", + "img": "icons/weapons/thrown/dagger-ringed-engraved-green.webp", + "effects": [ + { + "_id": "XPV4jbYeNcFVFvZr", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!eIXRfSsAL5ECi1uq.XPV4jbYeNcFVFvZr" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 1252, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343151, + "modifiedTime": 1740227863012, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eIXRfSsAL5ECi1uq" +} diff --git a/packs/items/Wurfmesser__3_VxyrCBfVdbRD5nj8.json b/packs/items/Wurfmesser__3_VxyrCBfVdbRD5nj8.json new file mode 100644 index 00000000..23cff801 --- /dev/null +++ b/packs/items/Wurfmesser__3_VxyrCBfVdbRD5nj8.json @@ -0,0 +1,87 @@ +{ + "_id": "VxyrCBfVdbRD5nj8", + "name": "Wurfmesser +3", + "type": "weapon", + "img": "icons/weapons/thrown/dagger-ringed-blue.webp", + "effects": [ + { + "_id": "hQfQjfXJhE4yDXQU", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!VxyrCBfVdbRD5nj8.hQfQjfXJhE4yDXQU" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 1752, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343052, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VxyrCBfVdbRD5nj8" +} diff --git a/packs/items/Wurfmesser_grAnIWqeXTAIGXmN.json b/packs/items/Wurfmesser_grAnIWqeXTAIGXmN.json new file mode 100644 index 00000000..78a05bb4 --- /dev/null +++ b/packs/items/Wurfmesser_grAnIWqeXTAIGXmN.json @@ -0,0 +1,35 @@ +{ + "_id": "grAnIWqeXTAIGXmN", + "name": "Wurfmesser", + "type": "weapon", + "img": "icons/weapons/thrown/dagger-simple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 2, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343217, + "modifiedTime": 1740227863015, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!grAnIWqeXTAIGXmN" +} diff --git a/packs/items/Zauberk_cher_0C9YNorSbYM5eyBj.json b/packs/items/Zauberk_cher_0C9YNorSbYM5eyBj.json new file mode 100644 index 00000000..d3800db9 --- /dev/null +++ b/packs/items/Zauberk_cher_0C9YNorSbYM5eyBj.json @@ -0,0 +1,32 @@ +{ + "_id": "0C9YNorSbYM5eyBj", + "name": "Zauberköcher", + "type": "equipment", + "img": "icons/containers/ammunition/arrows-quiver-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Jeder Pfeil, der aus diesem Köcher gezogen wird, hat für die Dauer einer Kampfrunde einen magischen Waffenbonus von +1.

", + "quantity": 1, + "price": 750.1, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342627, + "modifiedTime": 1740227862959, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0C9YNorSbYM5eyBj" +} diff --git a/packs/items/Zaubertrank_LoY2CnEEWfxbvjEt.json b/packs/items/Zaubertrank_LoY2CnEEWfxbvjEt.json new file mode 100644 index 00000000..bc2c013e --- /dev/null +++ b/packs/items/Zaubertrank_LoY2CnEEWfxbvjEt.json @@ -0,0 +1,31 @@ +{ + "_id": "LoY2CnEEWfxbvjEt", + "name": "Zaubertrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-pear-corked-pink.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht die Werte von Zaubern und Zielzauber für die Dauer eines Kampfes um +1.

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342903, + "modifiedTime": 1740227862986, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!LoY2CnEEWfxbvjEt" +} diff --git a/packs/items/Zauberwechseltrank_uqIQjhDGgbEuHYmd.json b/packs/items/Zauberwechseltrank_uqIQjhDGgbEuHYmd.json new file mode 100644 index 00000000..c2b6e1a8 --- /dev/null +++ b/packs/items/Zauberwechseltrank_uqIQjhDGgbEuHYmd.json @@ -0,0 +1,31 @@ +{ + "_id": "uqIQjhDGgbEuHYmd", + "name": "Zauberwechseltrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese meist blauen Tränke gewähren für die Dauer eines Kampfes +10 auf Zauber wechseln.

", + "quantity": 1, + "price": 10, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343549, + "modifiedTime": 1740227863028, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uqIQjhDGgbEuHYmd" +} diff --git a/packs/items/Zelt__2_Mann__Van6Sze8TZl8Y88o.json b/packs/items/Zelt__2_Mann__Van6Sze8TZl8Y88o.json new file mode 100644 index 00000000..25dc2e86 --- /dev/null +++ b/packs/items/Zelt__2_Mann__Van6Sze8TZl8Y88o.json @@ -0,0 +1,31 @@ +{ + "_id": "Van6Sze8TZl8Y88o", + "name": "Zelt (2 Mann)", + "type": "loot", + "img": "icons/environment/settlement/tent.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343051, + "modifiedTime": 1740227863002, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Van6Sze8TZl8Y88o" +} diff --git a/packs/items/Zieltrank_zqlc3bq1ZfneLeYx.json b/packs/items/Zieltrank_zqlc3bq1ZfneLeYx.json new file mode 100644 index 00000000..8bf8e8a1 --- /dev/null +++ b/packs/items/Zieltrank_zqlc3bq1ZfneLeYx.json @@ -0,0 +1,31 @@ +{ + "_id": "zqlc3bq1ZfneLeYx", + "name": "Zieltrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-capped-yellow-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht die Werte von Schießen und Zielzauber für die Dauer eines Kampfes um +1.

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343618, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zqlc3bq1ZfneLeYx" +} diff --git a/packs/items/Zornhammer_pQqbXD5ELmjcu4Dd.json b/packs/items/Zornhammer_pQqbXD5ELmjcu4Dd.json new file mode 100644 index 00000000..41e9affe --- /dev/null +++ b/packs/items/Zornhammer_pQqbXD5ELmjcu4Dd.json @@ -0,0 +1,138 @@ +{ + "_id": "pQqbXD5ELmjcu4Dd", + "name": "Zornhammer", + "type": "weapon", + "img": "icons/weapons/hammers/hammer-double-steel-embossed.webp", + "effects": [ + { + "_id": "dcGiLPK2AIDA7NHH", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-4", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -4", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!pQqbXD5ELmjcu4Dd.dcGiLPK2AIDA7NHH" + }, + { + "_id": "RWRk7pwQf2vs1Aqv", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!pQqbXD5ELmjcu4Dd.RWRk7pwQf2vs1Aqv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein schwerer, schlichter Streithammer +3, der einst einem Zwergenhelden gehörte.

\n

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 3256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343452, + "modifiedTime": 1740227863022, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pQqbXD5ELmjcu4Dd" +} diff --git a/packs/items/Zwergenaxt_0f8ivq3Mveb3s3Fs.json b/packs/items/Zwergenaxt_0f8ivq3Mveb3s3Fs.json new file mode 100644 index 00000000..41005045 --- /dev/null +++ b/packs/items/Zwergenaxt_0f8ivq3Mveb3s3Fs.json @@ -0,0 +1,35 @@ +{ + "_id": "0f8ivq3Mveb3s3Fs", + "name": "Zwergenaxt", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-engraved.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -1

", + "quantity": 1, + "price": 60, + "availability": "dwarves", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342638, + "modifiedTime": 1740227862961, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0f8ivq3Mveb3s3Fs" +} diff --git a/packs/items/Zwergenaxt__1_JZkzRagRS8TKZplw.json b/packs/items/Zwergenaxt__1_JZkzRagRS8TKZplw.json new file mode 100644 index 00000000..4fa73634 --- /dev/null +++ b/packs/items/Zwergenaxt__1_JZkzRagRS8TKZplw.json @@ -0,0 +1,35 @@ +{ + "_id": "JZkzRagRS8TKZplw", + "name": "Zwergenaxt +1", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-engraved-runes.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -1

", + "quantity": 1, + "price": 2310, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342881, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JZkzRagRS8TKZplw" +} diff --git a/packs/items/Zwergenaxt__2_NHV9ho8tGutv0mrS.json b/packs/items/Zwergenaxt__2_NHV9ho8tGutv0mrS.json new file mode 100644 index 00000000..a2a19f0a --- /dev/null +++ b/packs/items/Zwergenaxt__2_NHV9ho8tGutv0mrS.json @@ -0,0 +1,87 @@ +{ + "_id": "NHV9ho8tGutv0mrS", + "name": "Zwergenaxt +2", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-engraved-black.webp", + "effects": [ + { + "_id": "WsibIQWwcjabH8QS", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!NHV9ho8tGutv0mrS.WsibIQWwcjabH8QS" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -1

", + "quantity": 1, + "price": 2810, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342910, + "modifiedTime": 1740227862987, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NHV9ho8tGutv0mrS" +} diff --git a/packs/items/Zwergenaxt__3_Tu0Mf3Qib68wxpRs.json b/packs/items/Zwergenaxt__3_Tu0Mf3Qib68wxpRs.json new file mode 100644 index 00000000..022024a6 --- /dev/null +++ b/packs/items/Zwergenaxt__3_Tu0Mf3Qib68wxpRs.json @@ -0,0 +1,138 @@ +{ + "_id": "Tu0Mf3Qib68wxpRs", + "name": "Zwergenaxt +3", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-engraved-blue.webp", + "effects": [ + { + "_id": "Ytio5tOcCUO91MQ0", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Tu0Mf3Qib68wxpRs.Ytio5tOcCUO91MQ0" + }, + { + "_id": "ulhp9EsUM5Tf0iCd", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Tu0Mf3Qib68wxpRs.ulhp9EsUM5Tf0iCd" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -1

", + "quantity": 1, + "price": 3310, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343020, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Tu0Mf3Qib68wxpRs" +} diff --git a/packs/languages-and-scripts.json b/packs/languages-and-scripts.json deleted file mode 100644 index ba5975cb..00000000 --- a/packs/languages-and-scripts.json +++ /dev/null @@ -1,156 +0,0 @@ -[ - { - "name": "Gormanische Schrift", - "permission": { - "default": 0 - }, - "type": "alphabet", - "data": { - "description": "" - }, - "flags": {}, - "img": "icons/svg/book.svg", - "effects": [], - "_id": "4KbbQeTvvJC7iNrI" - }, - { - "_id": "GQNpFENXcjJGeYr2", - "name": "Freiwort", - "permission": { - "default": 0 - }, - "type": "language", - "data": { - "description": "

Freiwort ist die Gemeinsprache der Freien Lande.

" - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", - "effects": [] - }, - { - "name": "Zasarische Schrift", - "permission": { - "default": 0 - }, - "type": "alphabet", - "data": { - "description": "" - }, - "flags": {}, - "img": "icons/svg/book.svg", - "effects": [], - "_id": "O1U9jd0yJoydHwT8" - }, - { - "name": "Zwergisch", - "permission": { - "default": 0 - }, - "type": "language", - "data": { - "description": "" - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", - "effects": [], - "_id": "PzkVTViII6ungWyp" - }, - { - "name": "Ornamentschrift", - "permission": { - "default": 0 - }, - "type": "alphabet", - "data": { - "description": "" - }, - "flags": {}, - "img": "icons/svg/book.svg", - "effects": [], - "_id": "josgKzD9UmDOvTup" - }, - { - "name": "Kaitanische Schrift", - "permission": { - "default": 0 - }, - "type": "alphabet", - "data": { - "description": "" - }, - "flags": {}, - "img": "icons/svg/book.svg", - "effects": [], - "_id": "k8FSxBda9CoLOJqZ" - }, - { - "name": "Keilschrift", - "permission": { - "default": 0 - }, - "type": "alphabet", - "data": { - "description": "" - }, - "flags": {}, - "img": "icons/svg/book.svg", - "effects": [], - "_id": "n2Nbg0ttFzcMxp7T" - }, - { - "name": "Kaitanisch", - "permission": { - "default": 0 - }, - "type": "language", - "data": { - "description": "" - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", - "effects": [], - "_id": "n6KU1XIzbPWups0D" - }, - { - "name": "Zasarisch", - "permission": { - "default": 0 - }, - "type": "language", - "data": { - "description": "" - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", - "effects": [], - "_id": "usEWD48iYnMHO3Ty" - }, - { - "name": "Elfisch", - "permission": { - "default": 0 - }, - "type": "language", - "data": { - "description": "" - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", - "effects": [], - "_id": "xpvHuSywc8lJa2UN" - }, - { - "name": "Ahnenrunen", - "permission": { - "default": 0 - }, - "type": "alphabet", - "data": { - "description": "" - }, - "flags": {}, - "img": "icons/svg/book.svg", - "effects": [], - "_id": "ylqXcZHRbIBeV20Z" - } -] diff --git a/packs/languages-and-scripts.json.license b/packs/languages-and-scripts.json.license deleted file mode 100644 index dc219f48..00000000 --- a/packs/languages-and-scripts.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: CC-BY-NC-SA-4.0 diff --git a/packs/languages-and-scripts/Ahnenrunen_ylqXcZHRbIBeV20Z.json b/packs/languages-and-scripts/Ahnenrunen_ylqXcZHRbIBeV20Z.json new file mode 100644 index 00000000..9a54125e --- /dev/null +++ b/packs/languages-and-scripts/Ahnenrunen_ylqXcZHRbIBeV20Z.json @@ -0,0 +1,27 @@ +{ + "_id": "ylqXcZHRbIBeV20Z", + "name": "Ahnenrunen", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342375, + "modifiedTime": 1740227862520, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ylqXcZHRbIBeV20Z" +} diff --git a/packs/languages-and-scripts/Elfisch_xpvHuSywc8lJa2UN.json b/packs/languages-and-scripts/Elfisch_xpvHuSywc8lJa2UN.json new file mode 100644 index 00000000..15ed6282 --- /dev/null +++ b/packs/languages-and-scripts/Elfisch_xpvHuSywc8lJa2UN.json @@ -0,0 +1,27 @@ +{ + "_id": "xpvHuSywc8lJa2UN", + "name": "Elfisch", + "type": "language", + "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342367, + "modifiedTime": 1740227862519, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xpvHuSywc8lJa2UN" +} diff --git a/packs/languages-and-scripts/Freiwort_GQNpFENXcjJGeYr2.json b/packs/languages-and-scripts/Freiwort_GQNpFENXcjJGeYr2.json new file mode 100644 index 00000000..fac4866d --- /dev/null +++ b/packs/languages-and-scripts/Freiwort_GQNpFENXcjJGeYr2.json @@ -0,0 +1,27 @@ +{ + "_id": "GQNpFENXcjJGeYr2", + "name": "Freiwort", + "type": "language", + "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Freiwort ist die Gemeinsprache der Freien Lande.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342358, + "modifiedTime": 1740227862518, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GQNpFENXcjJGeYr2" +} diff --git a/packs/languages-and-scripts/Gormanische_Schrift_4KbbQeTvvJC7iNrI.json b/packs/languages-and-scripts/Gormanische_Schrift_4KbbQeTvvJC7iNrI.json new file mode 100644 index 00000000..73a9e9dd --- /dev/null +++ b/packs/languages-and-scripts/Gormanische_Schrift_4KbbQeTvvJC7iNrI.json @@ -0,0 +1,27 @@ +{ + "_id": "4KbbQeTvvJC7iNrI", + "name": "Gormanische Schrift", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342357, + "modifiedTime": 1740227862517, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!4KbbQeTvvJC7iNrI" +} diff --git a/packs/languages-and-scripts/Kaitanisch_n6KU1XIzbPWups0D.json b/packs/languages-and-scripts/Kaitanisch_n6KU1XIzbPWups0D.json new file mode 100644 index 00000000..62f21cf1 --- /dev/null +++ b/packs/languages-and-scripts/Kaitanisch_n6KU1XIzbPWups0D.json @@ -0,0 +1,27 @@ +{ + "_id": "n6KU1XIzbPWups0D", + "name": "Kaitanisch", + "type": "language", + "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342365, + "modifiedTime": 1740227862519, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!n6KU1XIzbPWups0D" +} diff --git a/packs/languages-and-scripts/Kaitanische_Schrift_k8FSxBda9CoLOJqZ.json b/packs/languages-and-scripts/Kaitanische_Schrift_k8FSxBda9CoLOJqZ.json new file mode 100644 index 00000000..70f01531 --- /dev/null +++ b/packs/languages-and-scripts/Kaitanische_Schrift_k8FSxBda9CoLOJqZ.json @@ -0,0 +1,27 @@ +{ + "_id": "k8FSxBda9CoLOJqZ", + "name": "Kaitanische Schrift", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342362, + "modifiedTime": 1740227862519, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!k8FSxBda9CoLOJqZ" +} diff --git a/packs/languages-and-scripts/Keilschrift_n2Nbg0ttFzcMxp7T.json b/packs/languages-and-scripts/Keilschrift_n2Nbg0ttFzcMxp7T.json new file mode 100644 index 00000000..7c740370 --- /dev/null +++ b/packs/languages-and-scripts/Keilschrift_n2Nbg0ttFzcMxp7T.json @@ -0,0 +1,27 @@ +{ + "_id": "n2Nbg0ttFzcMxp7T", + "name": "Keilschrift", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342364, + "modifiedTime": 1740227862519, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!n2Nbg0ttFzcMxp7T" +} diff --git a/packs/languages-and-scripts/Ornamentschrift_josgKzD9UmDOvTup.json b/packs/languages-and-scripts/Ornamentschrift_josgKzD9UmDOvTup.json new file mode 100644 index 00000000..0d71fd5d --- /dev/null +++ b/packs/languages-and-scripts/Ornamentschrift_josgKzD9UmDOvTup.json @@ -0,0 +1,27 @@ +{ + "_id": "josgKzD9UmDOvTup", + "name": "Ornamentschrift", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342361, + "modifiedTime": 1740227862518, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!josgKzD9UmDOvTup" +} diff --git a/packs/languages-and-scripts/Zasarisch_usEWD48iYnMHO3Ty.json b/packs/languages-and-scripts/Zasarisch_usEWD48iYnMHO3Ty.json new file mode 100644 index 00000000..7b143fa7 --- /dev/null +++ b/packs/languages-and-scripts/Zasarisch_usEWD48iYnMHO3Ty.json @@ -0,0 +1,27 @@ +{ + "_id": "usEWD48iYnMHO3Ty", + "name": "Zasarisch", + "type": "language", + "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342366, + "modifiedTime": 1740227862519, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!usEWD48iYnMHO3Ty" +} diff --git a/packs/languages-and-scripts/Zasarische_Schrift_O1U9jd0yJoydHwT8.json b/packs/languages-and-scripts/Zasarische_Schrift_O1U9jd0yJoydHwT8.json new file mode 100644 index 00000000..85208c54 --- /dev/null +++ b/packs/languages-and-scripts/Zasarische_Schrift_O1U9jd0yJoydHwT8.json @@ -0,0 +1,27 @@ +{ + "_id": "O1U9jd0yJoydHwT8", + "name": "Zasarische Schrift", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342359, + "modifiedTime": 1740227862518, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!O1U9jd0yJoydHwT8" +} diff --git a/packs/languages-and-scripts/Zwergisch_PzkVTViII6ungWyp.json b/packs/languages-and-scripts/Zwergisch_PzkVTViII6ungWyp.json new file mode 100644 index 00000000..6bc41058 --- /dev/null +++ b/packs/languages-and-scripts/Zwergisch_PzkVTViII6ungWyp.json @@ -0,0 +1,27 @@ +{ + "_id": "PzkVTViII6ungWyp", + "name": "Zwergisch", + "type": "language", + "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342360, + "modifiedTime": 1740227862518, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PzkVTViII6ungWyp" +} diff --git a/packs/racial-abilities.json b/packs/racial-abilities.json deleted file mode 100644 index 663f6b75..00000000 --- a/packs/racial-abilities.json +++ /dev/null @@ -1,723 +0,0 @@ -[ - { - "_id": "3RX84f54FUuk20jo", - "name": "Klein", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Lebenskraft halbiert, aber auch schwerer zu treffen (DS4 S. 44). Waffen sind zu groß, ein Kurzschwert wird zur Zweihandwaffe.

" - }, - "effects": [ - { - "_id": "krC2HXyXBfo2AZsy", - "changes": [ - { - "key": "data.combatValues.hitPoints.total", - "mode": 1, - "value": "0.5" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Lebenskraft / 2", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "name": "Tollpatschig", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Tollpatschige Völker sind sehr ungeschickt und grobmotorisch - sie erhalten auf alle Proben mit Agilität einen Malus von -4.

" - }, - "effects": [ - { - "_id": "RSs2hV25q3KJkFmg", - "changes": [ - { - "key": "data.combatValues.rangedAttack.total", - "mode": 2, - "value": "-4" - }, - { - "key": "data.checks.climb", - "mode": 2, - "value": "-4" - }, - { - "key": "data.checks.hide", - "mode": 2, - "value": "-4" - }, - { - "key": "data.checks.jump", - "mode": 2, - "value": "-4" - }, - { - "key": "data.checks.pickPocket", - "mode": 2, - "value": "-4" - }, - { - "key": "data.checks.ride", - "mode": 2, - "value": "-4" - }, - { - "key": "data.checks.sneak", - "mode": 2, - "value": "-4" - }, - { - "key": "data.checks.swim", - "mode": 2, - "value": "-4" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Proben mit Agilität -1", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "43nqAxNU6hpBtMiY" - }, - { - "name": "Untalentiert", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Der erste Rang eines Talentes kostet dieses Volk jeweils einen Talentpunkt mehr.

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "5hd2Tk6MzudSxM2M" - }, - { - "name": "Zäh", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes erhalten einen Bonus von +1 auf Abwehr.

" - }, - "effects": [ - { - "_id": "tP2fgQrHbvuZT4eM", - "changes": [ - { - "key": "data.combatValues.defense.total", - "mode": 2, - "value": "1" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Abwehr +1", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "8RPj5bUguaxQ6RLK" - }, - { - "name": "Zäher als sie aussehen", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder eines kleinen Volkes können den LK-Malus auf Grund ihrer Größe mit dieser Volksfähigkeit ignorieren.

" - }, - "effects": [ - { - "_id": "rTPqUWomhHvmzLbv", - "changes": [ - { - "key": "data.combatValues.hitPoints.total", - "mode": 1, - "value": "2" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Lebenskraft x 2", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "Du32O8lxUjCTchh4" - }, - { - "name": "Magisch unbegabt", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes können überhaupt nicht zaubern.

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "FnyDr2OhywiARDPl" - }, - { - "name": "Arrogant", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes wirken arrogant und nehmen nur ungern Hilfe von anderen an, so auch Heilmagie nur im aller größten Notfall.

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "Fo1LiBcGi9BoHJ9v" - }, - { - "name": "Goldgier", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Immer wenn ein Mitglied dieses Volkes etwas Wertvolles bemerkt, muss es GEI+VE+4 schaffen, oder es will es unbedingt besitzen.

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "KmcfnDcxyFRRelRh" - }, - { - "name": "Unsterblich", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes altern, nachdem sie erwachsen sind, nicht wie Normalsterbliche. Das Alter rafft sie nicht dahin, sie sterben nur durch Gewalt oder aus Lebensüberdruß.

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "QIjVVVMR4PcO2NZc" - }, - { - "name": "Langlebig", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes altern nur noch langsam, sobald sie erwachsen sind.

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "Uui9ofMtBTX4v0Yj" - }, - { - "name": "Zielsicher", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes erhalten einen Bonus von +1 auf Fernkampf und Zielzauber.

" - }, - "effects": [ - { - "_id": "YxpZ3gaKzgnl1T7S", - "changes": [ - { - "key": "data.combatValues.rangedAttack.total", - "mode": 2, - "value": "1" - }, - { - "key": "data.combatValues.targetedSpellcasting.total", - "mode": 2, - "value": "1" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Schießen, Zielzaubern +1", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "V5S2BMm7vWJiD2hD" - }, - { - "name": "Dunkelsicht", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes erhalten die Volksfähigkeit Dunkelsicht (DS4 S. 83).

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "VTBlOswerHKLvjqI" - }, - { - "name": "Verabscheuungswürdig", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes werden von anderen Völkern verabscheut und gemieden. Sie verkaufen Waren nur zögerlich oder gegen extremen Aufpreis an dieses Volk. Ausrüstung und andere Dienstleistungen kosten das Doppelte.

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "YV9KiRebanh28Jk2" - }, - { - "name": "Fragil", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Dieses zartbesaitete Volk erhält -1 auf Abwehr.

" - }, - "effects": [ - { - "_id": "Y9VbkphCkoVaRMjL", - "changes": [ - { - "key": "", - "mode": 2, - "value": "-1" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Abwehr -1", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "b4vuLR8nbyFtCUT6" - }, - { - "name": "Geschwind", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Das Volk erhält +2 auf Initiative.

" - }, - "effects": [ - { - "_id": "KFyXovHEQ71WxiR6", - "changes": [ - { - "key": "data.combatValues.initiative.total", - "mode": 2, - "value": "2" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Initiative +2", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "cgWu5Mfd37oJ1Jw3" - }, - { - "name": "Groß", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Lebenskraft x 2, aber auch leichter zu treffen (DS4 S. 44).

" - }, - "effects": [ - { - "_id": "D8cY12yVEAaNX52B", - "changes": [ - { - "key": "data.combatValues.hitPoints.total", - "mode": 1, - "value": "2" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Lebenskraft x 2", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "ewWlk1Ud6dFVZD2u" - }, - { - "name": "Talentiert", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes erhalten einen zusätzlichen Talentpunkt bei der Charaktererschaffung.

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "gIacfUxo5FToVbux" - }, - { - "name": "Magieresistent", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes sind weniger betroffen durch Zauber und Magie. Sämtliche magischen Auswirkungen (Schaden, aber auch Heilung, Trankeffekte oder die Zauberdauer u.ä.) werden bei ihnen halbiert, außer erlittener Elementarschaden.

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "hPT9Q5DG9YFK1NTB" - }, - { - "name": "Nachtsicht", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes erhalten die Volksfähigkeit Nachtsicht (DS4 S. 83).

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "jv1fgwHuCG6I8vMa" - }, - { - "name": "Einäugig", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Das Volk erhält -1 auf Schießen und Zielzauber.

" - }, - "effects": [ - { - "_id": "JOqcrV2Ns68t0SaO", - "changes": [ - { - "key": "data.combatValues.rangedAttack.total", - "mode": 2, - "value": "-1" - }, - { - "key": "data.combatValues.targetedSpellcasting.total", - "mode": 2, - "value": "-1" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Schießen, Zielzaubern -1", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "nwABE3AeAUHbKd7U" - }, - { - "name": "Schnell", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Dieses flinke Volk erhält +1 auf Laufen.

" - }, - "effects": [ - { - "_id": "jXtkQik1kgzTNeDC", - "changes": [ - { - "key": "data.combatValues.movement.total", - "mode": 2, - "value": "1" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen +1", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "qC9HBqm6nPRFg62e" - }, - { - "name": "Magisch begabt", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes sind von der Magie berührt - es fällt ihnen unheimlich leicht, Zauber zu verstehen und zu wirken. Sie erhalten +1 auf Zaubern.

" - }, - "effects": [ - { - "_id": "QxBn4JAl9dmgj5xH", - "changes": [ - { - "key": "data.combatValues.spellcasting.total", - "mode": 2, - "value": "1" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Zaubern +1", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "sFgC2eZxZIvii9OP" - }, - { - "_id": "sXqjA4m3AsWmMo3a", - "name": "Allergie gegen Metall", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes können kein Metall nutzen (auch keine Waffen und Rüstungen aus Metall) und erhalten auf Abwehr -1 bei Schaden durch Metallwaffen.

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "name": "Leichtfüßig", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Das Volk erhält bei Schleichen und ähnlichen Proben einen Bonus von +1.

" - }, - "effects": [ - { - "_id": "S4I2jS5RdAoAHLAL", - "changes": [ - { - "key": "data.checks.sneak", - "mode": 2, - "value": "2" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Schleichen +1", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "x35PNIYq3FCKIYCA" - }, - { - "name": "Langsam", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Vertreter dieses Volkes sind langsam und erhalten -1 auf Laufen.

" - }, - "effects": [ - { - "_id": "sSCcqM8OaPaP6kW2", - "changes": [ - { - "key": "data.combatValues.movement.total", - "mode": 2, - "value": "-1" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "Laufen -1", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "xWClnNIkOvDLasgl" - }, - { - "name": "Ungepflegt", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "data": { - "description": "

Mitglieder dieses Volkes erhalten auf alle Proben sozialer Interaktion mit Vertretern anderer Völker einen Malus von -2.

" - }, - "effects": [], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {}, - "_id": "yUyyyPRE3LvUUIGI" - } -] diff --git a/packs/racial-abilities.json.license b/packs/racial-abilities.json.license deleted file mode 100644 index dc219f48..00000000 --- a/packs/racial-abilities.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: CC-BY-NC-SA-4.0 diff --git a/packs/racial-abilities/Allergie_gegen_Metall_sXqjA4m3AsWmMo3a.json b/packs/racial-abilities/Allergie_gegen_Metall_sXqjA4m3AsWmMo3a.json new file mode 100644 index 00000000..07f43f43 --- /dev/null +++ b/packs/racial-abilities/Allergie_gegen_Metall_sXqjA4m3AsWmMo3a.json @@ -0,0 +1,27 @@ +{ + "_id": "sXqjA4m3AsWmMo3a", + "name": "Allergie gegen Metall", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes können kein Metall nutzen (auch keine Waffen und Rüstungen aus Metall) und erhalten auf Abwehr -1 bei Schaden durch Metallwaffen.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349157, + "modifiedTime": 1740227862619, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sXqjA4m3AsWmMo3a" +} diff --git a/packs/racial-abilities/Arrogant_Fo1LiBcGi9BoHJ9v.json b/packs/racial-abilities/Arrogant_Fo1LiBcGi9BoHJ9v.json new file mode 100644 index 00000000..4971f29c --- /dev/null +++ b/packs/racial-abilities/Arrogant_Fo1LiBcGi9BoHJ9v.json @@ -0,0 +1,27 @@ +{ + "_id": "Fo1LiBcGi9BoHJ9v", + "name": "Arrogant", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes wirken arrogant und nehmen nur ungern Hilfe von anderen an, so auch Heilmagie nur im aller größten Notfall.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349083, + "modifiedTime": 1740227862614, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Fo1LiBcGi9BoHJ9v" +} diff --git a/packs/racial-abilities/Dunkelsicht_VTBlOswerHKLvjqI.json b/packs/racial-abilities/Dunkelsicht_VTBlOswerHKLvjqI.json new file mode 100644 index 00000000..73c07b8a --- /dev/null +++ b/packs/racial-abilities/Dunkelsicht_VTBlOswerHKLvjqI.json @@ -0,0 +1,27 @@ +{ + "_id": "VTBlOswerHKLvjqI", + "name": "Dunkelsicht", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten die Volksfähigkeit Dunkelsicht (DS4 S. 83).

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349127, + "modifiedTime": 1740227862615, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VTBlOswerHKLvjqI" +} diff --git a/packs/racial-abilities/Ein_ugig_nwABE3AeAUHbKd7U.json b/packs/racial-abilities/Ein_ugig_nwABE3AeAUHbKd7U.json new file mode 100644 index 00000000..8c1e47d2 --- /dev/null +++ b/packs/racial-abilities/Ein_ugig_nwABE3AeAUHbKd7U.json @@ -0,0 +1,77 @@ +{ + "_id": "nwABE3AeAUHbKd7U", + "name": "Einäugig", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "JOqcrV2Ns68t0SaO", + "changes": [ + { + "key": "system.combatValues.rangedAttack.total", + "mode": 2, + "value": "-1", + "priority": null + }, + { + "key": "system.combatValues.targetedSpellcasting.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Schießen, Zielzaubern -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!nwABE3AeAUHbKd7U.JOqcrV2Ns68t0SaO" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Volk erhält -1 auf Schießen und Zielzauber.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349152, + "modifiedTime": 1740227862617, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nwABE3AeAUHbKd7U" +} diff --git a/packs/racial-abilities/Fragil_b4vuLR8nbyFtCUT6.json b/packs/racial-abilities/Fragil_b4vuLR8nbyFtCUT6.json new file mode 100644 index 00000000..1c4083a3 --- /dev/null +++ b/packs/racial-abilities/Fragil_b4vuLR8nbyFtCUT6.json @@ -0,0 +1,71 @@ +{ + "_id": "b4vuLR8nbyFtCUT6", + "name": "Fragil", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "Y9VbkphCkoVaRMjL", + "changes": [ + { + "key": "", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Abwehr -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!b4vuLR8nbyFtCUT6.Y9VbkphCkoVaRMjL" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses zartbesaitete Volk erhält -1 auf Abwehr.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349138, + "modifiedTime": 1740227862616, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!b4vuLR8nbyFtCUT6" +} diff --git a/packs/racial-abilities/Geschwind_cgWu5Mfd37oJ1Jw3.json b/packs/racial-abilities/Geschwind_cgWu5Mfd37oJ1Jw3.json new file mode 100644 index 00000000..e3431932 --- /dev/null +++ b/packs/racial-abilities/Geschwind_cgWu5Mfd37oJ1Jw3.json @@ -0,0 +1,71 @@ +{ + "_id": "cgWu5Mfd37oJ1Jw3", + "name": "Geschwind", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "KFyXovHEQ71WxiR6", + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!cgWu5Mfd37oJ1Jw3.KFyXovHEQ71WxiR6" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Volk erhält +2 auf Initiative.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349140, + "modifiedTime": 1740227862616, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cgWu5Mfd37oJ1Jw3" +} diff --git a/packs/racial-abilities/Goldgier_KmcfnDcxyFRRelRh.json b/packs/racial-abilities/Goldgier_KmcfnDcxyFRRelRh.json new file mode 100644 index 00000000..0142e17c --- /dev/null +++ b/packs/racial-abilities/Goldgier_KmcfnDcxyFRRelRh.json @@ -0,0 +1,27 @@ +{ + "_id": "KmcfnDcxyFRRelRh", + "name": "Goldgier", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Immer wenn ein Mitglied dieses Volkes etwas Wertvolles bemerkt, muss es GEI+VE+4 schaffen, oder es will es unbedingt besitzen.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349091, + "modifiedTime": 1740227862614, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KmcfnDcxyFRRelRh" +} diff --git a/packs/racial-abilities/Gro__ewWlk1Ud6dFVZD2u.json b/packs/racial-abilities/Gro__ewWlk1Ud6dFVZD2u.json new file mode 100644 index 00000000..f6b3038b --- /dev/null +++ b/packs/racial-abilities/Gro__ewWlk1Ud6dFVZD2u.json @@ -0,0 +1,71 @@ +{ + "_id": "ewWlk1Ud6dFVZD2u", + "name": "Groß", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "D8cY12yVEAaNX52B", + "changes": [ + { + "key": "system.combatValues.hitPoints.total", + "mode": 1, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Lebenskraft x 2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ewWlk1Ud6dFVZD2u.D8cY12yVEAaNX52B" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Lebenskraft x 2, aber auch leichter zu treffen (DS4 S. 44).

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349143, + "modifiedTime": 1740227862616, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ewWlk1Ud6dFVZD2u" +} diff --git a/packs/racial-abilities/Klein_3RX84f54FUuk20jo.json b/packs/racial-abilities/Klein_3RX84f54FUuk20jo.json new file mode 100644 index 00000000..bde79f6f --- /dev/null +++ b/packs/racial-abilities/Klein_3RX84f54FUuk20jo.json @@ -0,0 +1,71 @@ +{ + "_id": "3RX84f54FUuk20jo", + "name": "Klein", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "krC2HXyXBfo2AZsy", + "changes": [ + { + "key": "system.combatValues.hitPoints.total", + "mode": 1, + "value": "0.5", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Lebenskraft / 2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!3RX84f54FUuk20jo.krC2HXyXBfo2AZsy" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Lebenskraft halbiert, aber auch schwerer zu treffen (DS4 S. 44). Waffen sind zu groß, ein Kurzschwert wird zur Zweihandwaffe.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349016, + "modifiedTime": 1740227862612, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3RX84f54FUuk20jo" +} diff --git a/packs/racial-abilities/Langlebig_Uui9ofMtBTX4v0Yj.json b/packs/racial-abilities/Langlebig_Uui9ofMtBTX4v0Yj.json new file mode 100644 index 00000000..8eb9c737 --- /dev/null +++ b/packs/racial-abilities/Langlebig_Uui9ofMtBTX4v0Yj.json @@ -0,0 +1,27 @@ +{ + "_id": "Uui9ofMtBTX4v0Yj", + "name": "Langlebig", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes altern nur noch langsam, sobald sie erwachsen sind.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349105, + "modifiedTime": 1740227862615, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Uui9ofMtBTX4v0Yj" +} diff --git a/packs/racial-abilities/Langsam_xWClnNIkOvDLasgl.json b/packs/racial-abilities/Langsam_xWClnNIkOvDLasgl.json new file mode 100644 index 00000000..07fa61b3 --- /dev/null +++ b/packs/racial-abilities/Langsam_xWClnNIkOvDLasgl.json @@ -0,0 +1,71 @@ +{ + "_id": "xWClnNIkOvDLasgl", + "name": "Langsam", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "sSCcqM8OaPaP6kW2", + "changes": [ + { + "key": "system.combatValues.movement.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Laufen -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!xWClnNIkOvDLasgl.sSCcqM8OaPaP6kW2" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Vertreter dieses Volkes sind langsam und erhalten -1 auf Laufen.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349159, + "modifiedTime": 1740227862619, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xWClnNIkOvDLasgl" +} diff --git a/packs/racial-abilities/Leichtf__ig_x35PNIYq3FCKIYCA.json b/packs/racial-abilities/Leichtf__ig_x35PNIYq3FCKIYCA.json new file mode 100644 index 00000000..6eab3568 --- /dev/null +++ b/packs/racial-abilities/Leichtf__ig_x35PNIYq3FCKIYCA.json @@ -0,0 +1,71 @@ +{ + "_id": "x35PNIYq3FCKIYCA", + "name": "Leichtfüßig", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "S4I2jS5RdAoAHLAL", + "changes": [ + { + "key": "system.checks.sneak", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Schleichen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!x35PNIYq3FCKIYCA.S4I2jS5RdAoAHLAL" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Volk erhält bei Schleichen und ähnlichen Proben einen Bonus von +1.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349158, + "modifiedTime": 1740227862619, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!x35PNIYq3FCKIYCA" +} diff --git a/packs/racial-abilities/Magieresistent_hPT9Q5DG9YFK1NTB.json b/packs/racial-abilities/Magieresistent_hPT9Q5DG9YFK1NTB.json new file mode 100644 index 00000000..7f627886 --- /dev/null +++ b/packs/racial-abilities/Magieresistent_hPT9Q5DG9YFK1NTB.json @@ -0,0 +1,27 @@ +{ + "_id": "hPT9Q5DG9YFK1NTB", + "name": "Magieresistent", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes sind weniger betroffen durch Zauber und Magie. Sämtliche magischen Auswirkungen (Schaden, aber auch Heilung, Trankeffekte oder die Zauberdauer u.ä.) werden bei ihnen halbiert, außer erlittener Elementarschaden.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349149, + "modifiedTime": 1740227862617, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hPT9Q5DG9YFK1NTB" +} diff --git a/packs/racial-abilities/Magisch_begabt_sFgC2eZxZIvii9OP.json b/packs/racial-abilities/Magisch_begabt_sFgC2eZxZIvii9OP.json new file mode 100644 index 00000000..ea681252 --- /dev/null +++ b/packs/racial-abilities/Magisch_begabt_sFgC2eZxZIvii9OP.json @@ -0,0 +1,71 @@ +{ + "_id": "sFgC2eZxZIvii9OP", + "name": "Magisch begabt", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "QxBn4JAl9dmgj5xH", + "changes": [ + { + "key": "system.combatValues.spellcasting.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Zaubern +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!sFgC2eZxZIvii9OP.QxBn4JAl9dmgj5xH" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes sind von der Magie berührt – es fällt ihnen unheimlich leicht, Zauber zu verstehen und zu wirken. Sie erhalten +1 auf Zaubern.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349156, + "modifiedTime": 1740227862618, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sFgC2eZxZIvii9OP" +} diff --git a/packs/racial-abilities/Magisch_unbegabt_FnyDr2OhywiARDPl.json b/packs/racial-abilities/Magisch_unbegabt_FnyDr2OhywiARDPl.json new file mode 100644 index 00000000..4abb5be0 --- /dev/null +++ b/packs/racial-abilities/Magisch_unbegabt_FnyDr2OhywiARDPl.json @@ -0,0 +1,27 @@ +{ + "_id": "FnyDr2OhywiARDPl", + "name": "Magisch unbegabt", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes können überhaupt nicht zaubern.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349053, + "modifiedTime": 1740227862614, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FnyDr2OhywiARDPl" +} diff --git a/packs/racial-abilities/Nachtsicht_jv1fgwHuCG6I8vMa.json b/packs/racial-abilities/Nachtsicht_jv1fgwHuCG6I8vMa.json new file mode 100644 index 00000000..2a2cb855 --- /dev/null +++ b/packs/racial-abilities/Nachtsicht_jv1fgwHuCG6I8vMa.json @@ -0,0 +1,27 @@ +{ + "_id": "jv1fgwHuCG6I8vMa", + "name": "Nachtsicht", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten die Volksfähigkeit Nachtsicht (DS4 S. 83).

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349151, + "modifiedTime": 1740227862617, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!jv1fgwHuCG6I8vMa" +} diff --git a/packs/racial-abilities/Schnell_qC9HBqm6nPRFg62e.json b/packs/racial-abilities/Schnell_qC9HBqm6nPRFg62e.json new file mode 100644 index 00000000..74bcbfd7 --- /dev/null +++ b/packs/racial-abilities/Schnell_qC9HBqm6nPRFg62e.json @@ -0,0 +1,71 @@ +{ + "_id": "qC9HBqm6nPRFg62e", + "name": "Schnell", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "jXtkQik1kgzTNeDC", + "changes": [ + { + "key": "system.combatValues.movement.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Laufen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!qC9HBqm6nPRFg62e.jXtkQik1kgzTNeDC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses flinke Volk erhält +1 auf Laufen.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349154, + "modifiedTime": 1740227862618, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!qC9HBqm6nPRFg62e" +} diff --git a/packs/racial-abilities/Talentiert_gIacfUxo5FToVbux.json b/packs/racial-abilities/Talentiert_gIacfUxo5FToVbux.json new file mode 100644 index 00000000..5ce85514 --- /dev/null +++ b/packs/racial-abilities/Talentiert_gIacfUxo5FToVbux.json @@ -0,0 +1,27 @@ +{ + "_id": "gIacfUxo5FToVbux", + "name": "Talentiert", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten einen zusätzlichen Talentpunkt bei der Charaktererschaffung.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349146, + "modifiedTime": 1740227862617, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gIacfUxo5FToVbux" +} diff --git a/packs/racial-abilities/Tollpatschig_43nqAxNU6hpBtMiY.json b/packs/racial-abilities/Tollpatschig_43nqAxNU6hpBtMiY.json new file mode 100644 index 00000000..91703606 --- /dev/null +++ b/packs/racial-abilities/Tollpatschig_43nqAxNU6hpBtMiY.json @@ -0,0 +1,113 @@ +{ + "_id": "43nqAxNU6hpBtMiY", + "name": "Tollpatschig", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "RSs2hV25q3KJkFmg", + "changes": [ + { + "key": "system.combatValues.rangedAttack.total", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.climb", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.hide", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.jump", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.pickPocket", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.ride", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.sneak", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.swim", + "mode": 2, + "value": "-4", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Proben mit Agilität -4", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!43nqAxNU6hpBtMiY.RSs2hV25q3KJkFmg" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Tollpatschige Völker sind sehr ungeschickt und grobmotorisch – sie erhalten auf alle Proben mit Agilität einen Malus von -4.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349022, + "modifiedTime": 1740227862612, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!43nqAxNU6hpBtMiY" +} diff --git a/packs/racial-abilities/Ungepflegt_yUyyyPRE3LvUUIGI.json b/packs/racial-abilities/Ungepflegt_yUyyyPRE3LvUUIGI.json new file mode 100644 index 00000000..3ff51881 --- /dev/null +++ b/packs/racial-abilities/Ungepflegt_yUyyyPRE3LvUUIGI.json @@ -0,0 +1,27 @@ +{ + "_id": "yUyyyPRE3LvUUIGI", + "name": "Ungepflegt", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten auf alle Proben sozialer Interaktion mit Vertretern anderer Völker einen Malus von -2.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349161, + "modifiedTime": 1740227862620, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yUyyyPRE3LvUUIGI" +} diff --git a/packs/racial-abilities/Unsterblich_QIjVVVMR4PcO2NZc.json b/packs/racial-abilities/Unsterblich_QIjVVVMR4PcO2NZc.json new file mode 100644 index 00000000..77056151 --- /dev/null +++ b/packs/racial-abilities/Unsterblich_QIjVVVMR4PcO2NZc.json @@ -0,0 +1,27 @@ +{ + "_id": "QIjVVVMR4PcO2NZc", + "name": "Unsterblich", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes altern, nachdem sie erwachsen sind, nicht wie Normalsterbliche. Das Alter rafft sie nicht dahin, sie sterben nur durch Gewalt oder aus Lebensüberdruß.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349099, + "modifiedTime": 1740227862614, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QIjVVVMR4PcO2NZc" +} diff --git a/packs/racial-abilities/Untalentiert_5hd2Tk6MzudSxM2M.json b/packs/racial-abilities/Untalentiert_5hd2Tk6MzudSxM2M.json new file mode 100644 index 00000000..8271528b --- /dev/null +++ b/packs/racial-abilities/Untalentiert_5hd2Tk6MzudSxM2M.json @@ -0,0 +1,27 @@ +{ + "_id": "5hd2Tk6MzudSxM2M", + "name": "Untalentiert", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der erste Rang eines Talentes kostet dieses Volk jeweils einen Talentpunkt mehr.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349037, + "modifiedTime": 1740227862613, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5hd2Tk6MzudSxM2M" +} diff --git a/packs/racial-abilities/Verabscheuungsw_rdig_YV9KiRebanh28Jk2.json b/packs/racial-abilities/Verabscheuungsw_rdig_YV9KiRebanh28Jk2.json new file mode 100644 index 00000000..433b5e3a --- /dev/null +++ b/packs/racial-abilities/Verabscheuungsw_rdig_YV9KiRebanh28Jk2.json @@ -0,0 +1,27 @@ +{ + "_id": "YV9KiRebanh28Jk2", + "name": "Verabscheuungswürdig", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes werden von anderen Völkern verabscheut und gemieden. Sie verkaufen Waren nur zögerlich oder gegen extremen Aufpreis an dieses Volk. Ausrüstung und andere Dienstleistungen kosten das Doppelte.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349134, + "modifiedTime": 1740227862615, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!YV9KiRebanh28Jk2" +} diff --git a/packs/racial-abilities/Z_h_8RPj5bUguaxQ6RLK.json b/packs/racial-abilities/Z_h_8RPj5bUguaxQ6RLK.json new file mode 100644 index 00000000..ef60c834 --- /dev/null +++ b/packs/racial-abilities/Z_h_8RPj5bUguaxQ6RLK.json @@ -0,0 +1,71 @@ +{ + "_id": "8RPj5bUguaxQ6RLK", + "name": "Zäh", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "tP2fgQrHbvuZT4eM", + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Abwehr +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!8RPj5bUguaxQ6RLK.tP2fgQrHbvuZT4eM" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten einen Bonus von +1 auf Abwehr.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349043, + "modifiedTime": 1740227862613, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8RPj5bUguaxQ6RLK" +} diff --git a/packs/racial-abilities/Z_her_als_sie_aussehen_Du32O8lxUjCTchh4.json b/packs/racial-abilities/Z_her_als_sie_aussehen_Du32O8lxUjCTchh4.json new file mode 100644 index 00000000..0551f4eb --- /dev/null +++ b/packs/racial-abilities/Z_her_als_sie_aussehen_Du32O8lxUjCTchh4.json @@ -0,0 +1,71 @@ +{ + "_id": "Du32O8lxUjCTchh4", + "name": "Zäher als sie aussehen", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "rTPqUWomhHvmzLbv", + "changes": [ + { + "key": "system.combatValues.hitPoints.total", + "mode": 1, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Lebenskraft x 2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Du32O8lxUjCTchh4.rTPqUWomhHvmzLbv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder eines kleinen Volkes können den LK-Malus auf Grund ihrer Größe mit dieser Volksfähigkeit ignorieren.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349048, + "modifiedTime": 1740227862613, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Du32O8lxUjCTchh4" +} diff --git a/packs/racial-abilities/Zielsicher_V5S2BMm7vWJiD2hD.json b/packs/racial-abilities/Zielsicher_V5S2BMm7vWJiD2hD.json new file mode 100644 index 00000000..bdb38a6b --- /dev/null +++ b/packs/racial-abilities/Zielsicher_V5S2BMm7vWJiD2hD.json @@ -0,0 +1,77 @@ +{ + "_id": "V5S2BMm7vWJiD2hD", + "name": "Zielsicher", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "YxpZ3gaKzgnl1T7S", + "changes": [ + { + "key": "system.combatValues.rangedAttack.total", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.combatValues.targetedSpellcasting.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Schießen, Zielzaubern +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!V5S2BMm7vWJiD2hD.YxpZ3gaKzgnl1T7S" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten einen Bonus von +1 auf Fernkampf und Zielzauber.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349115, + "modifiedTime": 1740227862615, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!V5S2BMm7vWJiD2hD" +} diff --git a/packs/special-creature-abilities.json b/packs/special-creature-abilities.json deleted file mode 100644 index 7a4bb0d0..00000000 --- a/packs/special-creature-abilities.json +++ /dev/null @@ -1,899 +0,0 @@ -[ - { - "_id": "02QMKm8MHzz8yAxL", - "name": "Zerstampfen", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [] - }, - { - "_id": "05D4DdnbcQFoIllF", - "name": "Schweben", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion “Rennen” ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", - "effects": [] - }, - { - "_id": "18PDF4gqWrIRWudN", - "name": "Schwimmen", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion “Rennen” schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [] - }, - { - "name": "Mehrere Angriffe (+4)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 4 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "_id": "1JDyMkVOlho7IuiN" - }, - { - "name": "Mehrere Angriffe (+2)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 2 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "_id": "1zPOH37f7Q5Rwodx" - }, - { - "_id": "3LGUHTPC3tbVC13X", - "name": "Angst (2)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [] - }, - { - "_id": "5PdSHi6PY4TNV9rP", - "name": "Schleudern", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [] - }, - { - "_id": "5eB5a0FnygbaqWPe", - "name": "Versteinern", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber Allheilung aufgehoben werden.

", - "experiencePoints": 50 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", - "effects": [] - }, - { - "_id": "5maJ8tHAVZCxHGW6", - "name": "Lähmungseffekt", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Der lähmende Angriff (nur alle 10 Kampfrunden einsetzbar) macht Ziel für Probenergebnis in Kamprunden bewegungsunfähig, sofern ihm nicht KÖR+ST gelingt.

", - "experiencePoints": 25 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/paralysis-effect.png", - "effects": [] - }, - { - "_id": "602AkdkLqx6NWprb", - "name": "Werteverlust (AGI)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Pro schadensverursachendem Treffer wird AGI um 1 gesenkt (bei AGI Null ist das Opfer bewegungsunfähig). Pro Tag oder Anwendung des Zaubers Allheilung wird 1 verlorener Attributspunkt regeneriert.

", - "experiencePoints": 15 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", - "effects": [] - }, - { - "_id": "75iKq2PTrfyTw0s4", - "name": "Dunkelsicht", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [] - }, - { - "name": "Mehrere Angriffglieder (+3)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit 3 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "_id": "8HmrA97ZqN7nEYgm" - }, - { - "_id": "AjPsjbxcuNslQEuE", - "name": "Umschlingen", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [] - }, - { - "_id": "BtjiEmhGyje6YghP", - "name": "Sonar", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

“Sieht” per Sonar.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/sonar.png", - "effects": [] - }, - { - "_id": "Dt7AvP3fUbOQB4Yn", - "name": "Angst (4)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -4 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 40 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [] - }, - { - "_id": "E5WqX3Em2HOAkP2e", - "name": "Anfällig (Wasser)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [] - }, - { - "_id": "FCxjdPJ1L8EJd0IF", - "name": "Nur durch Magie verletzbar", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", - "experiencePoints": 50 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", - "effects": [] - }, - { - "_id": "HMCFkxVzU2b3KkSA", - "name": "Bezaubern", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann Gegner mit einem “Lockruf” bezaubern. Dieser Zauber funktioniert wie der Zauberspruch Gehorche. Abklingzeit des Lockrufs: 10 Kampfrunden

", - "experiencePoints": 25 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charm.png", - "effects": [] - }, - { - "_id": "ImVvi7XqDvf6D2vY", - "name": "Anfällig (Luft)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [] - }, - { - "_id": "KDDlwN9as9B4ljeA", - "name": "Wesen des Lichts (Settingoption)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [] - }, - { - "_id": "Kbb8qlLeVahzxy5N", - "name": "Kletterläufer", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", - "effects": [] - }, - { - "_id": "L0dxlrCY14bLyUdQ", - "name": "Sturmangriff", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [] - }, - { - "name": "Mehrere Angriffe (+3)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 3 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "_id": "LM5xia0xVIlhQsLG" - }, - { - "_id": "Mh6bLPD3N29ybeLq", - "name": "Regeneration", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations- Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", - "experiencePoints": -1 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", - "effects": [] - }, - { - "_id": "R3j1CjXJckUH0CBG", - "name": "Wesen der Dunkelheit (Settingoption)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [] - }, - { - "name": "Mehrere Angriffglieder (+4)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit 4 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "_id": "R6jT1GYF13ZijtM0" - }, - { - "_id": "RwT0NBwkc1TuAR1e", - "name": "Werteverlust (KÖR)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Pro schadensverursachendem Treffer wird KÖR um 1 gesenkt (bei KÖR Null ist das Opfer tot). Pro Tag oder Anwendung des Zaubers Allheilung wird 1 verlorener Attributspunkt regeneriert.

", - "experiencePoints": 15 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", - "effects": [] - }, - { - "name": "Mehrere Angriffglieder (+1)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit 1 zusätzlichem Angriffsglied an, das Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "_id": "Sig4tVDj8zLWZCEP" - }, - { - "_id": "TY1ZV1YsyaFtfX7U", - "name": "Gift (1)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine “Gift trotzen”-Probe, ansonsten erhält es W20 Kampfrunden lang 1 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [] - }, - { - "name": "Mehrere Angriffglieder (+2)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit 2 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "_id": "VvzGK9lxAD7kuowL" - }, - { - "_id": "X3UfX2rmUKDUXmrC", - "name": "Angst (5)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -5 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 50 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [] - }, - { - "_id": "XhAfEVVoSADC880C", - "name": "Anfällig (Feuer)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [] - }, - { - "_id": "YrmJo8dg4CF3lJdH", - "name": "Natürliche Waffen", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [] - }, - { - "name": "Mehrere Angriffe (+5)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 5 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "_id": "YvkRgHyCkwhn3uzg" - }, - { - "_id": "ZkgZiFI5xy8aevG8", - "name": "Totenkraft", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", - "data": { - "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", - "experiencePoints": 10 - }, - "effects": [ - { - "_id": "xw1OyyTdDwkNe2jC", - "changes": [ - { - "key": "data.traits.strength.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - }, - { - "key": "data.traits.constitution.total", - "mode": 2, - "value": "@data.attributes.mind.total + @data.traits.aura.total" - } - ], - "disabled": false, - "duration": { - "startTime": null - }, - "icon": "icons/svg/aura.svg", - "label": "GEI + AU als Bonus auf Stärke und Härte", - "transfer": true, - "flags": {}, - "tint": null - } - ], - "folder": null, - "sort": 0, - "permission": { - "default": 0 - }, - "flags": {} - }, - { - "_id": "aOsmsf7jIK7hU9U8", - "name": "Anfällig (Licht)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Lichtangriffe.

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [] - }, - { - "_id": "blDuh7uVVhaNSUVU", - "name": "Angst (3)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [] - }, - { - "name": "Mehrere Angriffglieder (+5)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit 5 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "_id": "e6VuJIL8ocXQDQ2V" - }, - { - "_id": "e9F812racwKeZPgR", - "name": "Alterung (1 Jahr pro Treffer)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Treffer altert das Ziel um 1 Jahr.

", - "experiencePoints": 1 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", - "effects": [] - }, - { - "_id": "eWuQlQYF3VmyR0kt", - "name": "Sturzangriff", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [] - }, - { - "_id": "fY7yRpxhQTIV5G2p", - "name": "Verschlingen", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält. Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [] - }, - { - "_id": "fYLkdhA3Xlw2cctC", - "name": "Gift (4)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine “Gift trotzen”-Probe, ansonsten erhält es W20 Kampfrunden lang 4 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 40 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [] - }, - { - "_id": "jywCKRNCWLQFCFmu", - "name": "Gift (2)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine “Gift trotzen”-Probe, ansonsten erhält es W20 Kampfrunden lang 2 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 20 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [] - }, - { - "_id": "l4ewILWP2zbiSM97", - "name": "Blickangriff", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png", - "effects": [] - }, - { - "_id": "m52MTRs1GMXScTki", - "name": "Werteverlust (GEI)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Pro schadensverursachendem Treffer wird GEI um 1 gesenkt (bei GEI Null ist das Opfer wahnsinnig). Pro Tag oder Anwendung des Zaubers Allheilung wird 1 verlorener Attributspunkt regeneriert.

", - "experiencePoints": 15 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", - "effects": [] - }, - { - "_id": "mAWyVCfTFH6JiEIu", - "name": "Anfällig (Erde)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [] - }, - { - "_id": "mVs6A48mWnfV9hcL", - "name": "Alterung (1 Jahr pro Schadenspunkt)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", - "experiencePoints": -1 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", - "effects": [] - }, - { - "name": "Mehrere Angriffe (+1)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann 1 zusätzlichen Angriff in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "_id": "oDM4ImE7PrIgn22E" - }, - { - "_id": "oPTuLvZOEsXnRPed", - "name": "Rost", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Jeder Treffer reduziert die PA eines zufälligen, metallischen, nichtmagischen Rüstungsstückes des Ziels um 1. Gleiches gilt für den WB nichtmagischer Metallwaffen, die die Kreatur treffen.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/rust.png", - "effects": [] - }, - { - "_id": "oTLaMcZOW0eiUZCL", - "name": "Gift (5)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine “Gift trotzen”-Probe, ansonsten erhält es W20 Kampfrunden lang 5 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 50 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [] - }, - { - "_id": "oUR6JglLxmJZduZz", - "name": "Antimagie (10 Meter)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Sämtliche Magie in einem Radius von 10 Metern um die Kreatur herum ist wirkungslos. Dies gilt nicht für die eigene Magie der Kreatur oder deren Zauber.

", - "experiencePoints": 50 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/anti-magic.png", - "effects": [] - }, - { - "_id": "pJjtHe2Rd0YCa35n", - "name": "Nachtsicht", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [] - }, - { - "name": "Schwarm", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Gilt als einzelner Gegner. Der Schwarmwert (SCW) entspricht seiner aktuellen Mitgliederanzahl/10 (zu Beginn und max. 200 Mitglieder pro Schwarm = SCW 20). Pro 1 LK Schaden sterben 10 Mitglieder (= SCW -1). Schwärme können Mitglieder an benachbarte Felder abgeben und ihr eigenes sowie jedes angrenzende Feld gleichzeitig angreifen (mit jeweils vollen Schlagen-Wert).

\n

Schlagen/Abwehr/LK entsprechen dem aktuellen SCW

", - "experiencePoints": 0 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swarm.png", - "effects": [], - "_id": "rPbbTLUtSXZpdFjp" - }, - { - "_id": "rUA7XVCeDkREYfi8", - "name": "Angst (1)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [] - }, - { - "_id": "sDffbUUXg88Vn2Pq", - "name": "Odem", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

", - "experiencePoints": -1 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [] - }, - { - "_id": "uX7wuGyUjOPpYR5W", - "name": "Fliegen", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [] - }, - { - "_id": "xBZDRJORSen8qcRb", - "name": "Gift (3)", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine “Gift trotzen”-Probe, ansonsten erhält es W20 Kampfrunden lang 3 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 30 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [] - }, - { - "_id": "ziB3j0RSbWMtq1LX", - "name": "Geistesimmun", - "permission": { - "default": 0 - }, - "type": "specialCreatureAbility", - "data": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "flags": {}, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [] - } -] diff --git a/packs/special-creature-abilities.json.license b/packs/special-creature-abilities.json.license deleted file mode 100644 index dc219f48..00000000 --- a/packs/special-creature-abilities.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: CC-BY-NC-SA-4.0 diff --git a/packs/special-creature-abilities/Alterung__1_Jahr_pro_Schadenspunkt__mVs6A48mWnfV9hcL.json b/packs/special-creature-abilities/Alterung__1_Jahr_pro_Schadenspunkt__mVs6A48mWnfV9hcL.json new file mode 100644 index 00000000..17cd9d67 --- /dev/null +++ b/packs/special-creature-abilities/Alterung__1_Jahr_pro_Schadenspunkt__mVs6A48mWnfV9hcL.json @@ -0,0 +1,28 @@ +{ + "_id": "mVs6A48mWnfV9hcL", + "name": "Alterung (1 Jahr pro Schadenspunkt)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342120, + "modifiedTime": 1740227862512, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mVs6A48mWnfV9hcL" +} diff --git a/packs/special-creature-abilities/Alterung__1_Jahr_pro_Treffer__e9F812racwKeZPgR.json b/packs/special-creature-abilities/Alterung__1_Jahr_pro_Treffer__e9F812racwKeZPgR.json new file mode 100644 index 00000000..9be8e53e --- /dev/null +++ b/packs/special-creature-abilities/Alterung__1_Jahr_pro_Treffer__e9F812racwKeZPgR.json @@ -0,0 +1,28 @@ +{ + "_id": "e9F812racwKeZPgR", + "name": "Alterung (1 Jahr pro Treffer)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei einem Treffer altert das Ziel um 1 Jahr.

", + "experiencePoints": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342096, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!e9F812racwKeZPgR" +} diff --git a/packs/special-creature-abilities/Anf_llig__Erde__mAWyVCfTFH6JiEIu.json b/packs/special-creature-abilities/Anf_llig__Erde__mAWyVCfTFH6JiEIu.json new file mode 100644 index 00000000..c8bb97a5 --- /dev/null +++ b/packs/special-creature-abilities/Anf_llig__Erde__mAWyVCfTFH6JiEIu.json @@ -0,0 +1,28 @@ +{ + "_id": "mAWyVCfTFH6JiEIu", + "name": "Anfällig (Erde)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342118, + "modifiedTime": 1740227862512, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mAWyVCfTFH6JiEIu" +} diff --git a/packs/special-creature-abilities/Anf_llig__Feuer__XhAfEVVoSADC880C.json b/packs/special-creature-abilities/Anf_llig__Feuer__XhAfEVVoSADC880C.json new file mode 100644 index 00000000..c2d5c8ee --- /dev/null +++ b/packs/special-creature-abilities/Anf_llig__Feuer__XhAfEVVoSADC880C.json @@ -0,0 +1,28 @@ +{ + "_id": "XhAfEVVoSADC880C", + "name": "Anfällig (Feuer)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342080, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XhAfEVVoSADC880C" +} diff --git a/packs/special-creature-abilities/Anf_llig__Licht__aOsmsf7jIK7hU9U8.json b/packs/special-creature-abilities/Anf_llig__Licht__aOsmsf7jIK7hU9U8.json new file mode 100644 index 00000000..0d87f4ba --- /dev/null +++ b/packs/special-creature-abilities/Anf_llig__Licht__aOsmsf7jIK7hU9U8.json @@ -0,0 +1,28 @@ +{ + "_id": "aOsmsf7jIK7hU9U8", + "name": "Anfällig (Licht)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält doppelten Schaden durch Lichtangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342088, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aOsmsf7jIK7hU9U8" +} diff --git a/packs/special-creature-abilities/Anf_llig__Luft__ImVvi7XqDvf6D2vY.json b/packs/special-creature-abilities/Anf_llig__Luft__ImVvi7XqDvf6D2vY.json new file mode 100644 index 00000000..a967a1b0 --- /dev/null +++ b/packs/special-creature-abilities/Anf_llig__Luft__ImVvi7XqDvf6D2vY.json @@ -0,0 +1,28 @@ +{ + "_id": "ImVvi7XqDvf6D2vY", + "name": "Anfällig (Luft)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342055, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ImVvi7XqDvf6D2vY" +} diff --git a/packs/special-creature-abilities/Anf_llig__Wasser__E5WqX3Em2HOAkP2e.json b/packs/special-creature-abilities/Anf_llig__Wasser__E5WqX3Em2HOAkP2e.json new file mode 100644 index 00000000..009127d8 --- /dev/null +++ b/packs/special-creature-abilities/Anf_llig__Wasser__E5WqX3Em2HOAkP2e.json @@ -0,0 +1,28 @@ +{ + "_id": "E5WqX3Em2HOAkP2e", + "name": "Anfällig (Wasser)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342040, + "modifiedTime": 1740227862506, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!E5WqX3Em2HOAkP2e" +} diff --git a/packs/special-creature-abilities/Angst__1__rUA7XVCeDkREYfi8.json b/packs/special-creature-abilities/Angst__1__rUA7XVCeDkREYfi8.json new file mode 100644 index 00000000..b7c060b6 --- /dev/null +++ b/packs/special-creature-abilities/Angst__1__rUA7XVCeDkREYfi8.json @@ -0,0 +1,28 @@ +{ + "_id": "rUA7XVCeDkREYfi8", + "name": "Angst (1)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342142, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rUA7XVCeDkREYfi8" +} diff --git a/packs/special-creature-abilities/Angst__2__3LGUHTPC3tbVC13X.json b/packs/special-creature-abilities/Angst__2__3LGUHTPC3tbVC13X.json new file mode 100644 index 00000000..28ae9ba7 --- /dev/null +++ b/packs/special-creature-abilities/Angst__2__3LGUHTPC3tbVC13X.json @@ -0,0 +1,28 @@ +{ + "_id": "3LGUHTPC3tbVC13X", + "name": "Angst (2)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 20 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342010, + "modifiedTime": 1740227862504, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3LGUHTPC3tbVC13X" +} diff --git a/packs/special-creature-abilities/Angst__3__blDuh7uVVhaNSUVU.json b/packs/special-creature-abilities/Angst__3__blDuh7uVVhaNSUVU.json new file mode 100644 index 00000000..3997a6e0 --- /dev/null +++ b/packs/special-creature-abilities/Angst__3__blDuh7uVVhaNSUVU.json @@ -0,0 +1,28 @@ +{ + "_id": "blDuh7uVVhaNSUVU", + "name": "Angst (3)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 30 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342090, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!blDuh7uVVhaNSUVU" +} diff --git a/packs/special-creature-abilities/Angst__4__Dt7AvP3fUbOQB4Yn.json b/packs/special-creature-abilities/Angst__4__Dt7AvP3fUbOQB4Yn.json new file mode 100644 index 00000000..3c889c94 --- /dev/null +++ b/packs/special-creature-abilities/Angst__4__Dt7AvP3fUbOQB4Yn.json @@ -0,0 +1,28 @@ +{ + "_id": "Dt7AvP3fUbOQB4Yn", + "name": "Angst (4)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -4 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 40 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342037, + "modifiedTime": 1740227862506, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Dt7AvP3fUbOQB4Yn" +} diff --git a/packs/special-creature-abilities/Angst__5__X3UfX2rmUKDUXmrC.json b/packs/special-creature-abilities/Angst__5__X3UfX2rmUKDUXmrC.json new file mode 100644 index 00000000..49a3b726 --- /dev/null +++ b/packs/special-creature-abilities/Angst__5__X3UfX2rmUKDUXmrC.json @@ -0,0 +1,28 @@ +{ + "_id": "X3UfX2rmUKDUXmrC", + "name": "Angst (5)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -5 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342074, + "modifiedTime": 1740227862509, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!X3UfX2rmUKDUXmrC" +} diff --git a/packs/special-creature-abilities/Antimagie__10_Meter__oUR6JglLxmJZduZz.json b/packs/special-creature-abilities/Antimagie__10_Meter__oUR6JglLxmJZduZz.json new file mode 100644 index 00000000..4ed208f8 --- /dev/null +++ b/packs/special-creature-abilities/Antimagie__10_Meter__oUR6JglLxmJZduZz.json @@ -0,0 +1,28 @@ +{ + "_id": "oUR6JglLxmJZduZz", + "name": "Antimagie (10 Meter)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/anti-magic.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Sämtliche Magie in einem Radius von 10 Metern um die Kreatur herum ist wirkungslos. Dies gilt nicht für die eigene Magie der Kreatur oder deren Zauber.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342127, + "modifiedTime": 1740227862513, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oUR6JglLxmJZduZz" +} diff --git a/packs/special-creature-abilities/Bezaubern_HMCFkxVzU2b3KkSA.json b/packs/special-creature-abilities/Bezaubern_HMCFkxVzU2b3KkSA.json new file mode 100644 index 00000000..416c9b91 --- /dev/null +++ b/packs/special-creature-abilities/Bezaubern_HMCFkxVzU2b3KkSA.json @@ -0,0 +1,28 @@ +{ + "_id": "HMCFkxVzU2b3KkSA", + "name": "Bezaubern", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charm.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann Gegner mit einem „Lockruf“ bezaubern. Dieser Zauber funktioniert wie der Zauberspruch @Compendium[ds4.spells.wZYElRaDmhqgzUvQ]{Gehorche}. Abklingzeit des Lockrufs: 10 Kampfrunden

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342052, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HMCFkxVzU2b3KkSA" +} diff --git a/packs/special-creature-abilities/Blickangriff_l4ewILWP2zbiSM97.json b/packs/special-creature-abilities/Blickangriff_l4ewILWP2zbiSM97.json new file mode 100644 index 00000000..36fd5126 --- /dev/null +++ b/packs/special-creature-abilities/Blickangriff_l4ewILWP2zbiSM97.json @@ -0,0 +1,28 @@ +{ + "_id": "l4ewILWP2zbiSM97", + "name": "Blickangriff", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342114, + "modifiedTime": 1740227862512, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!l4ewILWP2zbiSM97" +} diff --git a/packs/special-creature-abilities/Dunkelsicht_75iKq2PTrfyTw0s4.json b/packs/special-creature-abilities/Dunkelsicht_75iKq2PTrfyTw0s4.json new file mode 100644 index 00000000..ee8fe73b --- /dev/null +++ b/packs/special-creature-abilities/Dunkelsicht_75iKq2PTrfyTw0s4.json @@ -0,0 +1,28 @@ +{ + "_id": "75iKq2PTrfyTw0s4", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342024, + "modifiedTime": 1740227862505, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!75iKq2PTrfyTw0s4" +} diff --git a/packs/special-creature-abilities/Fliegen_uX7wuGyUjOPpYR5W.json b/packs/special-creature-abilities/Fliegen_uX7wuGyUjOPpYR5W.json new file mode 100644 index 00000000..72b255fe --- /dev/null +++ b/packs/special-creature-abilities/Fliegen_uX7wuGyUjOPpYR5W.json @@ -0,0 +1,28 @@ +{ + "_id": "uX7wuGyUjOPpYR5W", + "name": "Fliegen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342144, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uX7wuGyUjOPpYR5W" +} diff --git a/packs/special-creature-abilities/Geistesimmun_ziB3j0RSbWMtq1LX.json b/packs/special-creature-abilities/Geistesimmun_ziB3j0RSbWMtq1LX.json new file mode 100644 index 00000000..0265937f --- /dev/null +++ b/packs/special-creature-abilities/Geistesimmun_ziB3j0RSbWMtq1LX.json @@ -0,0 +1,28 @@ +{ + "_id": "ziB3j0RSbWMtq1LX", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342149, + "modifiedTime": 1740227862515, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ziB3j0RSbWMtq1LX" +} diff --git a/packs/special-creature-abilities/Gift__1__TY1ZV1YsyaFtfX7U.json b/packs/special-creature-abilities/Gift__1__TY1ZV1YsyaFtfX7U.json new file mode 100644 index 00000000..addc64eb --- /dev/null +++ b/packs/special-creature-abilities/Gift__1__TY1ZV1YsyaFtfX7U.json @@ -0,0 +1,28 @@ +{ + "_id": "TY1ZV1YsyaFtfX7U", + "name": "Gift (1)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 1 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342071, + "modifiedTime": 1740227862509, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TY1ZV1YsyaFtfX7U" +} diff --git a/packs/special-creature-abilities/Gift__2__jywCKRNCWLQFCFmu.json b/packs/special-creature-abilities/Gift__2__jywCKRNCWLQFCFmu.json new file mode 100644 index 00000000..ae147a25 --- /dev/null +++ b/packs/special-creature-abilities/Gift__2__jywCKRNCWLQFCFmu.json @@ -0,0 +1,28 @@ +{ + "_id": "jywCKRNCWLQFCFmu", + "name": "Gift (2)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 2 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 20 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342111, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!jywCKRNCWLQFCFmu" +} diff --git a/packs/special-creature-abilities/Gift__3__xBZDRJORSen8qcRb.json b/packs/special-creature-abilities/Gift__3__xBZDRJORSen8qcRb.json new file mode 100644 index 00000000..9b0bd1eb --- /dev/null +++ b/packs/special-creature-abilities/Gift__3__xBZDRJORSen8qcRb.json @@ -0,0 +1,28 @@ +{ + "_id": "xBZDRJORSen8qcRb", + "name": "Gift (3)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 3 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 30 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342147, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xBZDRJORSen8qcRb" +} diff --git a/packs/special-creature-abilities/Gift__4__fYLkdhA3Xlw2cctC.json b/packs/special-creature-abilities/Gift__4__fYLkdhA3Xlw2cctC.json new file mode 100644 index 00000000..690edf87 --- /dev/null +++ b/packs/special-creature-abilities/Gift__4__fYLkdhA3Xlw2cctC.json @@ -0,0 +1,28 @@ +{ + "_id": "fYLkdhA3Xlw2cctC", + "name": "Gift (4)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 4 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 40 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342109, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fYLkdhA3Xlw2cctC" +} diff --git a/packs/special-creature-abilities/Gift__5__oTLaMcZOW0eiUZCL.json b/packs/special-creature-abilities/Gift__5__oTLaMcZOW0eiUZCL.json new file mode 100644 index 00000000..6e81d1ef --- /dev/null +++ b/packs/special-creature-abilities/Gift__5__oTLaMcZOW0eiUZCL.json @@ -0,0 +1,28 @@ +{ + "_id": "oTLaMcZOW0eiUZCL", + "name": "Gift (5)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 5 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342126, + "modifiedTime": 1740227862513, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oTLaMcZOW0eiUZCL" +} diff --git a/packs/special-creature-abilities/Kletterl_ufer_Kbb8qlLeVahzxy5N.json b/packs/special-creature-abilities/Kletterl_ufer_Kbb8qlLeVahzxy5N.json new file mode 100644 index 00000000..a651d578 --- /dev/null +++ b/packs/special-creature-abilities/Kletterl_ufer_Kbb8qlLeVahzxy5N.json @@ -0,0 +1,28 @@ +{ + "_id": "Kbb8qlLeVahzxy5N", + "name": "Kletterläufer", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342058, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Kbb8qlLeVahzxy5N" +} diff --git a/packs/special-creature-abilities/L_hmungseffekt_5maJ8tHAVZCxHGW6.json b/packs/special-creature-abilities/L_hmungseffekt_5maJ8tHAVZCxHGW6.json new file mode 100644 index 00000000..3ee68e9d --- /dev/null +++ b/packs/special-creature-abilities/L_hmungseffekt_5maJ8tHAVZCxHGW6.json @@ -0,0 +1,28 @@ +{ + "_id": "5maJ8tHAVZCxHGW6", + "name": "Lähmungseffekt", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/paralysis-effect.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der lähmende Angriff (nur alle 10 Kampfrunden einsetzbar) macht Ziel für Probenergebnis in Kamprunden bewegungsunfähig, sofern ihm nicht KÖR+ST gelingt.

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342020, + "modifiedTime": 1740227862505, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5maJ8tHAVZCxHGW6" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___1__oDM4ImE7PrIgn22E.json b/packs/special-creature-abilities/Mehrere_Angriffe___1__oDM4ImE7PrIgn22E.json new file mode 100644 index 00000000..1abdd377 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffe___1__oDM4ImE7PrIgn22E.json @@ -0,0 +1,28 @@ +{ + "_id": "oDM4ImE7PrIgn22E", + "name": "Mehrere Angriffe (+1)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann 1 zusätzlichen Angriff in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342122, + "modifiedTime": 1740227862513, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oDM4ImE7PrIgn22E" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___2__1zPOH37f7Q5Rwodx.json b/packs/special-creature-abilities/Mehrere_Angriffe___2__1zPOH37f7Q5Rwodx.json new file mode 100644 index 00000000..b68c7d8a --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffe___2__1zPOH37f7Q5Rwodx.json @@ -0,0 +1,28 @@ +{ + "_id": "1zPOH37f7Q5Rwodx", + "name": "Mehrere Angriffe (+2)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann 2 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342007, + "modifiedTime": 1740227862504, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1zPOH37f7Q5Rwodx" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___3__LM5xia0xVIlhQsLG.json b/packs/special-creature-abilities/Mehrere_Angriffe___3__LM5xia0xVIlhQsLG.json new file mode 100644 index 00000000..f9a0fe19 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffe___3__LM5xia0xVIlhQsLG.json @@ -0,0 +1,28 @@ +{ + "_id": "LM5xia0xVIlhQsLG", + "name": "Mehrere Angriffe (+3)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann 3 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342060, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!LM5xia0xVIlhQsLG" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___4__1JDyMkVOlho7IuiN.json b/packs/special-creature-abilities/Mehrere_Angriffe___4__1JDyMkVOlho7IuiN.json new file mode 100644 index 00000000..afe8d126 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffe___4__1JDyMkVOlho7IuiN.json @@ -0,0 +1,28 @@ +{ + "_id": "1JDyMkVOlho7IuiN", + "name": "Mehrere Angriffe (+4)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann 4 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342005, + "modifiedTime": 1740227862504, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1JDyMkVOlho7IuiN" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___5__YvkRgHyCkwhn3uzg.json b/packs/special-creature-abilities/Mehrere_Angriffe___5__YvkRgHyCkwhn3uzg.json new file mode 100644 index 00000000..eefb2bd0 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffe___5__YvkRgHyCkwhn3uzg.json @@ -0,0 +1,28 @@ +{ + "_id": "YvkRgHyCkwhn3uzg", + "name": "Mehrere Angriffe (+5)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann 5 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342084, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!YvkRgHyCkwhn3uzg" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___1__Sig4tVDj8zLWZCEP.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___1__Sig4tVDj8zLWZCEP.json new file mode 100644 index 00000000..5566cbd8 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffglieder___1__Sig4tVDj8zLWZCEP.json @@ -0,0 +1,28 @@ +{ + "_id": "Sig4tVDj8zLWZCEP", + "name": "Mehrere Angriffglieder (+1)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Greift mit 1 zusätzlichem Angriffsglied an, das Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342070, + "modifiedTime": 1740227862509, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Sig4tVDj8zLWZCEP" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___2__VvzGK9lxAD7kuowL.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___2__VvzGK9lxAD7kuowL.json new file mode 100644 index 00000000..236b71bd --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffglieder___2__VvzGK9lxAD7kuowL.json @@ -0,0 +1,28 @@ +{ + "_id": "VvzGK9lxAD7kuowL", + "name": "Mehrere Angriffglieder (+2)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Greift mit 2 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342073, + "modifiedTime": 1740227862509, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VvzGK9lxAD7kuowL" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___3__8HmrA97ZqN7nEYgm.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___3__8HmrA97ZqN7nEYgm.json new file mode 100644 index 00000000..3ec6159e --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffglieder___3__8HmrA97ZqN7nEYgm.json @@ -0,0 +1,28 @@ +{ + "_id": "8HmrA97ZqN7nEYgm", + "name": "Mehrere Angriffglieder (+3)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Greift mit 3 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342026, + "modifiedTime": 1740227862505, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8HmrA97ZqN7nEYgm" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___4__R6jT1GYF13ZijtM0.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___4__R6jT1GYF13ZijtM0.json new file mode 100644 index 00000000..6513d336 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffglieder___4__R6jT1GYF13ZijtM0.json @@ -0,0 +1,28 @@ +{ + "_id": "R6jT1GYF13ZijtM0", + "name": "Mehrere Angriffglieder (+4)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Greift mit 4 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342066, + "modifiedTime": 1740227862508, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!R6jT1GYF13ZijtM0" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___5__e6VuJIL8ocXQDQ2V.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___5__e6VuJIL8ocXQDQ2V.json new file mode 100644 index 00000000..6d71117c --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffglieder___5__e6VuJIL8ocXQDQ2V.json @@ -0,0 +1,28 @@ +{ + "_id": "e6VuJIL8ocXQDQ2V", + "name": "Mehrere Angriffglieder (+5)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Greift mit 5 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342092, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!e6VuJIL8ocXQDQ2V" +} diff --git a/packs/special-creature-abilities/Nachtsicht_pJjtHe2Rd0YCa35n.json b/packs/special-creature-abilities/Nachtsicht_pJjtHe2Rd0YCa35n.json new file mode 100644 index 00000000..2c503dc0 --- /dev/null +++ b/packs/special-creature-abilities/Nachtsicht_pJjtHe2Rd0YCa35n.json @@ -0,0 +1,28 @@ +{ + "_id": "pJjtHe2Rd0YCa35n", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342130, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pJjtHe2Rd0YCa35n" +} diff --git a/packs/special-creature-abilities/Nat_rliche_Waffen_YrmJo8dg4CF3lJdH.json b/packs/special-creature-abilities/Nat_rliche_Waffen_YrmJo8dg4CF3lJdH.json new file mode 100644 index 00000000..81acb893 --- /dev/null +++ b/packs/special-creature-abilities/Nat_rliche_Waffen_YrmJo8dg4CF3lJdH.json @@ -0,0 +1,28 @@ +{ + "_id": "YrmJo8dg4CF3lJdH", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342082, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!YrmJo8dg4CF3lJdH" +} diff --git a/packs/special-creature-abilities/Nur_durch_Magie_verletzbar_FCxjdPJ1L8EJd0IF.json b/packs/special-creature-abilities/Nur_durch_Magie_verletzbar_FCxjdPJ1L8EJd0IF.json new file mode 100644 index 00000000..d92dfa36 --- /dev/null +++ b/packs/special-creature-abilities/Nur_durch_Magie_verletzbar_FCxjdPJ1L8EJd0IF.json @@ -0,0 +1,28 @@ +{ + "_id": "FCxjdPJ1L8EJd0IF", + "name": "Nur durch Magie verletzbar", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342047, + "modifiedTime": 1740227862506, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FCxjdPJ1L8EJd0IF" +} diff --git a/packs/special-creature-abilities/Odem_sDffbUUXg88Vn2Pq.json b/packs/special-creature-abilities/Odem_sDffbUUXg88Vn2Pq.json new file mode 100644 index 00000000..57d250e4 --- /dev/null +++ b/packs/special-creature-abilities/Odem_sDffbUUXg88Vn2Pq.json @@ -0,0 +1,28 @@ +{ + "_id": "sDffbUUXg88Vn2Pq", + "name": "Odem", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342143, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sDffbUUXg88Vn2Pq" +} diff --git a/packs/special-creature-abilities/Regeneration_Mh6bLPD3N29ybeLq.json b/packs/special-creature-abilities/Regeneration_Mh6bLPD3N29ybeLq.json new file mode 100644 index 00000000..84e4f3a5 --- /dev/null +++ b/packs/special-creature-abilities/Regeneration_Mh6bLPD3N29ybeLq.json @@ -0,0 +1,28 @@ +{ + "_id": "Mh6bLPD3N29ybeLq", + "name": "Regeneration", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations-Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342062, + "modifiedTime": 1740227862508, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Mh6bLPD3N29ybeLq" +} diff --git a/packs/special-creature-abilities/Rost_oPTuLvZOEsXnRPed.json b/packs/special-creature-abilities/Rost_oPTuLvZOEsXnRPed.json new file mode 100644 index 00000000..24f8b996 --- /dev/null +++ b/packs/special-creature-abilities/Rost_oPTuLvZOEsXnRPed.json @@ -0,0 +1,28 @@ +{ + "_id": "oPTuLvZOEsXnRPed", + "name": "Rost", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/rust.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Jeder Treffer reduziert die PA eines zufälligen, metallischen, nichtmagischen Rüstungsstückes des Ziels um 1. Gleiches gilt für den WB nichtmagischer Metallwaffen, die die Kreatur treffen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342124, + "modifiedTime": 1740227862513, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oPTuLvZOEsXnRPed" +} diff --git a/packs/special-creature-abilities/Schleudern_5PdSHi6PY4TNV9rP.json b/packs/special-creature-abilities/Schleudern_5PdSHi6PY4TNV9rP.json new file mode 100644 index 00000000..2d07c74f --- /dev/null +++ b/packs/special-creature-abilities/Schleudern_5PdSHi6PY4TNV9rP.json @@ -0,0 +1,28 @@ +{ + "_id": "5PdSHi6PY4TNV9rP", + "name": "Schleudern", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342014, + "modifiedTime": 1740227862504, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5PdSHi6PY4TNV9rP" +} diff --git a/packs/special-creature-abilities/Schwarm_rPbbTLUtSXZpdFjp.json b/packs/special-creature-abilities/Schwarm_rPbbTLUtSXZpdFjp.json new file mode 100644 index 00000000..b50db1e7 --- /dev/null +++ b/packs/special-creature-abilities/Schwarm_rPbbTLUtSXZpdFjp.json @@ -0,0 +1,28 @@ +{ + "_id": "rPbbTLUtSXZpdFjp", + "name": "Schwarm", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swarm.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gilt als einzelner Gegner. Der Schwarmwert (SCW) entspricht seiner aktuellen Mitgliederanzahl / 10 (zu Beginn und max. 200 Mitglieder pro Schwarm = SCW 20). Pro 1 LK Schaden sterben 10 Mitglieder (= SCW -1). Schwärme können Mitglieder an benachbarte Felder abgeben und ihr eigenes sowie jedes angrenzende Feld gleichzeitig angreifen (mit jeweils vollen Schlagen-Wert).

\n

Schlagen/Abwehr/LK entsprechen dem aktuellen SCW

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342134, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rPbbTLUtSXZpdFjp" +} diff --git a/packs/special-creature-abilities/Schweben_05D4DdnbcQFoIllF.json b/packs/special-creature-abilities/Schweben_05D4DdnbcQFoIllF.json new file mode 100644 index 00000000..65655aaf --- /dev/null +++ b/packs/special-creature-abilities/Schweben_05D4DdnbcQFoIllF.json @@ -0,0 +1,28 @@ +{ + "_id": "05D4DdnbcQFoIllF", + "name": "Schweben", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion „Rennen“ ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995341997, + "modifiedTime": 1740227862503, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!05D4DdnbcQFoIllF" +} diff --git a/packs/special-creature-abilities/Schwimmen_18PDF4gqWrIRWudN.json b/packs/special-creature-abilities/Schwimmen_18PDF4gqWrIRWudN.json new file mode 100644 index 00000000..e898d27a --- /dev/null +++ b/packs/special-creature-abilities/Schwimmen_18PDF4gqWrIRWudN.json @@ -0,0 +1,28 @@ +{ + "_id": "18PDF4gqWrIRWudN", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342002, + "modifiedTime": 1740227862503, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!18PDF4gqWrIRWudN" +} diff --git a/packs/special-creature-abilities/Sonar_BtjiEmhGyje6YghP.json b/packs/special-creature-abilities/Sonar_BtjiEmhGyje6YghP.json new file mode 100644 index 00000000..e870e874 --- /dev/null +++ b/packs/special-creature-abilities/Sonar_BtjiEmhGyje6YghP.json @@ -0,0 +1,28 @@ +{ + "_id": "BtjiEmhGyje6YghP", + "name": "Sonar", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/sonar.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

„Sieht“ per Sonar.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342035, + "modifiedTime": 1740227862506, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!BtjiEmhGyje6YghP" +} diff --git a/packs/special-creature-abilities/Sturmangriff_L0dxlrCY14bLyUdQ.json b/packs/special-creature-abilities/Sturmangriff_L0dxlrCY14bLyUdQ.json new file mode 100644 index 00000000..f7adf23c --- /dev/null +++ b/packs/special-creature-abilities/Sturmangriff_L0dxlrCY14bLyUdQ.json @@ -0,0 +1,28 @@ +{ + "_id": "L0dxlrCY14bLyUdQ", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342059, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!L0dxlrCY14bLyUdQ" +} diff --git a/packs/special-creature-abilities/Sturzangriff_eWuQlQYF3VmyR0kt.json b/packs/special-creature-abilities/Sturzangriff_eWuQlQYF3VmyR0kt.json new file mode 100644 index 00000000..03308c9d --- /dev/null +++ b/packs/special-creature-abilities/Sturzangriff_eWuQlQYF3VmyR0kt.json @@ -0,0 +1,28 @@ +{ + "_id": "eWuQlQYF3VmyR0kt", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342099, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eWuQlQYF3VmyR0kt" +} diff --git a/packs/special-creature-abilities/Totenkraft_ZkgZiFI5xy8aevG8.json b/packs/special-creature-abilities/Totenkraft_ZkgZiFI5xy8aevG8.json new file mode 100644 index 00000000..40380dc5 --- /dev/null +++ b/packs/special-creature-abilities/Totenkraft_ZkgZiFI5xy8aevG8.json @@ -0,0 +1,78 @@ +{ + "_id": "ZkgZiFI5xy8aevG8", + "name": "Totenkraft", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", + "effects": [ + { + "_id": "xw1OyyTdDwkNe2jC", + "changes": [ + { + "key": "system.traits.strength.total", + "mode": 2, + "value": "@system.attributes.mind.total + @system.traits.aura.total", + "priority": null + }, + { + "key": "system.traits.constitution.total", + "mode": 2, + "value": "@system.attributes.mind.total + @system.traits.aura.total", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "GEI + AU als Bonus auf Stärke und Härte", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZkgZiFI5xy8aevG8.xw1OyyTdDwkNe2jC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342086, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZkgZiFI5xy8aevG8" +} diff --git a/packs/special-creature-abilities/Umschlingen_AjPsjbxcuNslQEuE.json b/packs/special-creature-abilities/Umschlingen_AjPsjbxcuNslQEuE.json new file mode 100644 index 00000000..899a10c3 --- /dev/null +++ b/packs/special-creature-abilities/Umschlingen_AjPsjbxcuNslQEuE.json @@ -0,0 +1,28 @@ +{ + "_id": "AjPsjbxcuNslQEuE", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342029, + "modifiedTime": 1740227862505, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!AjPsjbxcuNslQEuE" +} diff --git a/packs/special-creature-abilities/Verschlingen_fY7yRpxhQTIV5G2p.json b/packs/special-creature-abilities/Verschlingen_fY7yRpxhQTIV5G2p.json new file mode 100644 index 00000000..75b4fbc0 --- /dev/null +++ b/packs/special-creature-abilities/Verschlingen_fY7yRpxhQTIV5G2p.json @@ -0,0 +1,28 @@ +{ + "_id": "fY7yRpxhQTIV5G2p", + "name": "Verschlingen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält. Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342107, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fY7yRpxhQTIV5G2p" +} diff --git a/packs/special-creature-abilities/Versteinern_5eB5a0FnygbaqWPe.json b/packs/special-creature-abilities/Versteinern_5eB5a0FnygbaqWPe.json new file mode 100644 index 00000000..fbeb17f1 --- /dev/null +++ b/packs/special-creature-abilities/Versteinern_5eB5a0FnygbaqWPe.json @@ -0,0 +1,28 @@ +{ + "_id": "5eB5a0FnygbaqWPe", + "name": "Versteinern", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} aufgehoben werden.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342017, + "modifiedTime": 1740227862504, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5eB5a0FnygbaqWPe" +} diff --git a/packs/special-creature-abilities/Werteverlust__AGI__602AkdkLqx6NWprb.json b/packs/special-creature-abilities/Werteverlust__AGI__602AkdkLqx6NWprb.json new file mode 100644 index 00000000..20bb6c72 --- /dev/null +++ b/packs/special-creature-abilities/Werteverlust__AGI__602AkdkLqx6NWprb.json @@ -0,0 +1,28 @@ +{ + "_id": "602AkdkLqx6NWprb", + "name": "Werteverlust (AGI)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro schadensverursachendem Treffer wird AGI um 1 gesenkt (bei AGI Null ist das Opfer bewegungsunfähig). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342022, + "modifiedTime": 1740227862505, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!602AkdkLqx6NWprb" +} diff --git a/packs/special-creature-abilities/Werteverlust__GEI__m52MTRs1GMXScTki.json b/packs/special-creature-abilities/Werteverlust__GEI__m52MTRs1GMXScTki.json new file mode 100644 index 00000000..35760d98 --- /dev/null +++ b/packs/special-creature-abilities/Werteverlust__GEI__m52MTRs1GMXScTki.json @@ -0,0 +1,28 @@ +{ + "_id": "m52MTRs1GMXScTki", + "name": "Werteverlust (GEI)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro schadensverursachendem Treffer wird GEI um 1 gesenkt (bei GEI Null ist das Opfer wahnsinnig). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342116, + "modifiedTime": 1740227862512, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!m52MTRs1GMXScTki" +} diff --git a/packs/special-creature-abilities/Werteverlust__K_R__RwT0NBwkc1TuAR1e.json b/packs/special-creature-abilities/Werteverlust__K_R__RwT0NBwkc1TuAR1e.json new file mode 100644 index 00000000..e898b99f --- /dev/null +++ b/packs/special-creature-abilities/Werteverlust__K_R__RwT0NBwkc1TuAR1e.json @@ -0,0 +1,28 @@ +{ + "_id": "RwT0NBwkc1TuAR1e", + "name": "Werteverlust (KÖR)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro schadensverursachendem Treffer wird KÖR um 1 gesenkt (bei KÖR Null ist das Opfer tot). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342068, + "modifiedTime": 1740227862509, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RwT0NBwkc1TuAR1e" +} diff --git a/packs/special-creature-abilities/Wesen_der_Dunkelheit__Settingoption__R3j1CjXJckUH0CBG.json b/packs/special-creature-abilities/Wesen_der_Dunkelheit__Settingoption__R3j1CjXJckUH0CBG.json new file mode 100644 index 00000000..e5ac40b7 --- /dev/null +++ b/packs/special-creature-abilities/Wesen_der_Dunkelheit__Settingoption__R3j1CjXJckUH0CBG.json @@ -0,0 +1,28 @@ +{ + "_id": "R3j1CjXJckUH0CBG", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342064, + "modifiedTime": 1740227862508, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!R3j1CjXJckUH0CBG" +} diff --git a/packs/special-creature-abilities/Wesen_des_Lichts__Settingoption__KDDlwN9as9B4ljeA.json b/packs/special-creature-abilities/Wesen_des_Lichts__Settingoption__KDDlwN9as9B4ljeA.json new file mode 100644 index 00000000..328e04eb --- /dev/null +++ b/packs/special-creature-abilities/Wesen_des_Lichts__Settingoption__KDDlwN9as9B4ljeA.json @@ -0,0 +1,28 @@ +{ + "_id": "KDDlwN9as9B4ljeA", + "name": "Wesen des Lichts (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342057, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KDDlwN9as9B4ljeA" +} diff --git a/packs/special-creature-abilities/Zerstampfen_02QMKm8MHzz8yAxL.json b/packs/special-creature-abilities/Zerstampfen_02QMKm8MHzz8yAxL.json new file mode 100644 index 00000000..3b2d11b0 --- /dev/null +++ b/packs/special-creature-abilities/Zerstampfen_02QMKm8MHzz8yAxL.json @@ -0,0 +1,28 @@ +{ + "_id": "02QMKm8MHzz8yAxL", + "name": "Zerstampfen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995341991, + "modifiedTime": 1740227862503, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!02QMKm8MHzz8yAxL" +} diff --git a/packs/spells.json b/packs/spells.json deleted file mode 100644 index 635be58e..00000000 --- a/packs/spells.json +++ /dev/null @@ -1,5033 +0,0 @@ -[ - { - "name": "Verteidigung", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis der Zauberwirker in der nächsten Kampfrunde wieder an der Reihe ist.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "1", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": 4, - "sorcerer": 4 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/templar-shield.svg", - "effects": [], - "_id": "0Jp3WM3Aba8VKcrb" - }, - { - "name": "Schutzschild stärken", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Verdoppelt den Bonus auf die Abwehr eines Schutzschild-Zaubers, der bereits auf das Ziel wirkt.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 4, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/diamond-hard.svg", - "effects": [], - "_id": "0O56S0JDXi2y71Pu" - }, - { - "name": "Lichtlanze", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dies ist eine mächtigere Variante des Zaubers Lichtpfeil, gegen dessen Schaden Wesen der Dunkelheit einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent Diener der Dunkelheit können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "5", - "spellCategory": "light", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "custom" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "1", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 10, - "wizard": 12, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/sun-spear.svg", - "effects": [], - "_id": "1b32mq9AWEMuoBAs" - }, - { - "name": "Halt", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Bei Erfolg kann sich das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, nicht mehr bewegen.
Die Starre endet vorzeitig, sollte das Ziel Schaden erhalten. Während der Starre ist es dem Ziel möglich, die Augen zu bewegen, zu atmen und klar zu denken. Ein erstarrter Zauberwirker könnte also immer noch seine Zauber wechseln oder gar versuchen, ohne Worte und Gesten (DS4 S. 47) einen Zauber zu wagen.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(KÖR+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 2, - "wizard": 6, - "sorcerer": 6 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/skoll/halt.svg", - "effects": [], - "_id": "1hhpEYpQQ0oLNptl" - }, - { - "name": "Erdspalt", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Auf festem Boden öffnet der Zauber einen Erdspalt. Der Erdspalt ist bis zu VE in Meter breit und VE/2 in Metern lang und tief. Stehen Wesen an der Stelle, unter der der Erdspalt erscheint, können sie mit AGI+BE augenblicklich versuchen, noch in Sicherheit zu springen (zählt als freie Aktion). Wesen, die sich in der Erdspalte befinden, wenn diese sich wieder schließt, erhalten augenblicklich 2W20 nicht abwehrbaren Schaden und sind - ohne noch richtig atmen zu können - eingeschlossen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-4", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 10, - "wizard": 10, - "sorcerer": 14 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/earth-spit.svg", - "effects": [], - "_id": "4R2OiLe4Ojht69Ea" - }, - { - "name": "Heilende Strahlen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Lichtstrahlen schießen vom Heiler aus und heilen die Wunden von bis zu VE/2 Gefährten, die Lebenskraft in Höhe des Probenergebnisses dazu erhalten. Es wird nur eine Probe für diesen Zielzauber gewürfelt: Einzig der Distanzmalus (siehe Seite 43) des Ziels, das am weitesten entfernt steht, wird als Malus gewertet.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "0", - "spellCategory": "healing", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "2", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 12, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/sinusoidal-beam.svg", - "effects": [], - "_id": "4StILfq4zNUWBAgz" - }, - { - "name": "Verwandlung", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker nimmt das Aussehen einer anderen Person an, die seinem Volk angehören und gleichen Geschlechts sein muss.

\n

Handelt es sich um eine bestimmte Person, die der Charakter jedoch nur flüchtig oder aus der Ferne kennt, können ihm Fehler unterlaufen, wodurch Bekannte der Zielperson mit einer Bemerken-Probe den Zauber durchschauen können.

\n

Untote Wesen u.ä. kann man mit diesem rein optischen Effekt nicht täuschen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb./2", - "unit": "hours" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/ghost-ally.svg", - "effects": [], - "_id": "4Wlx1LdkUK3BYctJ" - }, - { - "name": "Flackern", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Der Zauberwirker beginnt zu flackern und ist dadurch schwieriger zu treffen. Seine Abwehr wird für die Dauer des Zaubers um seinen halbierten Wert in GEI erhöht (nur nicht gegen alles einhüllenden Flächenschaden).

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 2, - "wizard": 4, - "sorcerer": 4 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/duality.svg", - "effects": [], - "_id": "5RUGIWTftCyeJkDQ" - }, - { - "name": "Schatten", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dunkle Schatten umhüllen das Ziel (welches keine Abwehr dagegen würfeln darf), wodurch es -8 auf alle Handlungen hat, bei denen es besser sehen können sollte.Augenlosen Untoten, wie beispielsweise Skeletten, aber auch blinden Lebewesen, kann der Zauber nichts anhaben.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(AGI+AU)/2 des Ziels", - "spellCategory": "darkness", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb./2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "5", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 2 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/shadow-follower.svg", - "effects": [], - "_id": "5mF59XCsZffF0cSp" - }, - { - "name": "Lichtsäule", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dies ist eine mächtigere Variante des Zaubers Lichtlanze, gegen dessen Schaden Wesen der Dunkelheit ebenfalls einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent Diener der Dunkelheit können diesen Zauber nicht anwenden.

\n

Charaktere mit dem Talent Vergeltung addieren ihren Talentrang auf den PW der Zielzaubern-Probe der Lichtsäule.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "8", - "spellCategory": "light", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "1", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 16, - "wizard": 19, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/laser-precision.svg", - "effects": [], - "_id": "6bptWPrq5gkX2UaT" - }, - { - "name": "Netz", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Ein Netz aus klebriger Astralmasse mit einem Radius von VE/2 in Metern erscheint.
Vom Netz getroffene Wesen, welche keine Abwehr dagegen würfeln dürfen, halbieren für die Dauer des Zaubers Initiative, Laufen und Schlagen.

\n

Der Zauber wirkt nicht gegen Wesen, die 2+ Größenkategorien (DS4 S. 104) größer sind.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(AGI+ST)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb./2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 4, - "wizard": 9, - "sorcerer": 9 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/spider-web.svg", - "effects": [], - "_id": "73bT47FtQgPp9Snq" - }, - { - "name": "Wächter", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Ein magischer Wächter alarmiert bzw. weckt den Zauberwirker, sobald ein Wesen sich bis auf VE x 2 Meter oder weniger dem Zielpunkt nähert.

\n

Dies gilt nicht für Wesen, die sich während des Zaubervorgangs bereits in diesem Bereich aufhielten.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 4, - "wizard": 6, - "sorcerer": 5 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/static-guard.svg", - "effects": [], - "_id": "7HCeOPLYvb1SQxcV" - }, - { - "name": "Wandöffnung", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Der Zauberwirker öffnet ein kreisrundes Loch von 1m Durchmesser in einer bis zu VE x 10 cm dicken, nichtmagischen Steinwand.

\n

Nach Ablauf des Zaubers verschwindet das Loch ohne Spuren zu hinterlassen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb./2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 14 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/hole.svg", - "effects": [], - "_id": "7foZzrxZuX0dCh3C" - }, - { - "name": "Feuerwand", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Der Zauberwirker lässt eine Feuerwand erscheinen, die Ausmaße von maximal 1m x VE m x VE m annehmen kann. Wesen, die an der Stelle stehen, wo die Feuerwand erscheint, oder durch sie hindurch springen, erhalten 2W20 abwehrbaren Schaden.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "fire", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 8, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/firewall.svg", - "effects": [], - "_id": "7yYxjxuGjTo29r10" - }, - { - "name": "Flammeninferno", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Eine kreisrunde Fläche mit einem Radius von VE in Metern geht in Flammen auf. Jeder in dem Inferno erhält pro Kampfrunde nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "5", - "spellCategory": "fire", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 15 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-wave.svg", - "effects": [], - "_id": "7ybmodIkWDP1z1D6" - }, - { - "name": "Volksgestalt", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Bis zu VE einwilligende, humanoide Ziele (zu denen natürlich auch der Zauberwirker selbst gehören kann) in Reichweite werden in die Gestalt eines anderen humanoiden Volkes der gleichen Größenkategorie (DS4 S. 104) verwandelt (nicht jedoch seine Ausrüstung).

\n

Beispielsweise könnte man einen Menschen in einen Ork oder sogar in einen uralten Zwerg verwandeln.

\n

Der Charakter behält dabei all seine Fähigkeiten und erhält umgekehrt auch keine Fähigkeiten des Volkes, in das er verwandelt wurde.

\n

Während die Stimme sich dem neuen Volk anpasst, erinnern Augen und Gesichtzüge weiterhin an die eigentliche Gestalt des verwandelten Charakters.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-4", - "spellCategory": "unset", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "hours" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 5 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/relationship-bounds.svg", - "effects": [], - "_id": "8Y5rUQhP8XCQM9xL" - }, - { - "name": "Glühender Glaube", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Die berührte Waffe - das Ziel des Zaubers - erglüht vor heiliger Kraft. Für die Wirkungsdauer des Zaubers gilt der mit der Waffe verursachte Schaden als magisch und der WB wird um VE/2 erhöht, während die Abwehr getroffener Gegner gegen Angriffe mit dieser Waffe um VE/2 gesenkt wird.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "light", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 6, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/glowing-hands.svg", - "effects": [], - "_id": "919AW6tITRT8WikD" - }, - { - "name": "Heilendes Licht", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Ein vom Heiler ausgehender Lichtstrahl heilt die Lebenskraft des Ziels in Höhe des Probenergebnisses.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "2", - "spellCategory": "healing", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "2", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 4, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/sunbeams.svg", - "effects": [], - "_id": "9VLNUomSaxPTdfZY" - }, - { - "name": "Kontrollieren", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Bei Erfolg bringt der Zauberwirker eine maximale Anzahl untoter Ziele gleich seiner Stufe unter Kontrolle, selbst wenn diese einem anderen Zauberwirker unterstehen.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche durch den Zauber betroffen sind. Alternativ kann auch ein einzelner Untoter als Ziel bestimmt werden.

\n

Kontrollierte Untote unterstehen dem Zauberwirker, führen bedingungslos seine Befehle aus und können nur auf Wunsch des Zauberwirkers wieder ihren Frieden finden, oder wenn dieser stirbt.

\n

Ein Zauberwirker kann nicht mehr Untote gleichzeitig kontrollieren, als seine eigene Stufe beträgt.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(GEI+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis erlöst", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 8, - "sorcerer": 4 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/cathelineau/fomorian.svg", - "effects": [], - "_id": "9gc1CF70165NXymH" - }, - { - "name": "Duftnote", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Ziel wird vom Zauberwirker mit einem Duft versehen.

\n

Dieser Geruch kann angenehm oder unangenehm sein und erleichtert bzw. erschwert sämtliche sozialen Proben des Ziels für die Wirkungsdauer um 2.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": 1, - "sorcerer": 2 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/fragrance.svg", - "effects": [], - "_id": "A9c19uUSIH4kvvHS" - }, - { - "name": "Teleport", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauber teleportiert den Zauberwirker und bis zu VE Begleiter an einen ihm bekannten Ort. War der Zauberwirker nur einmal dort und kennt ihn nur flüchtig, wird der PW der Zaubern-Probe halbiert. Bei einem Teleport-Patzer erscheinen die Charaktere in einem Objekt (zu tief im Boden, ein naher Baum) und erhalten W20 nicht abwehrbaren Schaden (2W20, wenn der Ort nur flüchtig bekannt ist).

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-1 pro Begleiter", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 20, - "wizard": 10, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/teleport.svg", - "effects": [], - "_id": "ANV77WNlbZFRMssv" - }, - { - "name": "Magische Waffe", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauber verleiht einer Waffe magische Kräfte. Ihr WB erhöht sich für die Dauer des Zauber um +1 und der mit ihr verursachte Schaden gilt als magisch, verletzt beispielsweise also auch körperlose Wesen wie Geister.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "1", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": 1, - "sorcerer": 1 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/pointy-sword.svg", - "effects": [], - "_id": "ASvdS1fyjmRS1Xb6" - }, - { - "name": "Feueratem", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Aus dem Mund des Zauberwirkers schießt eine lodernde Säule, die alle hintereinander stehenden Gegner in einer 1m breiten, geraden Schneise in Flammen hüllt. Der feurige Atem verursacht nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "3", - "spellCategory": "fire", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-breath.svg", - "effects": [], - "_id": "AyTRXMB9PBeVsmus" - }, - { - "name": "Zeitstop", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker hält die Zeit an, bis die Zauberdauer endet oder er Schaden verursacht bzw. selber erleidet.

\n

Andere Objekte und Lebewesen können nicht bewegt werden - sie sind starr in der Zeit eingefroren.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-5", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "W20", - "unit": "days" - }, - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 20 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/time-trap.svg", - "effects": [], - "_id": "BGnY1p1qZXwpzXFA" - }, - { - "name": "Tarnender Nebel", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Eine Nebelwolke mit einem Radius von maximal VE in Metern entsteht.

\n

Angriffe gegen Ziele in der Nebelwolke werden um 8 erschwert, gleichsam erhalten alle innerhalb des Nebels -8 auf alle Proben, bei denen man besser sehen können sollte.Eine Nebelwolke kann durch Wind bewegt oder gar auseinander geweht werden.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 4, - "sorcerer": 3 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/fog.svg", - "effects": [], - "_id": "BdBUObZr9RahUqxA" - }, - { - "name": "Einschläfern", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u.ä. erwachen kann.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(KÖR+VE)/2 des jeweiligen Ziels", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 2, - "wizard": 5, - "sorcerer": 5 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", - "effects": [], - "_id": "CrZ8L7oaWvPjLou0" - }, - { - "name": "Wechselzauber", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Präpariert einen Zauberspruch des Zauberwirkers, um einmalig aktionsfrei zu diesem zu wechseln.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 12, - "wizard": 10, - "sorcerer": 12 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/magick-trick.svg", - "effects": [], - "_id": "DNplbUwfxszg5UbZ" - }, - { - "name": "Stoßgebet", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Eine Druckwelle heiliger Macht schießt aus dem Heiler und bringt Gegner in einem Radius gleich seiner doppelten Stufe in Metern zu Fall.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(KÖR+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 5, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/kneeling.svg", - "effects": [], - "_id": "DPFRVvfvmhCfcm7E" - }, - { - "name": "Fluch", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Der Zauberwirker benötigt etwas vom Ziel in seinem Besitz, wie beispielsweise ein Haar, ein Kleidungsstück o.ä., das beim Zaubern - ob erfolgreich oder nicht - zerstört wird. Das Ziel wird verflucht und erhält auf alle Proben -2, bis die Zauberdauer verstrichen ist oder der Fluch mittels Magie bannen schon vorher entfernt wird.
Ein Ziel kann mehrmals verflucht werden. Alle Flüche müssen einzeln gebannt werden, stammen sie nicht vom selben Zauberwirker.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "- (GEI+AU)/2 des Ziel", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "days" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 2 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/voodoo-doll.svg", - "effects": [], - "_id": "DjvQzdWEmm8h7G4X" - }, - { - "name": "Unsichtbarkeit", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

\n

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 20, - "wizard": 12, - "sorcerer": 12 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", - "effects": [], - "_id": "EXqdD6yddQ4c0zAw" - }, - { - "name": "Heilende Hand", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Durch Hand auflegen wird bei dem Ziel Lebenskraft in Höhe des Probenergebnisses geheilt.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "1", - "spellCategory": "healing", - "maxDistance": { - "value": "Berührung", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "custom" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/sbed/health-normal.svg", - "effects": [], - "_id": "FJE2X2GXFDs9LT7J" - }, - { - "name": "Blut kochen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Blut des Ziels beginnt auf magische Art und Weise zu kochen, ohne dass es gerinnt.

\n

Der innerlich wirkende Schaden entspricht dem doppelten Probenergebnis, das Ziel würfelt seine Abwehr ohne die Panzerungsboni seiner Gegenstände.

\n

Der Zauber ist gegen Wesen ohne Blut - wie  beispielsweise viele Untote - nicht einsetzbar.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(KÖR+AU)/2 des Ziels", - "spellCategory": "darkness", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 17, - "sorcerer": 13 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/skoll/blood.svg", - "effects": [], - "_id": "GPaDrKIFw2kjzryU" - }, - { - "name": "Frostwaffe", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Der Zauberwirker kann eine Waffe in eisige Kälte hüllen. Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch. Ein Immersieg bei einem Angriff friert den Gegner für eine Kampfrunde lang ein, als wirke auf ihn der Zauber Halt. Frostwaffe ist nicht mit Flammenklinge kombinierbar.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "0", - "spellCategory": "ice", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 4, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/sparkling-sabre.svg", - "effects": [], - "_id": "Gc5G9kixOqNbuwp1" - }, - { - "name": "Tiere besänftigen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Aggressive Tiere im Wirkungsradius können mit diesem Zauber besänftigt werden. Magische Wesen (wie beispielsweise Einhörner oder Unwölfe) sind gegen den Zauber immun, ebenso Tiere, die unter einem Kontrollzauber wie Tierbeherrschungo.ä. stehen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-LK/5 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 1, - "wizard": 7, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/paw-heart.svg", - "effects": [], - "_id": "GpdYH1BAO4tIf6Fj" - }, - { - "name": "Heilendes Feld", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Dieser Zauber heilt bei allen Gefährten im Wirkungsradius die Lebenskraft um das Probenergebnis.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "2", - "spellCategory": "healing", - "maxDistance": { - "value": "", - "unit": "custom" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 18, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/chained-heart.svg", - "effects": [], - "_id": "HWjB5kPr3AZbFOFZ" - }, - { - "name": "Verkleinern", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das freiwillige Ziel - samt seiner Ausrüstung - wird auf ein Zehntel seiner Körpergröße verkleinert.Charaktere nehmen die Größenkategorie “winzig” (DS4 S. 104) an.

\n

Für die Dauer des Zauberspruchs werden KÖR, ST und HÄ halbiert und Laufen durch 10 geteilt.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-4", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/contract.svg", - "effects": [], - "_id": "ITWKevUdrtyBHjgR" - }, - { - "name": "Blenden", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Ein gleißender Lichtstrahl schießt aus der Hand des Zauberwirkers und blendet bei Erfolg das Ziel  (welches dagegen keine Abwehr würfeln darf).

\n

Ein geblendetes Ziel hat -8 auf alle Handlungen, bei denen es sehen können sollte.

\n

Selbst augenlose Untote, wie beispielsweise Skelette, werden durch das magische Licht geblendet. Blinde Lebewesen sind dagegen nicht betroffen.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(AGI+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "5", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": 5, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/laser-sparks.svg", - "effects": [], - "_id": "JldAx8a91vVO2wUf" - }, - { - "name": "Manabrot", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker bündelt die magische Energien um sich herum und erschafft daraus warmes, aber geschmackloses Manabrot.
Maximal kann der Zauberwirker eine Anzahl von Manabrot gleich seiner halbierten Stufe erschaffen. Jeder der blau-violetten, teigähnlichen Klumpen, entspricht einer ganzen Mahlzeit (von denen ein Erwachsener 3 pro Tag benötigt) für eine Person.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 5 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/sliced-bread.svg", - "effects": [], - "_id": "JvK5b8DXdHgaByjP" - }, - { - "name": "Stolpern", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, stürzt augenblicklich zu Boden.

\n

Misslingt ihm außerdem eine Probe auf AGI+GE, lässt er alles Gehaltene fallen.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(AGI+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 4, - "sorcerer": 3 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/tripwire.svg", - "effects": [], - "_id": "KIyVOdiXZnXJIAh6" - }, - { - "name": "Spurt", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Laufen-Wert des Ziels wird für die Dauer des Zaubers verdoppelt.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 7, - "wizard": 7, - "sorcerer": 7 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/run.svg", - "effects": [], - "_id": "KUbT1gBeThcLY7vU" - }, - { - "name": "Magische Barriere", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker erschafft ein unbewegliches, würfelförmiges Kraftfeld mit einer Größe von maximal VE/2 m³, welches sämtliche Magie- und Zaubersprucheffekte nach innen und außen hin komplett abblockt. Weder Feuerbälle, noch Lauschen- oder Teleport-Zauber können diese magische Barriere durchbrechen.
Die magische Barriere verschwindet, sofern der Zauerwirker sie nicht - nach Ablauf der Spruchdauer - durch ununterbrochene Konzentration (zählt als ganze Aktion) aufrecht erhält.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE min oder Konzentration", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 14, - "wizard": 10, - "sorcerer": 12 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/stone-wall.svg", - "effects": [], - "_id": "KhmJCaFuP7Tgdw7q" - }, - { - "name": "Licht", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das berührte, leblose Ziel - beipielsweise ein Stab oder eine kleine, abdeckbare Münze - leuchtet fackelhell auf.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "5", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": 1, - "sorcerer": 5 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/explosion-rays.svg", - "effects": [], - "_id": "L4pdDXSYAOgtWIbd" - }, - { - "name": "Springen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker springt augenblicklich bis zu Probenergebnis/2 Meter weit und landet dabei wieder sicher auf seinen Beinen. Alternativ kann man auch hoch oder runter springen, beispielsweise um einen Balkon zu erreichen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 5, - "wizard": 2, - "sorcerer": 3 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", - "effects": [], - "_id": "L6NrH3AEmS2I3NWG" - }, - { - "name": "Ebenentor", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Öffnet ein Tor zu einer anderen Existenzebene, die der Zauberwirker namentlich nennen muss. Das Tor  schließt sich, sobald VE/2 Wesen es durchschritten haben, oder die Spruchdauer abgelaufen ist.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-8", - "spellCategory": "unset", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "W20", - "unit": "days" - }, - "minimumLevels": { - "healer": null, - "wizard": 18, - "sorcerer": 16 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/magic-portal.svg", - "effects": [], - "_id": "MKlGqhjQa3GZu4gq" - }, - { - "name": "Geben und Nehmen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Das Ziel des Zaubers erhält 50% des Schadens, den es per Schlagen im Nahkampf verursacht (also abzüglich des Abwehrwurfs des Gegners), in Form von heilender Magie auf die eigene Lebenskraft gutgeschrieben.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "healing", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "5", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 4, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/heart-inside.svg", - "effects": [], - "_id": "MpqPWr2l8qV4oQyL" - }, - { - "name": "Steinwand", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker erschafft eine Steinwand, die Ausmaße von bis zu 1m x VE m x VE m annehmen kann und nicht wieder verschwindet.
Die Steinwand muss auf festen Boden stehen und kann nicht an einem Ort erscheinen, wo sich bereits etwas befindet.

\n

Die Steinwand hat eine Abwehr gleich der dreifachen Stufe des Zauberwirkers, für den Fall, dass jemand sie mit Gewalt durchdringen will. Jeder einzelne Kubikmeter der Steinwand verfügt über LK in Höhe der Stufe des Zauberwirkers.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 14 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/brick-wall.svg", - "effects": [], - "_id": "NRfYtF7tFoNMe1cR" - }, - { - "name": "Schutzfeld", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Ein Schutzfeld mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, an dem nichtmagische Geschosse von außen her wirkungslos abprallen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 4, - "wizard": 8, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/omega.svg", - "effects": [], - "_id": "NWPoiZHCmZ7ZJud4" - }, - { - "name": "Freund", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Bei Erfolg hält das Ziel den Zauberwirker (und nur ihn!) für einen sehr guten Freund.
Das Ziel wird ihm alles anvertrauen, was er auch einem sehr guten Freund verraten würde und alles für ihn machen, was er auch für einen guten Freund tun würde.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(GEI+VE)/2 des Ziels", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 6, - "wizard": 7, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/lovers.svg", - "effects": [], - "_id": "NcK7zXn0IeCfqjkl" - }, - { - "name": "Fliegen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Das Ziel kann fliegen. Die Fortbewegungsgeschwindigkeit ist im Flug doppelt so hoch wie am Boden (zusätzlich kann man sie wie beim “Rennen” verdoppeln). Ein Charakter mit Laufen 4,5m fliegt also 9m in einer Kampfrunde, “rennend” 18m.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 5", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 20, - "wizard": 10, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/hand-wing.svg", - "effects": [], - "_id": "NwLeietvcarS6zP5" - }, - { - "name": "Giftbann", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Neutralisiert augenblicklich ein nichtmagisches Gift, sofern es noch nicht zu spät ist.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 3, - "wizard": 6, - "sorcerer": 12 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/foamy-disc.svg", - "effects": [], - "_id": "ONhSaLNmvvacgCjA" - }, - { - "name": "Wahnsinn", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Das Ziel des Zaubers wird auf der Stelle wahnsinnig und zu einem sabbernden Schwachsinnigen, dessen Geist fortan auf 0 gesenkt ist.
Nur der Zauberspruch Allheilungkann diesen Effekt bannen, wofür pro wiederherzustellenden Punkt in GEI der Spruch jeweils einmal auf das Ziel angewendet werden muss.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(GEI+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "W20", - "unit": "days" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 15 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/mad-scientist.svg", - "effects": [], - "_id": "OODDFguw5Y113ywm" - }, - { - "name": "Vertreiben", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Vertreibt eine Anzahl von Untoten im Wirkungsbereich gleich der halbierten Stufe des Zauberwirkers.

\n

Für die Dauer der Vertreibung ziehen sich die Untoten so schnell wie möglich von dem Zauberwirker zurück bis auf eine Distanz von Probenergebnis x 5m.

\n

Bis zum Ablauf des Zaubers können die Untoten niemanden in seinem Wirkungsbereich angreifen.

\n

Der Effekt endet bei jedem Untoten, der Schaden erleidet.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche betroffen sind. Alternativ kann auch ein bestimmter Untoter als Ziel der Vertreibung bestimmt werden.

\n

Wird beim Vertreiben ein Immersieg gewürfelt, erhalten die betroffenen Untoten zusätzlichen abwehrbaren Schaden in der tatsächlichen Höhe des Immersiegs.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(KÖR+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb./2", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/chalk-outline-murder.svg", - "effects": [], - "_id": "QVcmtKpmT5HzIwur" - }, - { - "name": "Balancieren", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Ziel kann absolut sicher mit seinem reinen Laufen-Wert über dünne Seile u.ä. balancieren.

\n

Sobald der Zauber gewirkt wurde, gilt der Balancieren-Effekt und endet, nachdem der Charakter eine Strecke in Höhe des eigenen, doppelten Laufen- Wertes in Metern zurückgelegt hat.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis Strecke zurückgelegt", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 2, - "wizard": 3, - "sorcerer": 6 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/tightrope.svg", - "effects": [], - "_id": "QZW2p3k9uGuYKCbN" - }, - { - "name": "Feuerlanze", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Dies ist eine mächtigere Variante des Zaubers Feuerstrahl.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "2", - "spellCategory": "fire", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 5 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-ray.svg", - "effects": [], - "_id": "QuuHhHmliyC5N55q" - }, - { - "name": "Heiliger Hammer", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Ein Hammer aus hellem Licht erscheint innerhalb eines Radius von VE in Metern um den Heiler herum. Innerhalb dieses Wirkungsbereiches kämpft er völlig selbstständig, hört jedoch auf gedankliche Kampfkommandos des Zauberwirkers wie „Halte den Dämon auf“ oder „Helfe dem Paladin“.
Bewegt sich der Charakter, wandert der Wirkungsbereich des Hammers mit ihm mit, so dass die heilige Waffe niemals mehr als VE x 2 in Metern von ihm entfernt sein kann. Der heilige Hammer verschwindet, sobald seine (nicht heilbaren) LK auf Null oder niedriger sinken bzw. die Zauberdauer abgelaufen ist.
Sämtliche Kampfwerte des heiligen Hammers entsprechen der Stufe des Heilers +8. Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Heilers entspricht.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "light", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 10, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/hammer-drop.svg", - "effects": [], - "_id": "QzcgykKQKztABe2a" - }, - { - "name": "Schattenklinge", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Die verzauberte Klinge verströmt rauchartige Schatten voll dunkler Magie.Die folgenden Effekte gelten nur, wenn ein Charakter mit dem Talent Diener der Dunkelheit die Waffe benutzt:
Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch. Jedesmal, wenn mit der Waffe Schaden verursacht wird, sinkt die Abwehr des Ziels um 1. Dieser Effekt endet, wenn die Zauberdauer abgelaufen ist.
Schattenklinge ist nicht mit Flammenklinge, Frostwaffe, Glühender Glaube oder Waffe des Lichts kombinierbar.
Charaktere mit dem Talent Diener des Lichts können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "0", - "spellCategory": "darkness", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 8, - "sorcerer": 7 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/blade-fall.svg", - "effects": [], - "_id": "RUfE7hqqHCKMEMbh" - }, - { - "name": "Schweben", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Ziel kann statt zu laufen auch lotrecht hoch und runter schweben.

\n

Der Laufen-Wert beim Schweben ist dabei genau so hoch, wie am Boden (man kann im Schweben nicht rennen).

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "custom" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 7, - "wizard": 5, - "sorcerer": 5 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/angel-wings.svg", - "effects": [], - "_id": "SPnYNGggFb8XRICE" - }, - { - "name": "Versetzte Stimme", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker kann das von ihm Gesagte an einen bis zu VE x 10 Meter entfernten Punkt verlagern (eine klare Sichtlinie vorausgesetzt).
Dieser Punkt kann eine freie Stelle im Raum sein oder auch ein Kleidungsstück einer Person.
Jeder in Hörweite dieses Punktes kann den Zauberwirker hören
.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-1 pro 10 Meter Entfernung", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 2, - "sorcerer": 3 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/lips.svg", - "effects": [], - "_id": "SaLY0K9FQRb1TQoQ" - }, - { - "name": "Blitz", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind. Gegner in Metallrüstung dürfen keine Abwehr gegen Blitze würfeln.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "3", - "spellCategory": "electricity", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "1", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 10, - "wizard": 7, - "sorcerer": 7 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/bolt-spell-cast.svg", - "effects": [], - "_id": "Senq5ub2Cx0agJgi" - }, - { - "name": "Terror", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Bei Erfolg fliehen betroffene Ziele - maximal eine Anzahl gleich der Stufe des Zauberwirkers - so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren.

\n

Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(GEI+VE)/2 des Ziels", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 5, - "wizard": 9, - "sorcerer": 7 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/terror.svg", - "effects": [], - "_id": "SgDFje4OTxqPEzoA" - }, - { - "name": "Wasser weihen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Berührtes, reines Wasser wird zu heiligem Weihwasser (siehe Kasten). Bei jeder Anwendung des Zaubers stellt der Heiler eine Anzahl an Weihwassereinheiten (etwa 1/2 Liter) gleich dem halbierten Probenergebnis her, genügend “normales” Wasser als Rohstoff vorausgesetzt.

\n

 

\n
\n
Weihwasser
\n

Weihwasser verursacht gegen Dämonen und Untote nicht abwehrbaren Schaden. Jede Einheit Weihwasser hat einen anderen Angriffswert, der mit W20 ermittelt wird. Dieser Wert wird erst ausgewürfelt, wenn das Weihwasser den Dämonen bzw. Untoten trifft, es sei denn, es wird vorher in Bezug auf seinen Schadenswert von einem Zauberwirker mit GEI+AU, gefolgt von GEI+VE, erfolgreich analysiert.

Eine Weihwassereinheit kann man auf eine Waffe/ein Geschoss auftragen (benötigt 1 Aktion) und dann einen normalen Angriff mit Schlagen bzw. Schießen würfeln. Ist dieser erfolgreich, wird bei Dämonen und Untoten neben dem normalen Schaden auch noch ein Angriff für das Weihwasser gewürfelt, der nicht abwehrbaren Schaden verursacht. Nach dem ersten Treffer ist die Einheit Weihwasser aufgebraucht.

Alternativ kann man Weihwassereinheiten in zerbrechliche Phiolen (WB+0; 2GM) füllen und diese im Nah- oder Fernkampf gegen Dämonen und Untote einsetzen, wobei die zerbrechlichen Gefäße zerspringen. In solchen Fällen verursacht nur das Weihwasser Schaden, nicht die Schießen-Probe.

Weihwasser kann außerdem dazu benutzt werden, in schützenden Linien oder Kreisen (1m pro Einheit) auf den Boden geschüttet zu werden, um für eine gewisse Zeit Dämonen bzw. Untote aufzuhalten, die das Weihwasser nicht passieren können.

\n
\n
", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 1, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/holy-water.svg", - "effects": [], - "_id": "TKkpNdYo6cbFq7Pt" - }, - { - "name": "Schutzkuppel", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Eine Schutzkuppel mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, solange er sich konzentriert (zählt als ganze Aktion).

\n

Die unbewegliche Kuppel ist von beiden Seiten unpassierbar - weder Angriffe, Personen noch Zauber wie Teleport gelangen hindurch.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Konzentration", - "unit": "custom" - }, - "cooldownDuration": { - "value": "W20", - "unit": "days" - }, - "minimumLevels": { - "healer": 8, - "wizard": 12, - "sorcerer": 12 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/shiny-omega.svg", - "effects": [], - "_id": "TKx3LO5ZWQuKpK04" - }, - { - "name": "Tierbeherschung", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Bei Erfolg wird das Tier zu einem willenlosen Sklaven des Zauberwirkers. Es befolgt alle seine einsilbigen Befehle, auch wenn diese den eigenen Tod bedeuten können.

\n

Ein Zauberwirker kann niemals mehr als VE Tiere gleichzeitig durch diesen Zauber beherrschen.

\n

Endet der Zauber, nimmt das Tier wieder sein ursprüngliches Verhalten an.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-LK/2 des Ziels", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 9, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/charging-bull.svg", - "effects": [], - "_id": "TVsayZ3WkUxyzKbL" - }, - { - "name": "Zauberleiter", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Eine magische Leiter entsteht, die bis zu VE x Zauberwirkerstufe Meter hoch sein kann.

\n

Die Leiter steht fest im Raum und benötigt keinen Halt. Sie bleibt, solange der Zauberwirker sich ununterbrochen konzentriert (zählt als ganze Aktion).

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Konzentration", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 8, - "wizard": 4, - "sorcerer": 4 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/ladder.svg", - "effects": [], - "_id": "USNJNNF2jDaS6BDQ" - }, - { - "name": "Telekinese", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Mit diesem Zauber lässt der Zauberwirker einen unbelebten Gegenstand mit einer Geschwindigkeit von 1m pro Kampfrunde schweben, solange er sich ununterbrochen konzentriert (zählt als ganze Aktion).

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-1 pro (Stufe x 5) kg Gewicht", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Konzentration", - "unit": "custom" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/sbed/weight-crush.svg", - "effects": [], - "_id": "VGeMfTNSKWzNGm6r" - }, - { - "name": "Bannen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauber vernichtet feindliche Dämonen, Elementare und Untote im Wirkungsradius. Maximal wird eine Anzahl von Wesenheiten vernichtet, die der halbierten Stufe des Zauberwirkers entspricht. Bei zu vielen Wesenheiten entscheidet der Zufall, welche  betroffen sind. Alternativ können auch bestimmte, einzelne Wesenheiten als Ziel des Bannes bestimmt werden. Pro misslungenen Bannversuch steigt die Schwierigkeit um 2.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(KÖR+AU)/2 der Wesenheit", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "custom" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 8, - "wizard": 18, - "sorcerer": 14 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/magic-palm.svg", - "effects": [], - "_id": "VIRaUl51s1vnDHUt" - }, - { - "name": "Arkanes Schwert", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Ein Schwert aus hellem (oder je nach Belieben auch dunklem) Licht erscheint innerhalb eines Radius von VE in Metern um den Zauberwirker herum.

\n

Innerhalb  dieses  Wirkungsbereiches kämpft es völlig selbstständig, hört jedoch auf gedankliche Kampfkommandos seines Beschwöreres wie „Greif den großen Troll an“ oder „Schütze mich“.

\n

Bewegt sich der Zauberwirker, wandert der Wirkungsbereich des Schwertes mit ihm mit, so dass die magische Klinge niemals mehr als VE in Metern von ihm getrennt sein kann.
Das Schwert löst sich in seine arkanen Bestandteile auf, sobald seine (nicht heilbaren) LK auf Null oder niedriger sinken bzw. die Zauberdauer verstrichen ist.

\n

Sämtliche Kampfwerte des Schwertes entsprechen der Stufe des Zauberwirkers +10.
Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Zauberwirkers entspricht.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/sword-wound.svg", - "effects": [], - "_id": "VjvrapwDmBvGYmfj" - }, - { - "name": "Versetzen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das einwilligende Ziel wird bis zu Probenergebnis/2 Meter weit teleportiert, eine klare Sichtlinie vorausgesetzt.

\n

Reicht die ermittelte Entfernung nicht aus, um den Zielpunkt zu erreichen, wird der Charakter dennoch - so weit wie möglich - in dessen Richtung versetzt.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 10, - "wizard": 6, - "sorcerer": 6 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/body-swapping.svg", - "effects": [], - "_id": "WETUfLs0pbo1odAp" - }, - { - "name": "Lauschen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker kann sein Hörzentrum an einen bis zu VE x 5 Meter entfernten Punkt verlagern (eine klare Sichtlinie vorausgesetzt) und vernimmt dadurch alles, was dort zu hören ist, als würde er sich dort befinden.

\n

Dieser Punkt kann eine freie Stelle im Raum sein oder auch ein Kleidungsstück des Belauschten.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-1 pro 10m Entfernung", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 6, - "wizard": 2, - "sorcerer": 2 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/human-ear.svg", - "effects": [], - "_id": "WkZBOsMblhcrPRUF" - }, - { - "name": "Segen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker und bis zu VE x 2 Kameraden in VE x 2 Meter Umkreis werden gesegnet.
Für die Dauer des Zauberspruchs erhalten sie auf alle Proben einen PW-Bonus von +1.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 2, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/holy-hand-grenade.svg", - "effects": [], - "_id": "ZF5cwMCnw4Uf1MCz" - }, - { - "name": "Reinigen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauber reinigt eine ungewaschene Person, einen Gegenstand (wie einen schlammbesudelten Umhang) oder auch eine Mahlzeit (von Bakterien, Fäulnis und Gift).

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 3, - "wizard": 7, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/shower.svg", - "effects": [], - "_id": "ZXBYdYAtcs3FoTAx" - }, - { - "name": "Magische Rüstung", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Die Lebenskraft des Charakters erhöht sich um das Wurfergebnis. Erhält der Zauberwirker Schaden, kostet ihn das zuerst immer die (nicht heilbare) Lebenskraft der magischen Rüstung, bevor es an die eigene Lebenskraft geht. Die LK der magischen Rüstung bleiben erhalten, bis sie durch Schaden verloren sind, oder wenn der Charakter den Zauber abermals anwendet.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 4, - "wizard": 8, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-mail.svg", - "effects": [], - "_id": "ZdlsX5F803JJEat6" - }, - { - "name": "Wolke der Reue", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Eine unsichtbare Wolke der Reue mit einem Radius von maximal VE in Metern entsteht.

\n

Jeder Charakter innerhalb der Wolke empfindet ein unterschwelliges Schuldgefühl, wirkt leicht verunsichert und erhält dadurch -1 auf alle Proben.

\n

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": 6, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/tear-tracks.svg", - "effects": [], - "_id": "aDitBSXiHFI67zDZ" - }, - { - "name": "Körperexplosion", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauber versucht das Ziel zur Explosion zu bringen. Der verursachte Schaden entspricht dem vierfachen Probenergebnis, das Ziel würfelt Abwehr ohne Panzerungsboni von Gegenständen.

\n

Der Zauber ist gegen körperlose Wesen - wie beispielsweise Geister - nicht einsetzbar.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(KÖR+AU)/2 des Ziels", - "spellCategory": "darkness", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "W20", - "unit": "days" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 20 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/mine-explosion.svg", - "effects": [], - "_id": "apMuLg0knKnmC2Wv" - }, - { - "name": "Schattenlanze", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dies ist eine mächtigere Variante des Zaubers Schattenpfeil, gegen dessen Schaden Wesen des Lichts einen Malus von 2 auf ihre Abwehr erhalten.
Charaktere mit dem Talent Diener des Lichts können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "5", - "spellCategory": "darkness", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/spear-hook.svg", - "effects": [], - "_id": "b5RFJWPaYbpXNpsv" - }, - { - "name": "Skelette erwecken", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Schwarzmagier kann eine maximale Anzahl von Skeletten (DS4 S. 122) im Wirkungsradius gleich seiner eigenen Stufe zu untotem Leben erwecken. Die Skelette benötigen drei Kampfrunden, um sich zu erheben, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber Kontrollieren zu beherrschen. Charaktere mit dem Talent Diener des Lichts können den Zauber nicht anwenden.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 6 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/skoll/raise-skeleton.svg", - "effects": [], - "_id": "bGs9MiTMj6k4d1Nl" - }, - { - "name": "Schleudern", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Diese Zauberspruch, gegen den das Ziel keine Abwehr würfeln kann, schleudert das Ziel (Probenergebnis/3) Meter weit fort.

\n

Das Ziel erhält für die Distanz, die es geschleudert wird (auch wenn eine Wand den Flug bremst) Sturzschaden (DS4 S. 85), gegen den es ganz normal Abwehr würfelt.

\n

Nach dem Fortschleudern liegt das Ziel immer am Boden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(KÖR+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE/2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 16, - "wizard": 12, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/heavenly-dog/catapult.svg", - "effects": [], - "_id": "bKCGwIne0uoWZiY0" - }, - { - "name": "Niesanfall", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Bei Erfolg kann das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, sich vor lauter Niesen nur (mit halbierten Laufen-Wert) bewegen, bis der Spruchwirker wieder an der Reihe ist.

\n

Der Niesanfall endet vorzeitig, sollte das Ziel Schaden erhalten.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(KÖR+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "1", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": 3, - "sorcerer": 3 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/energy-breath.svg", - "effects": [], - "_id": "c9confMPTK2Q7AfX" - }, - { - "name": "Waffe des Lichts", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Die anvisierte Waffe erstrahlt mit der heiligen Kraft des Lichts.

\n

Die folgenden Effekte gelten nur, wenn ein Charakter mit dem Talent Diener des Lichts die Waffe benutzt:

\n

Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch.
Jedesmal, wenn mit der Waffe Schaden verursacht wird, erhöht sich die Abwehr des Waffenträgers um 1.

\n

Dieser Effekt endet, wenn die Zauberdauer abgelaufen ist oder der Charakter die Waffe fallen lässt.
Waffe des Lichts kann man nicht mit Flammenklinge, Frostwaffe oder Schattenklinge kombinieren.

\n

Charaktere mit dem Talent Diener der Dunkelheit können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "0", - "spellCategory": "light", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 7, - "wizard": 8, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/aspergillum.svg", - "effects": [], - "_id": "cggG4v6EBPmEZuAQ" - }, - { - "name": "Magie entdecken", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Scheitert ein Zauberwirker, die Magie einer Örtlichkeit, eines Objektes oder eines Wesen zu erspüren (DS4 S. 47), kann er sämtliche Magie im Wirkungsbreich - nur für ihn sichtbar - mit Hilfe dieses Zaubers für kurze Zeit aufleuchten sehen, sofern sie nicht verborgen ist (unter einem Umhang, in einer Truhe usw.).
Betrachtet man Zauberwirker, leuchten diese ebenfalls kurz auf, je heller, desto mächtiger ist die Magie in ihnen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": 1, - "sorcerer": 1 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/sparkles.svg", - "effects": [], - "_id": "d1PUhzL8wuBe3mTl" - }, - { - "name": "Schatten erwecken", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Schwarzmagier kann die Seelen von einer maximalen Anzahl von Toten im Wirkungsradius gleich seiner eigenen Stufe verderben und in Form tödlicher Schatten (DS4 S. 121) zu gequältem Unleben erwecken. Die Schatten benötigen drei Kampfrunden, um sich zu bilden, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber Kontrollieren zu beherrschen.
Charaktere mit dem Talent Diener des Lichts können den Zauber nicht anwenden.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "darkness", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 13 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/two-shadows.svg", - "effects": [], - "_id": "dPGm1Ji2U0fJxnT3" - }, - { - "name": "Schutzschild", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis die Dauer des Zaubers abgelaufen ist.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 4, - "wizard": 8, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/bell-shield.svg", - "effects": [], - "_id": "dpz383XbGFXEsGot" - }, - { - "name": "Kleiner Terror", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Bei Erfolg fliehen betroffene Ziele - maximal eine Anzahl gleich der halbierten Stufe des Zauberwirkers - so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren. Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(GEI+VE)/2 des Ziels", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "", - "unit": "custom" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 2, - "wizard": 6, - "sorcerer": 4 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/cathelineau/dread.svg", - "effects": [], - "_id": "dt2E4g7iwVqTSlMl" - }, - { - "name": "Wiederbelebung", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauber belebt einen Charakter, der nicht eines natürlichen Todes starb, wieder zum Leben mit 1LK.

\n

Das Ziel darf höchstens seit W20 Tagen tot sein und verliert bei der Wiederbelebung permanent 1 Punkt KÖR (DS4 S. 42).

\n

Charaktere mit KÖR 1 können folglich also nicht mehr mit Hilfe dieses Zauberspruchs wiederbelebt bleiben.

\n

Zu beachten ist, dass dieser Zauber keine besonderen Verletzungen heilt - beispielsweise sollte ein aufgeschlitzte Kehle oder ein zerstampfter Körper vor der Wiederbelebung mit dem Zauber Allheilung behandelt werden, um ein erneutes Ableben gleich nach der Wiederbelebung zu verhindern.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 10, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/heart-wings.svg", - "effects": [], - "_id": "duf86LKvOIyDXJbc" - }, - { - "name": "Magisches Schloss", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauber verschließt auf magische Weise eine Klappe, Truhe, Tür oder ähnliche Öffnung.
Das Probenergebnis stellt die Erschwernis dar, um dieses Schloss zu öffnen (ob nun mit einem Dietrich, roher Gewalt oder Magie), nur der Zauberwirker selbst kann es ohne Probleme öffnen.
Der Zauber kann auch auf ein mechanisches Schloss gesprochen werden, um dessen Schlosswert (SW) zu verstärken.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis Schloss geöffnet", - "unit": "custom" - }, - "cooldownDuration": { - "value": "5", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 3, - "wizard": 1, - "sorcerer": 1 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/padlock.svg", - "effects": [], - "_id": "dzYAc9ti7ghhkyiX" - }, - { - "name": "Rost", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauber lässt bei Erfolg eine nichtmagische Waffe oder ein nichtmagisches Rüstungsteil aus Metall augenblicklich zu rostisgen Staub zerfallen.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-WB der Waffe bzw. -PA der Rüstung", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 5, - "wizard": 7, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/rusty-sword.svg", - "effects": [], - "_id": "eMeuOnBODch7D9dm" - }, - { - "name": "Trugbild", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauber erschafft eine rein optische, unbewegliche Illusion, deren Ausmaße maximal VE/2 Kubikmeter betragen können. Die Illusion ist mit einer erfolgreichen Bemerken-Probe (DS4 S. 89) - abzüglich des halbierten Probenergebnisses der Trugbild Zaubern-Probe - durchschaubar.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE/2", - "unit": "hours" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 7 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/mirror-mirror.svg", - "effects": [], - "_id": "eMilydZd4gqDUsff" - }, - { - "name": "Durchsicht", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker kann durch nichtmagische, unbelebte Objekte VE/2 Meter weit sehen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-2", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 7, - "wizard": 3, - "sorcerer": 3 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/sunglasses.svg", - "effects": [], - "_id": "eNefaoD15JrT4ixR" - }, - { - "name": "Federgleich", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Das Ziel - samt seiner getragenen Ausrüstung - kann aus einer Höhe gleich dem doppelten Probenergebniss in Metern sanft wie ein Feder ungelenkt zu Boden gleiten (1m pro Kampfrunde).
Der federgleiche Fall muss spätestens 1 Minute, nachdem der Zauber gewirkt wurde, begonnen werden, sonst verfällt sein Effekt.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "1 Min & bis Distanz gefallen", - "unit": "custom" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 5, - "wizard": 3, - "sorcerer": 3 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/two-feathers.svg", - "effects": [], - "_id": "eYy2tF4LpHth18t6" - }, - { - "name": "Flammenklinge", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Der Zauberwirker kann eine Metallklinge in lodernde Flammen hüllen.Dabei handelt es sich um ein magisches Feuer, das keinen Sauerstoff benötigt und dessen Flammenfarbe der Zauberwirker frei bestimmen kann.
Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch.
Ein Immersieg bei einem Angriff erzeugt
eine kleine Explosion, wodurch der erwürfelte Schaden in dieser Kampfrunde um zusätzliche W20 erhöht wird.

\n

Flammenklinge ist nicht mit Frostwaffe kombinierbar.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "0", - "spellCategory": "fire", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 4, - "sorcerer": 4 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/shard-sword.svg", - "effects": [], - "_id": "gJ3Z8y7i6LWjSMKJ" - }, - { - "name": "Putzteufel", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker erschafft einen kleinen, magischen Diener, der für ihn unglaublich flink putzt, aufräumt und packt.
Ansonsten ist der Putzteufel völlig unütz, befolgt keine andersartigen Befehle und verpufft bei Schaden.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "bis zu VE/2", - "unit": "hours" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 5 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-broom.svg", - "effects": [], - "_id": "gLzyooEA8RBya37o" - }, - { - "name": "Kettenblitz", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Der Zauberwirker schießt einen Blitz auf einen Feind, der auf bis zu VE weitere Gegner in seiner Nähe überspringt. Nur Gegner, die 2 oder mehr Meter von einem ihrer getroffenen Mitstreiter entfernt stehen, kann der Kettenblitz nicht erreichen:

Getroffene Gegner in Metallrüstung dürfen keine Abwehr gegen einen Kettenblitz würfeln.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "3", - "spellCategory": "electricity", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "5", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 16, - "wizard": 10, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-lightning.svg", - "effects": [], - "_id": "gePnhgqnsmdEbj3Z" - }, - { - "name": "Elementar herbeirufen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Dieser Zauber ruft ein Elementar von seiner Ebene herbei und existiert in vier unterschiedlichen Varianten (Erde, Feuer, Luft und Wasser - jeweils ein einzelner Spruch). Alle Elementare (DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: “Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).”Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1-5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar:Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Feuer: Kerzenflamme bis FackelI
Feuer: LagerfeuerII
Feuer: Brand/LavaIII
Erde: Erdboden/Kiesel/SandI
Erde: Felsen/FindlingII
Erde: Steinhügel oder größerIII
Wasser: Pfütze/Regen/WassertonneI
Wasser: Brunnen/Teich/Weiher o.ä.II
Wasser: Fluss/Meer/SeeIII
Luft: Leichte Brise/Windiges WetterI
Luft: StürmischII
Luft: GewittersturmIII
Größe des Elementarportals
HB
Pro m² Feuer-/Lava-/Wasserfläche+1*
Pro m3 Erde/Gestein/Luft+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-Elementarstufe x 5", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 16 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", - "effects": [], - "_id": "hZeUW6DMdNx2qqNA" - }, - { - "name": "Heilbeeren", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Der Heiler benötigt frische Beeren, kleine Nüsse, schmackhafte Blätter o.ä. für diesen Zauber. Insgesamt wird von ihnen eine Anzahl gleich dem Probenergebnis (bei Druiden x 2) mit einem Heileffekt versehen: Jede Heilbeere heilt augenblicklich 1LK (pro Aktion können bis zu 10 Heilbeeren verzehrt werden). Die Heilbeeren verlieren nach VE Tagen ihre Wirkung, oder wenn der Heiler den Zauber erneut anwendet.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "healing", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 1, - "wizard": 10, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/cherry.svg", - "effects": [], - "_id": "htK3mzAMFbTwYRTR" - }, - { - "name": "Frostschock", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Ein Eisstrahl schießt aus den Händen des Zauberwirkers. Gegen den Schaden dieses frostigen Zauber ist keine Abwehr zulässig.

\n

Zudem wird das Ziel magisch eingefroren, bis VE Kampfrunden verstrichen sind oder es Schaden erhält.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "3", - "spellCategory": "ice", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 12, - "sorcerer": 16 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/frozen-body.svg", - "effects": [], - "_id": "iH2NtsJtMfG0ZAU3" - }, - { - "name": "Feuerball", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Der Zauberwirker schießt einen flammenden Ball auf seine Gegner, der in einer feurigen Explosion - ihr Radius entspricht der VE des Zauberwirkers in Metern - endet, welche nicht abwehrbaren Schaden in Höhe des Probenergebnisses verursacht.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "3", - "spellCategory": "fire", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-tail.svg", - "effects": [], - "_id": "ifRUXwqnjd1SCcRG" - }, - { - "name": "Öffnen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Öffnet ein Schloss, ohne es zu beschädigen. Der normalerweise immer +0 betragende Schlosswert (SW) kann durch bessere Qualität oder den Zauberspruch Magisches Schloss erhöht werden.
Misslingt der Zauber, kann der Zauberwirker es erneut versuchen. Jeder Folgewurf senkt den PW der Zaubern-Proben bei diesem speziellen Schloss jedoch um jeweils 2.

Dieser kumulative Malus gegen dieses eine Schloss erlöscht erst, wenn der Zauberwirker eine neue Stufe erreicht.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-SW", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 2, - "wizard": 1, - "sorcerer": 1 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/padlock-open.svg", - "effects": [], - "_id": "ip0DVeb1YeNrEeUu" - }, - { - "name": "Zaubertrick", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauberspruch erzeugt kleine, unschädliche Illusionen. Beispielsweise kann der Zauberwirker schwebende Bälle zaubern oder die Illusion eines Kaninchens aus einem Hut ziehen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 1, - "sorcerer": 1 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-hat.svg", - "effects": [], - "_id": "kOCHuBrtIXOwoZ1J" - }, - { - "name": "Feuerstrahl", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Der Zauberwirker schießt einen Feuerstrahl auf einen Feind, dessen Schaden dem Probenergebnis entspricht.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "1", - "spellCategory": "fire", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 1, - "sorcerer": 1 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-ray-small.svg", - "effects": [], - "_id": "kudkdrpMU0C83vM7" - }, - { - "name": "Nahrung zaubern", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker bündelt die magische Energien um sich herum und erschafft daraus die Grundzutat einer einfachen Mahlzeit, wie etwa Linsen, Reis oder Rüben.

\n

Maximal kann der Zauberwirker genügend Zutaten für eine Anzahl von Mahlzeiten (von denen ein Erwachsener 3 pro Tag benötigt) gleich seiner Stufe erschaffen

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 2, - "wizard": 7, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/potato.svg", - "effects": [], - "_id": "l8o3vG0kW9qvFmBY" - }, - { - "name": "Tanz", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, kann für die Dauer des Zauberspruchs nur tanzen (und dabei höchstens 1m pro Kampfrunde laufen).

\n

Das groteske Schauspiel endet vorzeitig, sollte das Ziel Schaden erhalten.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(GEI+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE/2", - "unit": "minutes" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 8, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/ballerina-shoes.svg", - "effects": [], - "_id": "lQJvJQFzSxfriOlc" - }, - { - "name": "Giftschutz", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Das Ziel erhält einen Bonus auf Abwehr-Proben gegen Gifte in Höhe der Stufe des Zauberwirkers. Der alleinige Bonus (ohne den normalen Abwehr-Wert) wirkt auch gegen Gifte, bei denen normalerweise keine Abwehr erlaubt ist.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": 2, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/aura.svg", - "effects": [], - "_id": "lSIJsq1WJbNTpV9F" - }, - { - "name": "Lichtpfeil", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Gegen den Schaden dieses Zielzaubers erhalten Wesen der Dunkelheit einen Malus von 2 auf ihre Abwehr.

\n

Charaktere mit dem Talent Diener der Dunkelheit können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "2", - "spellCategory": "light", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "1", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 2, - "wizard": 5, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/middle-arrow.svg", - "effects": [], - "_id": "lj8NQ5l4wLWmYcEt" - }, - { - "name": "Zombies erwecken", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Schwarzmagier kann eine maximale Anzahl an Leichen gleich seiner eigenen Stufe im Wirkungsradius zu untotem Leben erwecken.

\n

Die Zombies (DS4 S. 125) benötigen drei Kampfrunden, um sich zu erheben, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber Kontrollieren zu beherrschen.

\n

Charaktere mit dem Talent Diener des Lichts können den Zauber nicht anwenden.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/skoll/raise-zombie.svg", - "effects": [], - "_id": "mBFPKvtK3Rmq7CFY" - }, - { - "name": "Wasserwandeln", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Ziel des Zaubers kann eine Anzahl von Runden gleich dem Probenergebnis auf Wasser laufen, als befände es sich an Land.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 5, - "wizard": 9, - "sorcerer": 9 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/walk.svg", - "effects": [], - "_id": "mYZ3gFtRJASLL9pv" - }, - { - "name": "Schattensäule", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dies ist eine mächtigere Variante des Zaubers Schattenlanze, gegen dessen Schaden Wesen des Lichts ebenfalls einen Malus von 2 auf ihre Abwehr erhalten.
Charaktere mit dem Talent Diener des Lichts können diesen Zauber nicht anwenden.
Charaktere mit dem Talent Vergeltung addieren ihren Talentrang auf den PW der Zielzaubern-Probe Schattensäule.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "8", - "spellCategory": "darkness", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "1", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 20, - "sorcerer": 15 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/bubbling-beam.svg", - "effects": [], - "_id": "mg3rChUVQrZ09gCW" - }, - { - "name": "Unsichtbares sehen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Ziel erhält für die Dauer des Zauberspruchs die Fähigkeit, unsichtbare Objekte und Lebewesen ganz normal erkennen zu können.

\n

Magie, magische Effekte - bis auf den Zauberspruch Unsichtbarkeit - oder auch verborgene Fallen gelten nicht als unsichtbar in Bezug auf diesen Zauberspruch.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 10, - "wizard": 12, - "sorcerer": 12 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible-face.svg", - "effects": [], - "_id": "nR6Wbt9k2c8SBVpT" - }, - { - "name": "Verwirren", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte...
1-5... greift die Charaktere an
6-10... läuft verwirrt in eine zuf. Richtung
11-15... steht verwirrt herum
16+... greift die eigenen Verbündeten an
", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(GEI+AU)/2", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 8, - "wizard": 5, - "sorcerer": 5 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", - "effects": [], - "_id": "niQVUxJHzdMDlwXc" - }, - { - "name": "Heilende Aura", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Der Heiler und alle seine Gefährten in einem Radius von VE in Metern erhalten 1LK jede Kampfrunde geheilt.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "healing", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb x 2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 1, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/beams-aura.svg", - "effects": [], - "_id": "pFPofa4TEi69slEy" - }, - { - "name": "Magie identifizieren", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Offenbart dem Zauberwirker die Quelle und/oder Funktion der Magie eines Objektes oder einer Örtlichkeit.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "1", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 5, - "wizard": 1, - "sorcerer": 1 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-axe.svg", - "effects": [], - "_id": "pUhIT77TSIDrv9Pi" - }, - { - "name": "Allheilung", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauber heilt sämtliche Verletzungen und schließt jede noch so große Wunde, ohne Narben zu hinterlassen. Selbst abgetrennte Gliedmaßen (sofern nicht mehr als W20 Stunden abgetrennt) lassen sich mit diesem Spruch wieder anfügen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "healing", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 10, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/healing.svg", - "effects": [], - "_id": "pmYcjLXv1EB9bM59" - }, - { - "name": "Schweig", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, verstummt für die Dauer des Zauberspruchs. Verstummte Zauberwirker können solange nur wortlos zaubern (DS4 S. 47).

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(GEI+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE/2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 12, - "wizard": 10, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/silenced.svg", - "effects": [], - "_id": "rojd8AL3iXmGfc5m" - }, - { - "name": "Schutzschild dehnen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Verdoppelt die erwürfelte Dauer eines Schutzschild-Zaubers, der bereits auf das Ziel wirkt.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 4, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/alarm-clock.svg", - "effects": [], - "_id": "s31yIj9viKMLyaen" - }, - { - "name": "Verdampfen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Das Ziel beginnt vor magischer Hitze regelrecht zu verdampfen. Der innerlich wirkende Schaden entspricht dem dreifachen Probenergebnis, das Ziel würfelt seine Abwehr ohne die Panzerungsboni von seinen Gegenständen.

\n

Der Zauber ist gegen wasserlose Wesen - wie beispielsweise Skelette oder Feuerelementare - nicht einsetzbar.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "-(KÖR+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 20, - "sorcerer": 18 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/smoking-orb.svg", - "effects": [], - "_id": "s3nfDjJjDtiHGKzm" - }, - { - "name": "Totengespräch", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker kann den Geist eines Toten befragen, dieser muss ihm antworten, allerdings nicht automatisch wahrheitsgemäß.
Maximal wirkt der Zauber VE Minuten oder bis dem Geist VE Fragen gestellt wurden, die dieser nur mit “Ja” oder “Nein” beantwortet. Der Geist versteht die Sprache des Zauberwirkers und antwortet in dieser.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE Fragen, bzw. VE Minuten", - "unit": "custom" - }, - "cooldownDuration": { - "value": "W20", - "unit": "days" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 9 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/half-dead.svg", - "effects": [], - "_id": "sKCHnXV6c4w1CJWf" - }, - { - "name": "Magie bannen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker bannt permanent einen Zauberspruch oder magischen Effekt. Die Probe wird durch die Stufe des Wesens, welches den Zauber wirkte, gemindert.
Versucht man den Zauberspruch gegen ein magisches Wesen (worunter auch Zauberwirker fallen) anzuwenden, gilt dessen halbierte LK als Malus auf die Probe. Bei einem Erfolg wird das Ziel aber nicht automatisch gebannt, sondern erhält nicht abwehrbaren Schaden in Höhe des doppelten Probenergebnisses. Stirbt das Ziel, verschwindet es spurlos samt seiner getragenen Ausrüstung.
Sollte der bannende Charakter die Probe jedoch nicht schaffen, kann er selbst zum Ziel des Zaubers werden: Der Zauberwirker würfelt augenblicklich und aktionsfrei erneut den Zauber - allerdings ist er diesmal selbst das Ziel. Alle angewendeten, verstärkenden Zaubereffekte (beispielsweise durch Talente), gelten auch bei diesem zweiten Wurf.
Die gleiche Prozedur kommt zur Anwendung, wenn der Zauberwirker versucht, den magischen Effekt eines Gegenstandes zu bannen. Der ZB-Malus bei Gegenständen entspricht dabei der Stufesumme all derjenigen, die diesen Gegenstand erschufen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "- Wirkerstufe bzw. -LK/2", - "spellCategory": "unset", - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 12, - "wizard": 7, - "sorcerer": 12 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/magic-swirl.svg", - "effects": [], - "_id": "tBWEyulMfJFzPuWM" - }, - { - "name": "Schattenpfeil", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Gegen den Schaden dieses Zielzaubers erhalten Wesen des Lichts einen Malus von 2 auf ihre Abwehr.
Charaktere mit dem Talent Diener des Lichts können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "2", - "spellCategory": "darkness", - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "0", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 2 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/energy-arrow.svg", - "effects": [], - "_id": "tPFiElqQuvih76gd" - }, - { - "name": "Gasgestalt", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Das Ziel - samt seiner getragenen Ausrüstung - wird gasförmig und kann durch jede noch so kleine Öffnung gleiten. Das Ziel kann jederzeit die Wirkung des Zaubers als freie Aktion beenden. In Gasform wird der Laufen-Wert vervierfacht, der Charakter kann seine Umgebung weiterhin wahrnehmen. In Gastgestalt ist es allerdings nicht möglich, zu zaubern, zu sprechen, anzugreifen oder in andere Wesen einzudringen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 5", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 18 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/steam.svg", - "effects": [], - "_id": "tZJoj1PGrRGe9eMV" - }, - { - "name": "Verlangsamen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Dieser Zauber halbiert den Laufen-Wert von einer maximalen Anzahl von Zielen gleich der halbierten Stufe des Zauberwirkers.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(KÖR+AU)/2 des Ziels", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "10", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 3, - "wizard": 8, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/snail.svg", - "effects": [], - "_id": "tqJ8DBLXcnCfrG3t" - }, - { - "name": "Zauberabklang", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Mit diesem Zauber kann versucht werden, die Abklingzeit eines zuvor (innerhalb der letzten VE Kamfprunden) erfolgreich gewirkten Zauberspruchs wieder auf Null zu senken.

\n

Misslingt die Probe, kann man den Zauberabklang bei diesem speziellen Zauberspruch erst wieder versuchen, wenn der Zauberwirker ihn abermals gewirkt hat.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "- eigene Zugangsstufe für den Spruch", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 10, - "wizard": 5, - "sorcerer": 9 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/backward-time.svg", - "effects": [], - "_id": "uAgln8KHIaeK9G1I" - }, - { - "name": "Vergrößern", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Die Körpergröße des freiwilligen Ziels - samt seiner Ausrüstung - verdoppelt sich augenblicklich. Charaktere nehmen die Größenkategorie “groß” (DS4 S. 104) an.

\n

Für die Dauer des Zauberspruchs werden KÖR, ST und HÄ sowie Laufen verdoppelt.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-4", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb./2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 12 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/expand.svg", - "effects": [], - "_id": "uryiDdwKAwbASnuH" - }, - { - "name": "Gehorche", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(GEI+VE)/2 des Ziels", - "spellCategory": "mindAffecting", - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE/2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 12, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", - "effects": [], - "_id": "wZYElRaDmhqgzUvQ" - }, - { - "name": "Botschaft", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Beauftragt ein geisterhaftes Abbild des Zaubernden bei einem ihm bekannten Wesen in Reichweite zu  erscheinen und bis zu VE x 2 Wortsilben zu zitieren.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "kilometer" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis auformuliert", - "unit": "custom" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 8, - "wizard": 6, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/envelope.svg", - "effects": [], - "_id": "wnYRgIjVtIhL26eg" - }, - { - "name": "Spionage", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker begibt sich in einen tranceähnlichen Zustand, in dem seine optischen und akustischen Sinne sich von seinem Körper lösen können.
Sein unsichtbarer, hörender Blick bewegt sich mit einer konstanten Geschwindigkeit von VE Meter pro Kampfrunde und kann durch die kleinsten Öffnungen dringen. Der Zauberwirker sieht und hört dabei alles, als wäre er selbst vor Ort.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": 8, - "wizard": 6, - "sorcerer": 4 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/spy.svg", - "effects": [], - "_id": "xR5aBGFz3916e82x" - }, - { - "name": "Wolke des Todes", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Eine schwarze, qualmende Wolke des Todes mit einem Radius von maximal VE in Metern entsteht.

\n

Zwar ist die Wolke nicht undurchsichtig, dennoch werden Angriffe gegen Ziele darin um 2 erschwert, gleichsam erhalten alle innerhalb der Wolke -2 auf alle Proben, bei denen man besser sehen können sollte.

\n

Jeder Charakter innerhalb der Wolke erleidet pro Runde automatisch einen nicht abwehrbaren Punkt Schaden.

\n

Sollte der Schwarzmagier über das Talent Diener der Dunkelheit verfügen, wird sein Talentrang auf den nicht abwehrbaren Schaden, den jedes Opfer pro Kampfrunde erleidet, addiert.

\n

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-4", - "spellCategory": "unset", - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "100", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 13 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/skull-mask.svg", - "effects": [], - "_id": "xs7tx8K3ZdQ76u0b" - }, - { - "name": "Durchlässig", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker wird mit samt seiner getragenen Ausrüstung durchlässig und kann für VE/2 Kampfrunden durch nichtmagische, unbelebte Objekte schreiten.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-4", - "spellCategory": "unset", - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE/2", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 12 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/lorc/icicles-aura.svg", - "effects": [], - "_id": "yHUqMy4NoAtu9Tnh" - }, - { - "name": "Dämonen beschwören", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Effekt: Mit diesem Zauber beschwört der  Zauberwirker einen Dämon aus einer anderen  Existenzebene.  Der Charakter kann dabei frei wählen, was für eine Dämonenart (DS4 S. 107-108) er  beschwören will und ob die Kreatur fliegen können soll (was ihre  Beschwörung aber auch erschwert).  Alle Dämonen hassen die niederen Wesen, die es wagen, sie zu beschwören, können ihnen bei einer erfolgreichen Beschwörung aber nichts anhaben. Beschworene Dämonen können nur jemanden angreifen, wenn ihr Beschwörer es ihnen befiehlt oder sie selbst angegriffen werden.

\n

Aufträge: Ein Dämon kann erst auf seine Existenzebene zurückkehren, wenn er für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen VE ausgeführt hat (Dämonen verstehen immer die  Sprache ihres Beschwörers).
Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: “Folge der Straße bis zur nächsten Ortschaft (Auftrag 1) und vernichte jeden, dem Du unterwegs begegnest (Auftrag 2).”
Wird der Dämon von seinem Beschwörer vor Ablauf der Zauberdauer (VE x 2 Stunden) entlassen oder hat er  alle seine Aufträge erfüllt, kehrt er augenblicklich  zurück auf seine Existenzebene.

\n

Beschwörungskreise:  Um  einen Dämon zu  beschwören, wird immer ein Beschwörungskreis  benötigt. Dieser kann hastig auf den Boden gekritzelt oder in langen Stunden aufwendig gezeichnet werden.
Je mehr Arbeit in einem Beschwörungskreis steckt, desto eher gelingt die Beschwörung:
Jeder Beschwörungskreis verfügt über einen Beschwörenbonus (BB), der die Zaubern-Probe beim  Beschwören erleichtert.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
BESCHWÖRUNGSKREIS ZEICHNENBB
Innerhalb 1 Kampfrunde gekritzelt-2
Innerhalb weniger Minuten gefertigt+0
Pro Zeichenstunde (max. VE Stunden)+1
Mit Blut gezeichnet+2
Nachts gezeichnet+2
13 brennende Kerzen auf Kreis stellen+1
WEITERE MODIFIKATOREN (KREIS NÖTIG)BB
Bestimmter Dämon (Name bekannt)+2
Dämon soll fliegen können-KÖR/2*
Singsang zum Ende (max. VE/2 Rd.)+1/Rd.
Todesopfer (intelligentes Wesen)+KÖR**
\n

*: KÖR des Dämonen
**: KÖR des Opfers

\n

Beispiel:
Ein hoher Dämon (KÖR 7 AU 3 = ZB -10), der zudem auch noch fliegen können soll (KÖR 7/2
= 3,5, aufgerundet zu 4), würde die Zaubern-Probe um -14 erschweren.

\n

Ein Beschwörer mit VE 8 könnte, um diesen Malus zu reduzieren, maximal 8 Stunden (+8) in
der Nacht (+2) den Beschwörungskreis zeichnen und 13 Kerzen ringsum entzünden (+2).
Würde er die ihm möglichen 4 Kampfrunden (VE/2) vor der eigentlichen Beschwörung noch einen Singsang anstimmen, wäre der endgültige ZB sogar +2 (= -14 + 8 + 2 + 2 + 4).

\n

Misslungenes Beschwören: Ein Dämon wird auch beschworen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Beschwörers und kann frei handeln. Ein fehlerhaft beschworener Dämon hat nur ein Ziel vor Augen: Augenblicklich seinen Beschwörer zu vernichten, wodurch er wieder auf seine Existenzebene zurückkehren kann (ansonsten müsste er die Zauberdauer abwarten, ein inakzeptabler Zustand).
Charaktere mit dem Talent Diener des Lichts können den Zauber nicht anwenden.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "-(KÖR+AU) des Dämonen und +BB", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "hours" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": null, - "wizard": 17, - "sorcerer": 10 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/skoll/pentacle.svg", - "effects": [], - "_id": "yy43TiBbip28QRhs" - }, - { - "name": "Verborgenes sehen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker kann unbelebte Dinge - die verborgen oder absichtlich versteckt sind (Fallen, Geheimtüren u.ä.) - mit Hilfe dieses Zaubers für kurze Zeit aufleuchten sehen, selbst wenn sie durch etwas verdeckt sind, wie ein Vorhang oder ein Behältnis.

\n

Der Zauber funktioniert nicht bei magischen oder unsichtbaren Objekten.

", - "equipped": false, - "spellType": "spellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": { - "value": "24", - "unit": "hours" - }, - "minimumLevels": { - "healer": 8, - "wizard": 8, - "sorcerer": 8 - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/secret-door.svg", - "effects": [], - "_id": "zWol1q702sjg2b7K" - }, - { - "name": "Wasser teilen", - "permission": { - "default": 0 - }, - "type": "spell", - "data": { - "description": "

Der Zauberwirker kann jegliche Gewässer teilen und eine 1m breite Schneise bis zu Grund in sie schlagen, ihre Länge einzig und allein begrenzt durch den Entfernungsmalus auf Zielzauber (siehe Seite 43).

\n

Wird der Zauber gegen flüssige Wesen wie beispielsweise Wasserlementare eingesetzt, entspricht das Wurfergebnis nicht abwehrbaren Schaden, während die Zauberdauer nur noch augenblicklich ist.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "bonus": "0", - "spellCategory": "unset", - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Konzentration", - "unit": "custom" - }, - "cooldownDuration": { - "value": "W20", - "unit": "days" - }, - "minimumLevels": { - "healer": 12, - "wizard": null, - "sorcerer": null - } - }, - "flags": {}, - "img": "systems/ds4/assets/icons/game-icons/delapouite/zigzag-hieroglyph.svg", - "effects": [], - "_id": "zcuCpowoHDs7eIHn" - } -] diff --git a/packs/spells.json.license b/packs/spells.json.license deleted file mode 100644 index c722c35e..00000000 --- a/packs/spells.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Sascha Martens - -SPDX-License-Identifier: CC-BY-NC-SA-4.0 diff --git a/packs/spells/Allheilung_pmYcjLXv1EB9bM59.json b/packs/spells/Allheilung_pmYcjLXv1EB9bM59.json new file mode 100644 index 00000000..c0bb02d7 --- /dev/null +++ b/packs/spells/Allheilung_pmYcjLXv1EB9bM59.json @@ -0,0 +1,71 @@ +{ + "_id": "pmYcjLXv1EB9bM59", + "name": "Allheilung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/healing.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber heilt sämtliche Verletzungen und schließt jede noch so große Wunde, ohne Narben zu hinterlassen. Selbst abgetrennte Gliedmaßen (sofern nicht mehr als W20 Stunden abgetrennt) lassen sich mit diesem Spruch wieder anfügen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 10, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344883, + "modifiedTime": 1740227862587, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pmYcjLXv1EB9bM59" +} diff --git a/packs/spells/Arkanes_Schwert_VjvrapwDmBvGYmfj.json b/packs/spells/Arkanes_Schwert_VjvrapwDmBvGYmfj.json new file mode 100644 index 00000000..f6b819ee --- /dev/null +++ b/packs/spells/Arkanes_Schwert_VjvrapwDmBvGYmfj.json @@ -0,0 +1,71 @@ +{ + "_id": "VjvrapwDmBvGYmfj", + "name": "Arkanes Schwert", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sword-wound.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Schwert aus hellem (oder je nach Belieben auch dunklem) Licht erscheint innerhalb eines Radius von VE in Metern um den Zauberwirker herum.

\n

Innerhalb dieses Wirkungsbereiches kämpft es völlig selbstständig, hört jedoch auf gedankliche Kampfkommandos seines Beschwöreres wie „Greif den großen Troll an“ oder „Schütze mich“.

\n

Bewegt sich der Zauberwirker, wandert der Wirkungsbereich des Schwertes mit ihm mit, so dass die magische Klinge niemals mehr als VE in Metern von ihm getrennt sein kann.

\n

Das Schwert löst sich in seine arkanen Bestandteile auf, sobald seine (nicht heilbaren) LK auf Null oder niedriger sinken bzw. die Zauberdauer verstrichen ist.

\n

Sämtliche Kampfwerte des Schwertes entsprechen der Stufe des Zauberwirkers +10.

\n

Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Zauberwirkers entspricht.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344678, + "modifiedTime": 1740227862575, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VjvrapwDmBvGYmfj" +} diff --git a/packs/spells/Balancieren_QZW2p3k9uGuYKCbN.json b/packs/spells/Balancieren_QZW2p3k9uGuYKCbN.json new file mode 100644 index 00000000..2898b0db --- /dev/null +++ b/packs/spells/Balancieren_QZW2p3k9uGuYKCbN.json @@ -0,0 +1,71 @@ +{ + "_id": "QZW2p3k9uGuYKCbN", + "name": "Balancieren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/tightrope.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel kann absolut sicher mit seinem reinen Laufen-Wert über dünne Seile u. ä. balancieren.

\n

Sobald der Zauber gewirkt wurde, gilt der Balancieren-Effekt und endet, nachdem der Charakter eine Strecke in Höhe des eigenen, doppelten Laufen-Wertes in Metern zurückgelegt hat.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis Strecke zurückgelegt", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 3, + "sorcerer": 6 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344604, + "modifiedTime": 1740227862571, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QZW2p3k9uGuYKCbN" +} diff --git a/packs/spells/Bannen_VIRaUl51s1vnDHUt.json b/packs/spells/Bannen_VIRaUl51s1vnDHUt.json new file mode 100644 index 00000000..77e97004 --- /dev/null +++ b/packs/spells/Bannen_VIRaUl51s1vnDHUt.json @@ -0,0 +1,71 @@ +{ + "_id": "VIRaUl51s1vnDHUt", + "name": "Bannen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/magic-palm.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber vernichtet feindliche Dämonen, Elementare und Untote im Wirkungsradius. Maximal wird eine Anzahl von Wesenheiten vernichtet, die der halbierten Stufe des Zauberwirkers entspricht. Bei zu vielen Wesenheiten entscheidet der Zufall, welche betroffen sind. Alternativ können auch bestimmte, einzelne Wesenheiten als Ziel des Bannes bestimmt werden. Pro misslungenen Bannversuch steigt die Schwierigkeit um 2.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 der Wesenheit" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "", + "unit": "custom" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 8, + "wizard": 18, + "sorcerer": 14 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344676, + "modifiedTime": 1740227862575, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VIRaUl51s1vnDHUt" +} diff --git a/packs/spells/Blenden_JldAx8a91vVO2wUf.json b/packs/spells/Blenden_JldAx8a91vVO2wUf.json new file mode 100644 index 00000000..1f0d78c1 --- /dev/null +++ b/packs/spells/Blenden_JldAx8a91vVO2wUf.json @@ -0,0 +1,71 @@ +{ + "_id": "JldAx8a91vVO2wUf", + "name": "Blenden", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/laser-sparks.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein gleißender Lichtstrahl schießt aus der Hand des Zauberwirkers und blendet bei Erfolg das Ziel (welches dagegen keine Abwehr würfeln darf).

Ein geblendetes Ziel hat -8 auf alle Handlungen, bei denen es sehen können sollte.

Selbst augenlose Untote, wie beispielsweise Skelette, werden durch das magische Licht geblendet. Blinde Lebewesen sind dagegen nicht betroffen.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(AGI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 1, + "wizard": 5, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344548, + "modifiedTime": 1740227862566, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JldAx8a91vVO2wUf" +} diff --git a/packs/spells/Blitz_Senq5ub2Cx0agJgi.json b/packs/spells/Blitz_Senq5ub2Cx0agJgi.json new file mode 100644 index 00000000..51b63b77 --- /dev/null +++ b/packs/spells/Blitz_Senq5ub2Cx0agJgi.json @@ -0,0 +1,71 @@ +{ + "_id": "Senq5ub2Cx0agJgi", + "name": "Blitz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/bolt-spell-cast.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind. Gegner in Metallrüstung dürfen keine Abwehr gegen Blitze würfeln.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": true, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": 10, + "wizard": 7, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344630, + "modifiedTime": 1740227862573, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Senq5ub2Cx0agJgi" +} diff --git a/packs/spells/Blut_kochen_GPaDrKIFw2kjzryU.json b/packs/spells/Blut_kochen_GPaDrKIFw2kjzryU.json new file mode 100644 index 00000000..41996396 --- /dev/null +++ b/packs/spells/Blut_kochen_GPaDrKIFw2kjzryU.json @@ -0,0 +1,71 @@ +{ + "_id": "GPaDrKIFw2kjzryU", + "name": "Blut kochen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/skoll/blood.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Blut des Ziels beginnt auf magische Art und Weise zu kochen, ohne dass es gerinnt.

Der innerlich wirkende Schaden entspricht dem doppelten Probenergebnis, das Ziel würfelt seine Abwehr ohne die Panzerungsboni seiner Gegenstände.

Der Zauber ist gegen Wesen ohne Blut – wie beispielsweise viele Untote – nicht einsetzbar.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 17, + "sorcerer": 13 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344518, + "modifiedTime": 1740227862564, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GPaDrKIFw2kjzryU" +} diff --git a/packs/spells/Botschaft_wnYRgIjVtIhL26eg.json b/packs/spells/Botschaft_wnYRgIjVtIhL26eg.json new file mode 100644 index 00000000..f70733ce --- /dev/null +++ b/packs/spells/Botschaft_wnYRgIjVtIhL26eg.json @@ -0,0 +1,71 @@ +{ + "_id": "wnYRgIjVtIhL26eg", + "name": "Botschaft", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/envelope.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Beauftragt ein geisterhaftes Abbild des Zaubernden bei einem ihm bekannten Wesen in Reichweite zu erscheinen und bis zu VE x 2 Wortsilben zu zitieren.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "kilometer" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis ausformuliert", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 8, + "wizard": 6, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344902, + "modifiedTime": 1740227862590, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!wnYRgIjVtIhL26eg" +} diff --git a/packs/spells/D_monen_beschw_ren_yy43TiBbip28QRhs.json b/packs/spells/D_monen_beschw_ren_yy43TiBbip28QRhs.json new file mode 100644 index 00000000..e84cd039 --- /dev/null +++ b/packs/spells/D_monen_beschw_ren_yy43TiBbip28QRhs.json @@ -0,0 +1,71 @@ +{ + "_id": "yy43TiBbip28QRhs", + "name": "Dämonen beschwören", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/skoll/pentacle.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mit diesem Zauber beschwört der Zauberwirker einen Dämon aus einer anderen Existenzebene. Der Charakter kann dabei frei wählen, was für eine Dämonenart (@Compendium[ds4.creatures.RxSUSzQBSTFYHOlV]{Niederer Dämon}, @Compendium[ds4.creatures.LtsbT2DHYKs9Catm]{Hoher Dämon}, @Compendium[ds4.creatures.LgtcLrKtCa496ih6]{Kampfdämon}, @Compendium[ds4.creatures.JGpIh3oCK1Vx3NnZ]{Kriegsdämon},@Compendium[ds4.creatures.PKPmkOMLDGwS9QZJ]{Dämonenfürst}, DS4 S. 107-108) er beschwören will und ob die Kreatur fliegen können soll (was ihre Beschwörung aber auch erschwert). Alle Dämonen hassen die niederen Wesen, die es wagen, sie zu beschwören, können ihnen bei einer erfolgreichen Beschwörung aber nichts anhaben. Beschworene Dämonen können nur jemanden angreifen, wenn ihr Beschwörer es ihnen befiehlt oder sie selbst angegriffen werden.

\n

Aufträge: Ein Dämon kann erst auf seine Existenzebene zurückkehren, wenn er für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen VE ausgeführt hat (Dämonen verstehen immer die Sprache ihres Beschwörers).

\n

Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Folge der Straße bis zur nächsten Ortschaft (Auftrag 1) und vernichte jeden, dem Du unterwegs begegnest (Auftrag 2).“

\n

Wird der Dämon von seinem Beschwörer vor Ablauf der Zauberdauer (VE x 2 Stunden) entlassen oder hat er alle seine Aufträge erfüllt, kehrt er augenblicklich zurück auf seine Existenzebene.

\n

Beschwörungskreise: Um einen Dämon zu beschwören, wird immer ein Beschwörungskreis benötigt. Dieser kann hastig auf den Boden gekritzelt oder in langen Stunden aufwendig gezeichnet werden.

\n

Je mehr Arbeit in einem Beschwörungskreis steckt, desto eher gelingt die Beschwörung: Jeder Beschwörungskreis verfügt über einen Beschwörenbonus (BB), der die Zaubern-Probe beim Beschwören erleichtert.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Beschwörungskreis zeichnenBB
Innerhalb 1 Kampfrunde gekritzelt-2
Innerhalb weniger Minuten gefertigt+0
Pro Zeichenstunde (max. VE Stunden)+1
Mit Blut gezeichnet+2
Nachts gezeichnet+2
13 brennende Kerzen auf Kreis stellen+1
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Weitere Modifikatoren (Kreis nötig)BB
Bestimmter Dämon (Name bekannt)+2
Dämon soll fliegen können-KÖR / 2*
Singsang zum Ende (max. VE / 2 Rd.)+1 / Rd.
Todesopfer (intelligentes Wesen)+KÖR**
\n

*: KÖR des Dämonen
**: KÖR des Opfers

\n

Beispiel:
Ein hoher Dämon (KÖR 7 AU 3 = ZB -10), der zudem auch noch fliegen können soll (KÖR 7 / 2 = 3,5, aufgerundet zu 4), würde die Zaubern-Probe um -14 erschweren.

\n

Ein Beschwörer mit VE 8 könnte, um diesen Malus zu reduzieren, maximal 8 Stunden (+8) in der Nacht (+2) den Beschwörungskreis zeichnen und 13 Kerzen ringsum entzünden (+2).

\n

Würde er die ihm möglichen 4 Kampfrunden (VE / 2) vor der eigentlichen Beschwörung noch einen Singsang anstimmen, wäre der endgültige ZB sogar +2 (= -14 + 8 + 2 + 2 + 4).

\n

Misslungenes Beschwören: Ein Dämon wird auch beschworen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Beschwörers und kann frei handeln. Ein fehlerhaft beschworener Dämon hat nur ein Ziel vor Augen: Augenblicklich seinen Beschwörer zu vernichten, wodurch er wieder auf seine Existenzebene zurückkehren kann (ansonsten müsste er die Zauberdauer abwarten, ein inakzeptabler Zustand).

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU) des Dämonen und +BB" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": true, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 17, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344906, + "modifiedTime": 1740227862591, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yy43TiBbip28QRhs" +} diff --git a/packs/spells/Duftnote_A9c19uUSIH4kvvHS.json b/packs/spells/Duftnote_A9c19uUSIH4kvvHS.json new file mode 100644 index 00000000..f07f65ee --- /dev/null +++ b/packs/spells/Duftnote_A9c19uUSIH4kvvHS.json @@ -0,0 +1,71 @@ +{ + "_id": "A9c19uUSIH4kvvHS", + "name": "Duftnote", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fragrance.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel wird vom Zauberwirker mit einem Duft versehen.

Dieser Geruch kann angenehm oder unangenehm sein und erleichtert bzw. erschwert sämtliche sozialen Proben des Ziels für die Wirkungsdauer um 2.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 1, + "wizard": 1, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344482, + "modifiedTime": 1740227862561, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!A9c19uUSIH4kvvHS" +} diff --git a/packs/spells/Durchl_ssig_yHUqMy4NoAtu9Tnh.json b/packs/spells/Durchl_ssig_yHUqMy4NoAtu9Tnh.json new file mode 100644 index 00000000..342efbc1 --- /dev/null +++ b/packs/spells/Durchl_ssig_yHUqMy4NoAtu9Tnh.json @@ -0,0 +1,71 @@ +{ + "_id": "yHUqMy4NoAtu9Tnh", + "name": "Durchlässig", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/icicles-aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker wird mit samt seiner getragenen Ausrüstung durchlässig und kann für VE/2 Kampfrunden durch nichtmagische, unbelebte Objekte schreiten.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE/2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344905, + "modifiedTime": 1740227862591, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yHUqMy4NoAtu9Tnh" +} diff --git a/packs/spells/Durchsicht_eNefaoD15JrT4ixR.json b/packs/spells/Durchsicht_eNefaoD15JrT4ixR.json new file mode 100644 index 00000000..95170f40 --- /dev/null +++ b/packs/spells/Durchsicht_eNefaoD15JrT4ixR.json @@ -0,0 +1,71 @@ +{ + "_id": "eNefaoD15JrT4ixR", + "name": "Durchsicht", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/sunglasses.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann durch nichtmagische, unbelebte Objekte VE/2 Meter weit sehen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 7, + "wizard": 3, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344798, + "modifiedTime": 1740227862582, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eNefaoD15JrT4ixR" +} diff --git a/packs/spells/Ebenentor_MKlGqhjQa3GZu4gq.json b/packs/spells/Ebenentor_MKlGqhjQa3GZu4gq.json new file mode 100644 index 00000000..9bd3b0be --- /dev/null +++ b/packs/spells/Ebenentor_MKlGqhjQa3GZu4gq.json @@ -0,0 +1,71 @@ +{ + "_id": "MKlGqhjQa3GZu4gq", + "name": "Ebenentor", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/magic-portal.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Öffnet ein Tor zu einer anderen Existenzebene, die der Zauberwirker namentlich nennen muss. Das Tor schließt sich, sobald VE/2 Wesen es durchschritten haben, oder die Spruchdauer abgelaufen ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -8, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": 18, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344563, + "modifiedTime": 1740227862568, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MKlGqhjQa3GZu4gq" +} diff --git a/packs/spells/Einschl_fern_CrZ8L7oaWvPjLou0.json b/packs/spells/Einschl_fern_CrZ8L7oaWvPjLou0.json new file mode 100644 index 00000000..211d95d8 --- /dev/null +++ b/packs/spells/Einschl_fern_CrZ8L7oaWvPjLou0.json @@ -0,0 +1,71 @@ +{ + "_id": "CrZ8L7oaWvPjLou0", + "name": "Einschläfern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u. ä. erwachen kann.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+VE)/2 des jeweiligen Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344499, + "modifiedTime": 1740227862563, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!CrZ8L7oaWvPjLou0" +} diff --git a/packs/spells/Elementar_herbeirufen__Erde__9GBDoyVXPXjWoLix.json b/packs/spells/Elementar_herbeirufen__Erde__9GBDoyVXPXjWoLix.json new file mode 100644 index 00000000..f0ad18e2 --- /dev/null +++ b/packs/spells/Elementar_herbeirufen__Erde__9GBDoyVXPXjWoLix.json @@ -0,0 +1,71 @@ +{ + "_id": "9GBDoyVXPXjWoLix", + "name": "Elementar herbeirufen (Erde)", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber ruft ein Erdelementar von seiner Ebene herbei. Erdelementare (@Compendium[ds4.creatures.1PYYg60DHC6RA3oO]{Erdelementar I}, @Compendium[ds4.creatures.S8DNL5XpmNRSNJhD]{Erdelementar II}, @Compendium[ds4.creatures.mOQ21HFNisTfu7ve]{Erdelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Erdboden/Kiesel/SandI
Felsen/FindlingII
Steinhügel oder größerIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m³ Erde/Gestein+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-Elementarstufe x 5" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": true, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344476, + "modifiedTime": 1740227862561, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9GBDoyVXPXjWoLix" +} diff --git a/packs/spells/Elementar_herbeirufen__Feuer__8BT2TqPHC0v2OzNe.json b/packs/spells/Elementar_herbeirufen__Feuer__8BT2TqPHC0v2OzNe.json new file mode 100644 index 00000000..f38896ea --- /dev/null +++ b/packs/spells/Elementar_herbeirufen__Feuer__8BT2TqPHC0v2OzNe.json @@ -0,0 +1,71 @@ +{ + "_id": "8BT2TqPHC0v2OzNe", + "name": "Elementar herbeirufen (Feuer)", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber ruft ein Feuerelementar von seiner Ebene herbei. Feuerelementare (@Compendium[ds4.creatures.tYcKw69Feoy3B6hG]{Feuerelementar I}, @Compendium[ds4.creatures.huPL6cx3RadJNhL0]{Feuerelementar II}, @Compendium[ds4.creatures.mPcmJ9nHpy1AbKVr]{Feuerelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Kerzenflamme bis FackelI
LagerfeuerII
Brand/LavaIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m² Feuer-/Lavafläche+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-Elementarstufe x 5" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344471, + "modifiedTime": 1740227862559, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8BT2TqPHC0v2OzNe" +} diff --git a/packs/spells/Elementar_herbeirufen__Luft__PXIVHRBpLwlzrk3L.json b/packs/spells/Elementar_herbeirufen__Luft__PXIVHRBpLwlzrk3L.json new file mode 100644 index 00000000..622eafb2 --- /dev/null +++ b/packs/spells/Elementar_herbeirufen__Luft__PXIVHRBpLwlzrk3L.json @@ -0,0 +1,71 @@ +{ + "_id": "PXIVHRBpLwlzrk3L", + "name": "Elementar herbeirufen (Luft)", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber ruft ein Luftelementar von seiner Ebene herbei. Luftlementare (@Compendium[ds4.creatures.CIzMY691MK016h4E]{Luftelementar I}, @Compendium[ds4.creatures.wYVw1a5UjPS09YxS]{Luftelementar II}, @Compendium[ds4.creatures.DNbOkqUg7jitTTbw]{Luftelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Leichte Brise/Windiges WetterI
StürmischII
GewittersturmIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m³ Luft+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-Elementarstufe x 5" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344601, + "modifiedTime": 1740227862570, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PXIVHRBpLwlzrk3L" +} diff --git a/packs/spells/Elementar_herbeirufen__Wasser__ftDPIhLCVRLRpOix.json b/packs/spells/Elementar_herbeirufen__Wasser__ftDPIhLCVRLRpOix.json new file mode 100644 index 00000000..0953430a --- /dev/null +++ b/packs/spells/Elementar_herbeirufen__Wasser__ftDPIhLCVRLRpOix.json @@ -0,0 +1,71 @@ +{ + "_id": "ftDPIhLCVRLRpOix", + "name": "Elementar herbeirufen (Wasser)", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber ruft ein Wasserelementar von seiner Ebene herbei. Wasserelementare (@Compendium[ds4.creatures.ZJF6ieo8O0GXfgwz]{Wasserelementar I}, @Compendium[ds4.creatures.Xn7g2PB1rXvllwRi]{Wasserelementar II}, @Compendium[ds4.creatures.dlrDPQ3is4NkzZJB]{Wasserelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Wasser: Pfütze/Regen/WassertonneI
Wasser: Brunnen/Teich/Weiher o.ä.II
Wasser: Fluss/Meer/SeeIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m² Wasserfläche+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-Elementarstufe x 5" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": true, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344817, + "modifiedTime": 1740227862582, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ftDPIhLCVRLRpOix" +} diff --git a/packs/spells/Erdspalt_4R2OiLe4Ojht69Ea.json b/packs/spells/Erdspalt_4R2OiLe4Ojht69Ea.json new file mode 100644 index 00000000..a26dc5d1 --- /dev/null +++ b/packs/spells/Erdspalt_4R2OiLe4Ojht69Ea.json @@ -0,0 +1,71 @@ +{ + "_id": "4R2OiLe4Ojht69Ea", + "name": "Erdspalt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/earth-spit.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Auf festem Boden öffnet der Zauber einen Erdspalt. Der Erdspalt ist bis zu VE in Meter breit und VE/2 in Metern lang und tief. Stehen Wesen an der Stelle, unter der der Erdspalt erscheint, können sie mit AGI+BE augenblicklich versuchen, noch in Sicherheit zu springen (zählt als freie Aktion). Wesen, die sich in der Erdspalte befinden, wenn diese sich wieder schließt, erhalten augenblicklich 2W20 nicht abwehrbaren Schaden und sind – ohne noch richtig atmen zu können – eingeschlossen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": true, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 10, + "wizard": 10, + "sorcerer": 14 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344451, + "modifiedTime": 1740227862556, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!4R2OiLe4Ojht69Ea" +} diff --git a/packs/spells/Federgleich_eYy2tF4LpHth18t6.json b/packs/spells/Federgleich_eYy2tF4LpHth18t6.json new file mode 100644 index 00000000..d4759ed3 --- /dev/null +++ b/packs/spells/Federgleich_eYy2tF4LpHth18t6.json @@ -0,0 +1,71 @@ +{ + "_id": "eYy2tF4LpHth18t6", + "name": "Federgleich", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/two-feathers.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel – samt seiner getragenen Ausrüstung – kann aus einer Höhe gleich dem doppelten Probenergebniss in Metern sanft wie ein Feder ungelenkt zu Boden gleiten (1 m pro Kampfrunde).

\n

Der federgleiche Fall muss spätestens 1 Minute, nachdem der Zauber gewirkt wurde, begonnen werden, sonst verfällt sein Effekt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "1 Min & bis Distanz gefallen", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 5, + "wizard": 3, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344808, + "modifiedTime": 1740227862582, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eYy2tF4LpHth18t6" +} diff --git a/packs/spells/Feueratem_AyTRXMB9PBeVsmus.json b/packs/spells/Feueratem_AyTRXMB9PBeVsmus.json new file mode 100644 index 00000000..639326aa --- /dev/null +++ b/packs/spells/Feueratem_AyTRXMB9PBeVsmus.json @@ -0,0 +1,71 @@ +{ + "_id": "AyTRXMB9PBeVsmus", + "name": "Feueratem", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-breath.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aus dem Mund des Zauberwirkers schießt eine lodernde Säule, die alle hintereinander stehenden Gegner in einer 1 m breiten, geraden Schneise in Flammen hüllt. Der feurige Atem verursacht nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344487, + "modifiedTime": 1740227862562, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!AyTRXMB9PBeVsmus" +} diff --git a/packs/spells/Feuerball_ifRUXwqnjd1SCcRG.json b/packs/spells/Feuerball_ifRUXwqnjd1SCcRG.json new file mode 100644 index 00000000..68cf1fa3 --- /dev/null +++ b/packs/spells/Feuerball_ifRUXwqnjd1SCcRG.json @@ -0,0 +1,71 @@ +{ + "_id": "ifRUXwqnjd1SCcRG", + "name": "Feuerball", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-tail.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker schießt einen flammenden Ball auf seine Gegner, der in einer feurigen Explosion – ihr Radius entspricht der VE des Zauberwirkers in Metern – endet, welche nicht abwehrbaren Schaden in Höhe des Probenergebnisses verursacht.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344864, + "modifiedTime": 1740227862583, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ifRUXwqnjd1SCcRG" +} diff --git a/packs/spells/Feuerlanze_QuuHhHmliyC5N55q.json b/packs/spells/Feuerlanze_QuuHhHmliyC5N55q.json new file mode 100644 index 00000000..adf103ce --- /dev/null +++ b/packs/spells/Feuerlanze_QuuHhHmliyC5N55q.json @@ -0,0 +1,71 @@ +{ + "_id": "QuuHhHmliyC5N55q", + "name": "Feuerlanze", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-ray.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.kudkdrpMU0C83vM7]{Feuerstrahl}.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 2, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344608, + "modifiedTime": 1740227862571, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QuuHhHmliyC5N55q" +} diff --git a/packs/spells/Feuerstrahl_kudkdrpMU0C83vM7.json b/packs/spells/Feuerstrahl_kudkdrpMU0C83vM7.json new file mode 100644 index 00000000..47391424 --- /dev/null +++ b/packs/spells/Feuerstrahl_kudkdrpMU0C83vM7.json @@ -0,0 +1,71 @@ +{ + "_id": "kudkdrpMU0C83vM7", + "name": "Feuerstrahl", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-ray-small.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker schießt einen Feuerstrahl auf einen Feind, dessen Schaden dem Probenergebnis entspricht.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 1, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344868, + "modifiedTime": 1740227862584, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kudkdrpMU0C83vM7" +} diff --git a/packs/spells/Feuerwand_7yYxjxuGjTo29r10.json b/packs/spells/Feuerwand_7yYxjxuGjTo29r10.json new file mode 100644 index 00000000..6511f384 --- /dev/null +++ b/packs/spells/Feuerwand_7yYxjxuGjTo29r10.json @@ -0,0 +1,71 @@ +{ + "_id": "7yYxjxuGjTo29r10", + "name": "Feuerwand", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/firewall.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker lässt eine Feuerwand erscheinen, die Ausmaße von maximal 1 m x VE m x VE m annehmen kann. Wesen, die an der Stelle stehen, wo die Feuerwand erscheint, oder durch sie hindurch springen, erhalten 2W20 abwehrbaren Schaden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 8, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344467, + "modifiedTime": 1740227862559, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7yYxjxuGjTo29r10" +} diff --git a/packs/spells/Flackern_5RUGIWTftCyeJkDQ.json b/packs/spells/Flackern_5RUGIWTftCyeJkDQ.json new file mode 100644 index 00000000..62b58617 --- /dev/null +++ b/packs/spells/Flackern_5RUGIWTftCyeJkDQ.json @@ -0,0 +1,71 @@ +{ + "_id": "5RUGIWTftCyeJkDQ", + "name": "Flackern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/duality.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker beginnt zu flackern und ist dadurch schwieriger zu treffen. Seine Abwehr wird für die Dauer des Zaubers um seinen halbierten Wert in GEI erhöht (nur nicht gegen alles einhüllenden Flächenschaden).

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 2, + "wizard": 4, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344456, + "modifiedTime": 1740227862557, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5RUGIWTftCyeJkDQ" +} diff --git a/packs/spells/Flammeninferno_7ybmodIkWDP1z1D6.json b/packs/spells/Flammeninferno_7ybmodIkWDP1z1D6.json new file mode 100644 index 00000000..70ce25b3 --- /dev/null +++ b/packs/spells/Flammeninferno_7ybmodIkWDP1z1D6.json @@ -0,0 +1,71 @@ +{ + "_id": "7ybmodIkWDP1z1D6", + "name": "Flammeninferno", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-wave.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine kreisrunde Fläche mit einem Radius von VE in Metern geht in Flammen auf. Jeder in dem Inferno erhält pro Kampfrunde nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 5, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 15 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344469, + "modifiedTime": 1740227862559, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7ybmodIkWDP1z1D6" +} diff --git a/packs/spells/Flammenklinge_gJ3Z8y7i6LWjSMKJ.json b/packs/spells/Flammenklinge_gJ3Z8y7i6LWjSMKJ.json new file mode 100644 index 00000000..f97ee591 --- /dev/null +++ b/packs/spells/Flammenklinge_gJ3Z8y7i6LWjSMKJ.json @@ -0,0 +1,71 @@ +{ + "_id": "gJ3Z8y7i6LWjSMKJ", + "name": "Flammenklinge", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/shard-sword.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann eine Metallklinge in lodernde Flammen hüllen. Dabei handelt es sich um ein magisches Feuer, das keinen Sauerstoff benötigt und dessen Flammenfarbe der Zauberwirker frei bestimmen kann.

\n

Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch.

\n

Ein Immersieg bei einem Angriff erzeugt eine kleine Explosion, wodurch der erwürfelte Schaden in dieser Kampfrunde um zusätzliche W20 erhöht wird.

\n

Flammenklinge ist nicht mit @Compendium[ds4.spells.Gc5G9kixOqNbuwp1]{Frostwaffe} kombinierbar.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 4, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344829, + "modifiedTime": 1740227862582, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gJ3Z8y7i6LWjSMKJ" +} diff --git a/packs/spells/Fliegen_NwLeietvcarS6zP5.json b/packs/spells/Fliegen_NwLeietvcarS6zP5.json new file mode 100644 index 00000000..1c60547a --- /dev/null +++ b/packs/spells/Fliegen_NwLeietvcarS6zP5.json @@ -0,0 +1,71 @@ +{ + "_id": "NwLeietvcarS6zP5", + "name": "Fliegen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/hand-wing.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel kann fliegen. Die Fortbewegungsgeschwindigkeit ist im Flug doppelt so hoch wie am Boden (zusätzlich kann man sie wie beim „Rennen“ verdoppeln). Ein Charakter mit Laufen 4,5 m fliegt also 9 m in einer Kampfrunde, „rennend“ 18 m.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 5", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 20, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344588, + "modifiedTime": 1740227862569, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NwLeietvcarS6zP5" +} diff --git a/packs/spells/Fluch_DjvQzdWEmm8h7G4X.json b/packs/spells/Fluch_DjvQzdWEmm8h7G4X.json new file mode 100644 index 00000000..27f821ec --- /dev/null +++ b/packs/spells/Fluch_DjvQzdWEmm8h7G4X.json @@ -0,0 +1,71 @@ +{ + "_id": "DjvQzdWEmm8h7G4X", + "name": "Fluch", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/voodoo-doll.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker benötigt etwas vom Ziel in seinem Besitz, wie beispielsweise ein Haar, ein Kleidungsstück o. ä., das beim Zaubern – ob erfolgreich oder nicht – zerstört wird. Das Ziel wird verflucht und erhält auf alle Proben -2, bis die Zauberdauer verstrichen ist oder der Fluch mittels @Compendium[ds4.spells.tBWEyulMfJFzPuWM]{Magie bannen} schon vorher entfernt wird.

\n

Ein Ziel kann mehrmals verflucht werden. Alle Flüche müssen einzeln gebannt werden, stammen sie nicht vom selben Zauberwirker.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziel" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "days" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344510, + "modifiedTime": 1740227862564, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DjvQzdWEmm8h7G4X" +} diff --git a/packs/spells/Freund_NcK7zXn0IeCfqjkl.json b/packs/spells/Freund_NcK7zXn0IeCfqjkl.json new file mode 100644 index 00000000..28a05b94 --- /dev/null +++ b/packs/spells/Freund_NcK7zXn0IeCfqjkl.json @@ -0,0 +1,71 @@ +{ + "_id": "NcK7zXn0IeCfqjkl", + "name": "Freund", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/lovers.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg hält das Ziel den Zauberwirker (und nur ihn!) für einen sehr guten Freund.

\n

Das Ziel wird ihm alles anvertrauen, was er auch einem sehr guten Freund verraten würde und alles für ihn machen, was er auch für einen guten Freund tun würde.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 6, + "wizard": 7, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344584, + "modifiedTime": 1740227862569, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NcK7zXn0IeCfqjkl" +} diff --git a/packs/spells/Frostschock_iH2NtsJtMfG0ZAU3.json b/packs/spells/Frostschock_iH2NtsJtMfG0ZAU3.json new file mode 100644 index 00000000..5a20bb5f --- /dev/null +++ b/packs/spells/Frostschock_iH2NtsJtMfG0ZAU3.json @@ -0,0 +1,71 @@ +{ + "_id": "iH2NtsJtMfG0ZAU3", + "name": "Frostschock", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/frozen-body.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Eisstrahl schießt aus den Händen des Zauberwirkers. Gegen den Schaden dieses frostigen Zauber ist keine Abwehr zulässig.

\n

Zudem wird das Ziel magisch eingefroren, bis VE Kampfrunden verstrichen sind oder es Schaden erhält.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": true, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 12, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344862, + "modifiedTime": 1740227862583, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iH2NtsJtMfG0ZAU3" +} diff --git a/packs/spells/Frostwaffe_Gc5G9kixOqNbuwp1.json b/packs/spells/Frostwaffe_Gc5G9kixOqNbuwp1.json new file mode 100644 index 00000000..68de2765 --- /dev/null +++ b/packs/spells/Frostwaffe_Gc5G9kixOqNbuwp1.json @@ -0,0 +1,71 @@ +{ + "_id": "Gc5G9kixOqNbuwp1", + "name": "Frostwaffe", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sparkling-sabre.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann eine Waffe in eisige Kälte hüllen. Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch. Ein Immersieg bei einem Angriff friert den Gegner für eine Kampfrunde lang ein, als wirke auf ihn der Zauber @Compendium[ds4.spells.1hhpEYpQQ0oLNptl]{Halt}. Frostwaffe ist nicht mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge} kombinierbar.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": true, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 4, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344526, + "modifiedTime": 1740227862565, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Gc5G9kixOqNbuwp1" +} diff --git a/packs/spells/Gasgestalt_tZJoj1PGrRGe9eMV.json b/packs/spells/Gasgestalt_tZJoj1PGrRGe9eMV.json new file mode 100644 index 00000000..a13f5270 --- /dev/null +++ b/packs/spells/Gasgestalt_tZJoj1PGrRGe9eMV.json @@ -0,0 +1,71 @@ +{ + "_id": "tZJoj1PGrRGe9eMV", + "name": "Gasgestalt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/steam.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel – samt seiner getragenen Ausrüstung – wird gasförmig und kann durch jede noch so kleine Öffnung gleiten. Das Ziel kann jederzeit die Wirkung des Zaubers als freie Aktion beenden. In Gasform wird der Laufen-Wert vervierfacht, der Charakter kann seine Umgebung weiterhin wahrnehmen. In Gastgestalt ist es allerdings nicht möglich, zu zaubern, zu sprechen, anzugreifen oder in andere Wesen einzudringen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 5", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 18 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344896, + "modifiedTime": 1740227862589, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tZJoj1PGrRGe9eMV" +} diff --git a/packs/spells/Geben_und_Nehmen_MpqPWr2l8qV4oQyL.json b/packs/spells/Geben_und_Nehmen_MpqPWr2l8qV4oQyL.json new file mode 100644 index 00000000..ddc764a0 --- /dev/null +++ b/packs/spells/Geben_und_Nehmen_MpqPWr2l8qV4oQyL.json @@ -0,0 +1,71 @@ +{ + "_id": "MpqPWr2l8qV4oQyL", + "name": "Geben und Nehmen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/heart-inside.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel des Zaubers erhält 50 % des Schadens, den es per Schlagen im Nahkampf verursacht (also abzüglich des Abwehrwurfs des Gegners), in Form von heilender Magie auf die eigene Lebenskraft gutgeschrieben.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 4, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344567, + "modifiedTime": 1740227862568, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MpqPWr2l8qV4oQyL" +} diff --git a/packs/spells/Gehorche_wZYElRaDmhqgzUvQ.json b/packs/spells/Gehorche_wZYElRaDmhqgzUvQ.json new file mode 100644 index 00000000..537a1763 --- /dev/null +++ b/packs/spells/Gehorche_wZYElRaDmhqgzUvQ.json @@ -0,0 +1,71 @@ +{ + "_id": "wZYElRaDmhqgzUvQ", + "name": "Gehorche", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 12, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344901, + "modifiedTime": 1740227862590, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!wZYElRaDmhqgzUvQ" +} diff --git a/packs/spells/Giftbann_ONhSaLNmvvacgCjA.json b/packs/spells/Giftbann_ONhSaLNmvvacgCjA.json new file mode 100644 index 00000000..f8235480 --- /dev/null +++ b/packs/spells/Giftbann_ONhSaLNmvvacgCjA.json @@ -0,0 +1,71 @@ +{ + "_id": "ONhSaLNmvvacgCjA", + "name": "Giftbann", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/foamy-disc.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Neutralisiert augenblicklich ein nichtmagisches Gift, sofern es noch nicht zu spät ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 3, + "wizard": 6, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344594, + "modifiedTime": 1740227862570, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ONhSaLNmvvacgCjA" +} diff --git a/packs/spells/Giftschutz_lSIJsq1WJbNTpV9F.json b/packs/spells/Giftschutz_lSIJsq1WJbNTpV9F.json new file mode 100644 index 00000000..c17efbc3 --- /dev/null +++ b/packs/spells/Giftschutz_lSIJsq1WJbNTpV9F.json @@ -0,0 +1,71 @@ +{ + "_id": "lSIJsq1WJbNTpV9F", + "name": "Giftschutz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel erhält einen Bonus auf Abwehr-Proben gegen Gifte in Höhe der Stufe des Zauberwirkers. Der alleinige Bonus (ohne den normalen Abwehr-Wert) wirkt auch gegen Gifte, bei denen normalerweise keine Abwehr erlaubt ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 1, + "wizard": 2, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344871, + "modifiedTime": 1740227862585, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lSIJsq1WJbNTpV9F" +} diff --git a/packs/spells/Gl_hender_Glaube_919AW6tITRT8WikD.json b/packs/spells/Gl_hender_Glaube_919AW6tITRT8WikD.json new file mode 100644 index 00000000..d75163f7 --- /dev/null +++ b/packs/spells/Gl_hender_Glaube_919AW6tITRT8WikD.json @@ -0,0 +1,71 @@ +{ + "_id": "919AW6tITRT8WikD", + "name": "Glühender Glaube", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/glowing-hands.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Die berührte Waffe – das Ziel des Zaubers – erglüht vor heiliger Kraft. Für die Wirkungsdauer des Zaubers gilt der mit der Waffe verursachte Schaden als magisch und der WB wird um VE/2 erhöht, während die Abwehr getroffener Gegner gegen Angriffe mit dieser Waffe um VE/2 gesenkt wird.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 6, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344475, + "modifiedTime": 1740227862560, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!919AW6tITRT8WikD" +} diff --git a/packs/spells/Halt_1hhpEYpQQ0oLNptl.json b/packs/spells/Halt_1hhpEYpQQ0oLNptl.json new file mode 100644 index 00000000..92163e90 --- /dev/null +++ b/packs/spells/Halt_1hhpEYpQQ0oLNptl.json @@ -0,0 +1,71 @@ +{ + "_id": "1hhpEYpQQ0oLNptl", + "name": "Halt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/skoll/halt.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg kann sich das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, nicht mehr bewegen.

\n

Die Starre endet vorzeitig, sollte das Ziel Schaden erhalten. Während der Starre ist es dem Ziel möglich, die Augen zu bewegen, zu atmen und klar zu denken. Ein erstarrter Zauberwirker könnte also immer noch seine Zauber wechseln oder gar versuchen, ohne Worte und Gesten (DS4 S. 47) einen Zauber zu wagen.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 6, + "sorcerer": 6 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344449, + "modifiedTime": 1740227862556, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1hhpEYpQQ0oLNptl" +} diff --git a/packs/spells/Heilbeeren_htK3mzAMFbTwYRTR.json b/packs/spells/Heilbeeren_htK3mzAMFbTwYRTR.json new file mode 100644 index 00000000..7958892d --- /dev/null +++ b/packs/spells/Heilbeeren_htK3mzAMFbTwYRTR.json @@ -0,0 +1,71 @@ +{ + "_id": "htK3mzAMFbTwYRTR", + "name": "Heilbeeren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/cherry.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Heiler benötigt frische Beeren, kleine Nüsse, schmackhafte Blätter o. ä. für diesen Zauber. Insgesamt wird von ihnen eine Anzahl gleich dem Probenergebnis (bei Druiden x 2) mit einem Heileffekt versehen: Jede Heilbeere heilt augenblicklich 1 LK (pro Aktion können bis zu 10 Heilbeeren verzehrt werden). Die Heilbeeren verlieren nach VE Tagen ihre Wirkung, oder wenn der Heiler den Zauber erneut anwendet.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 1, + "wizard": 10, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344856, + "modifiedTime": 1740227862583, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!htK3mzAMFbTwYRTR" +} diff --git a/packs/spells/Heilende_Aura_pFPofa4TEi69slEy.json b/packs/spells/Heilende_Aura_pFPofa4TEi69slEy.json new file mode 100644 index 00000000..f58cb2e8 --- /dev/null +++ b/packs/spells/Heilende_Aura_pFPofa4TEi69slEy.json @@ -0,0 +1,71 @@ +{ + "_id": "pFPofa4TEi69slEy", + "name": "Heilende Aura", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/beams-aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Heiler und alle seine Gefährten in einem Radius von VE in Metern erhalten 1 LK jede Kampfrunde geheilt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "Prb x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 1, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344880, + "modifiedTime": 1740227862586, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pFPofa4TEi69slEy" +} diff --git a/packs/spells/Heilende_Hand_FJE2X2GXFDs9LT7J.json b/packs/spells/Heilende_Hand_FJE2X2GXFDs9LT7J.json new file mode 100644 index 00000000..9e58d5c9 --- /dev/null +++ b/packs/spells/Heilende_Hand_FJE2X2GXFDs9LT7J.json @@ -0,0 +1,71 @@ +{ + "_id": "FJE2X2GXFDs9LT7J", + "name": "Heilende Hand", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/sbed/health-normal.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Durch Hand auflegen wird bei dem Ziel Lebenskraft in Höhe des Probenergebnisses geheilt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 1, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berührung", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "custom" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 1, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344515, + "modifiedTime": 1740227862564, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FJE2X2GXFDs9LT7J" +} diff --git a/packs/spells/Heilende_Strahlen_4StILfq4zNUWBAgz.json b/packs/spells/Heilende_Strahlen_4StILfq4zNUWBAgz.json new file mode 100644 index 00000000..9144ad00 --- /dev/null +++ b/packs/spells/Heilende_Strahlen_4StILfq4zNUWBAgz.json @@ -0,0 +1,71 @@ +{ + "_id": "4StILfq4zNUWBAgz", + "name": "Heilende Strahlen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sinusoidal-beam.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Lichtstrahlen schießen vom Heiler aus und heilen die Wunden von bis zu VE/2 Gefährten, die Lebenskraft in Höhe des Probenergebnisses dazu erhalten. Es wird nur eine Probe für diesen Zielzauber gewürfelt: Einzig der Distanzmalus (DS4 S. 43) des Ziels, das am weitesten entfernt steht, wird als Malus gewertet.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "2r", + "minimumLevels": { + "healer": 12, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344453, + "modifiedTime": 1740227862556, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!4StILfq4zNUWBAgz" +} diff --git a/packs/spells/Heilendes_Feld_HWjB5kPr3AZbFOFZ.json b/packs/spells/Heilendes_Feld_HWjB5kPr3AZbFOFZ.json new file mode 100644 index 00000000..745c7986 --- /dev/null +++ b/packs/spells/Heilendes_Feld_HWjB5kPr3AZbFOFZ.json @@ -0,0 +1,71 @@ +{ + "_id": "HWjB5kPr3AZbFOFZ", + "name": "Heilendes Feld", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/chained-heart.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber heilt bei allen Gefährten im Wirkungsradius die Lebenskraft um das Probenergebnis.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "custom" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 18, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344535, + "modifiedTime": 1740227862565, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HWjB5kPr3AZbFOFZ" +} diff --git a/packs/spells/Heilendes_Licht_9VLNUomSaxPTdfZY.json b/packs/spells/Heilendes_Licht_9VLNUomSaxPTdfZY.json new file mode 100644 index 00000000..9a6495fb --- /dev/null +++ b/packs/spells/Heilendes_Licht_9VLNUomSaxPTdfZY.json @@ -0,0 +1,71 @@ +{ + "_id": "9VLNUomSaxPTdfZY", + "name": "Heilendes Licht", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sunbeams.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein vom Heiler ausgehender Lichtstrahl heilt die Lebenskraft des Ziels in Höhe des Probenergebnisses.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "2r", + "minimumLevels": { + "healer": 4, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344478, + "modifiedTime": 1740227862561, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9VLNUomSaxPTdfZY" +} diff --git a/packs/spells/Heiliger_Hammer_QzcgykKQKztABe2a.json b/packs/spells/Heiliger_Hammer_QzcgykKQKztABe2a.json new file mode 100644 index 00000000..4a17240a --- /dev/null +++ b/packs/spells/Heiliger_Hammer_QzcgykKQKztABe2a.json @@ -0,0 +1,71 @@ +{ + "_id": "QzcgykKQKztABe2a", + "name": "Heiliger Hammer", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/hammer-drop.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Hammer aus hellem Licht erscheint innerhalb eines Radius von VE in Metern um den Heiler herum.

\n

Innerhalb dieses Wirkungsbereiches kämpft er völlig selbstständig, hört jedoch auf gedankliche Kampfkommandos des Zauberwirkers wie „Halte den Dämon auf“ oder „Helfe dem Paladin“.

\n

Bewegt sich der Charakter, wandert der Wirkungsbereich des Hammers mit ihm mit, so dass die heilige Waffe niemals mehr als VE x 2 in Metern von ihm entfernt sein kann. Der heilige Hammer verschwindet, sobald seine (nicht heilbaren) LK auf Null oder niedriger sinken bzw. die Zauberdauer abgelaufen ist.

\n

Sämtliche Kampfwerte des heiligen Hammers entsprechen der Stufe des Heilers +8. Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Heilers entspricht.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 10, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344613, + "modifiedTime": 1740227862571, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QzcgykKQKztABe2a" +} diff --git a/packs/spells/K_rperexplosion_apMuLg0knKnmC2Wv.json b/packs/spells/K_rperexplosion_apMuLg0knKnmC2Wv.json new file mode 100644 index 00000000..0c75f92f --- /dev/null +++ b/packs/spells/K_rperexplosion_apMuLg0knKnmC2Wv.json @@ -0,0 +1,71 @@ +{ + "_id": "apMuLg0knKnmC2Wv", + "name": "Körperexplosion", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/mine-explosion.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauber versucht das Ziel zur Explosion zu bringen. Der verursachte Schaden entspricht dem vierfachen Probenergebnis, das Ziel würfelt Abwehr ohne Panzerungsboni von Gegenständen.

\n

Der Zauber ist gegen körperlose Wesen – wie beispielsweise @Compendium[ds4.creatures.cE5kI3uqXWQrCaI5]{Geister} – nicht einsetzbar.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 20 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344714, + "modifiedTime": 1740227862578, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!apMuLg0knKnmC2Wv" +} diff --git a/packs/spells/Kettenblitz_gePnhgqnsmdEbj3Z.json b/packs/spells/Kettenblitz_gePnhgqnsmdEbj3Z.json new file mode 100644 index 00000000..35d054f0 --- /dev/null +++ b/packs/spells/Kettenblitz_gePnhgqnsmdEbj3Z.json @@ -0,0 +1,71 @@ +{ + "_id": "gePnhgqnsmdEbj3Z", + "name": "Kettenblitz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-lightning.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind, der auf bis zu VE weitere Gegner in seiner Nähe überspringt. Nur Gegner, die 2 oder mehr Meter von einem ihrer getroffenen Mitstreiter entfernt stehen, kann der Kettenblitz nicht erreichen.

\n

Getroffene Gegner in Metallrüstung dürfen keine Abwehr gegen einen Kettenblitz würfeln.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": true, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 16, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344849, + "modifiedTime": 1740227862583, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gePnhgqnsmdEbj3Z" +} diff --git a/packs/spells/Kleiner_Terror_dt2E4g7iwVqTSlMl.json b/packs/spells/Kleiner_Terror_dt2E4g7iwVqTSlMl.json new file mode 100644 index 00000000..3148f2ff --- /dev/null +++ b/packs/spells/Kleiner_Terror_dt2E4g7iwVqTSlMl.json @@ -0,0 +1,71 @@ +{ + "_id": "dt2E4g7iwVqTSlMl", + "name": "Kleiner Terror", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/cathelineau/dread.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg fliehen betroffene Ziele – maximal eine Anzahl gleich der halbierten Stufe des Zauberwirkers – so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren. Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "custom" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 2, + "wizard": 6, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344750, + "modifiedTime": 1740227862580, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dt2E4g7iwVqTSlMl" +} diff --git a/packs/spells/Kontrollieren_9gc1CF70165NXymH.json b/packs/spells/Kontrollieren_9gc1CF70165NXymH.json new file mode 100644 index 00000000..926f081e --- /dev/null +++ b/packs/spells/Kontrollieren_9gc1CF70165NXymH.json @@ -0,0 +1,71 @@ +{ + "_id": "9gc1CF70165NXymH", + "name": "Kontrollieren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/cathelineau/fomorian.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg bringt der Zauberwirker eine maximale Anzahl untoter Ziele gleich seiner Stufe unter Kontrolle, selbst wenn diese einem anderen Zauberwirker unterstehen.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche durch den Zauber betroffen sind. Alternativ kann auch ein einzelner Untoter als Ziel bestimmt werden.

\n

Kontrollierte Untote unterstehen dem Zauberwirker, führen bedingungslos seine Befehle aus und können nur auf Wunsch des Zauberwirkers wieder ihren Frieden finden, oder wenn dieser stirbt.

\n

Ein Zauberwirker kann nicht mehr Untote gleichzeitig kontrollieren, als seine eigene Stufe beträgt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis erlöst", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 8, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344481, + "modifiedTime": 1740227862561, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9gc1CF70165NXymH" +} diff --git a/packs/spells/Lauschen_WkZBOsMblhcrPRUF.json b/packs/spells/Lauschen_WkZBOsMblhcrPRUF.json new file mode 100644 index 00000000..adeedc8d --- /dev/null +++ b/packs/spells/Lauschen_WkZBOsMblhcrPRUF.json @@ -0,0 +1,71 @@ +{ + "_id": "WkZBOsMblhcrPRUF", + "name": "Lauschen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/human-ear.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann sein Hörzentrum an einen bis zu VE x 5 Meter entfernten Punkt verlagern (eine klare Sichtlinie vorausgesetzt) und vernimmt dadurch alles, was dort zu hören ist, als würde er sich dort befinden.

Dieser Punkt kann eine freie Stelle im Raum sein oder auch ein Kleidungsstück des Belauschten.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-1 pro 10 m Entfernung" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 6, + "wizard": 2, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344685, + "modifiedTime": 1740227862576, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!WkZBOsMblhcrPRUF" +} diff --git a/packs/spells/Licht_L4pdDXSYAOgtWIbd.json b/packs/spells/Licht_L4pdDXSYAOgtWIbd.json new file mode 100644 index 00000000..2e73dc39 --- /dev/null +++ b/packs/spells/Licht_L4pdDXSYAOgtWIbd.json @@ -0,0 +1,71 @@ +{ + "_id": "L4pdDXSYAOgtWIbd", + "name": "Licht", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/explosion-rays.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das berührte, leblose Ziel – beipielsweise ein Stab oder eine kleine, abdeckbare Münze – leuchtet fackelhell auf.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 5, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 1, + "wizard": 1, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344558, + "modifiedTime": 1740227862567, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!L4pdDXSYAOgtWIbd" +} diff --git a/packs/spells/Lichtlanze_1b32mq9AWEMuoBAs.json b/packs/spells/Lichtlanze_1b32mq9AWEMuoBAs.json new file mode 100644 index 00000000..bbdcedfd --- /dev/null +++ b/packs/spells/Lichtlanze_1b32mq9AWEMuoBAs.json @@ -0,0 +1,71 @@ +{ + "_id": "1b32mq9AWEMuoBAs", + "name": "Lichtlanze", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/sun-spear.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.lj8NQ5l4wLWmYcEt]{Lichtpfeil}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit (Settingoption)} einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 5, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "custom" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": 10, + "wizard": 12, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344448, + "modifiedTime": 1740227862555, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1b32mq9AWEMuoBAs" +} diff --git a/packs/spells/Lichtpfeil_lj8NQ5l4wLWmYcEt.json b/packs/spells/Lichtpfeil_lj8NQ5l4wLWmYcEt.json new file mode 100644 index 00000000..95e3d9b3 --- /dev/null +++ b/packs/spells/Lichtpfeil_lj8NQ5l4wLWmYcEt.json @@ -0,0 +1,71 @@ +{ + "_id": "lj8NQ5l4wLWmYcEt", + "name": "Lichtpfeil", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/middle-arrow.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gegen den Schaden dieses Zielzaubers erhalten @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit (Settingoption)} einen Malus von 2 auf ihre Abwehr.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 2, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": 2, + "wizard": 5, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344872, + "modifiedTime": 1740227862585, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lj8NQ5l4wLWmYcEt" +} diff --git a/packs/spells/Lichts_ule_6bptWPrq5gkX2UaT.json b/packs/spells/Lichts_ule_6bptWPrq5gkX2UaT.json new file mode 100644 index 00000000..57e14134 --- /dev/null +++ b/packs/spells/Lichts_ule_6bptWPrq5gkX2UaT.json @@ -0,0 +1,71 @@ +{ + "_id": "6bptWPrq5gkX2UaT", + "name": "Lichtsäule", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/laser-precision.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.6bptWPrq5gkX2UaT]{Lichtsäule}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit (Settingoption)} ebenfalls einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} können diesen Zauber nicht anwenden.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} addieren ihren Talentrang auf den PW der Zielzaubern-Probe der Lichtsäule.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 8, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": 16, + "wizard": 19, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344460, + "modifiedTime": 1740227862558, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6bptWPrq5gkX2UaT" +} diff --git a/packs/spells/Magie_bannen_tBWEyulMfJFzPuWM.json b/packs/spells/Magie_bannen_tBWEyulMfJFzPuWM.json new file mode 100644 index 00000000..3a1e61be --- /dev/null +++ b/packs/spells/Magie_bannen_tBWEyulMfJFzPuWM.json @@ -0,0 +1,71 @@ +{ + "_id": "tBWEyulMfJFzPuWM", + "name": "Magie bannen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/magic-swirl.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker bannt permanent einen Zauberspruch oder magischen Effekt. Die Probe wird durch die Stufe des Wesens, welches den Zauber wirkte, gemindert.

\n

Versucht man den Zauberspruch gegen ein magisches Wesen (worunter auch Zauberwirker fallen) anzuwenden, gilt dessen halbierte LK als Malus auf die Probe. Bei einem Erfolg wird das Ziel aber nicht automatisch gebannt, sondern erhält nicht abwehrbaren Schaden in Höhe des doppelten Probenergebnisses. Stirbt das Ziel, verschwindet es spurlos samt seiner getragenen Ausrüstung.

\n

Sollte der bannende Charakter die Probe jedoch nicht schaffen, kann er selbst zum Ziel des Zaubers werden: Der Zauberwirker würfelt augenblicklich und aktionsfrei erneut den Zauber – allerdings ist er diesmal selbst das Ziel. Alle angewendeten, verstärkenden Zaubereffekte (beispielsweise durch Talente), gelten auch bei diesem zweiten Wurf.

\n

Die gleiche Prozedur kommt zur Anwendung, wenn der Zauberwirker versucht, den magischen Effekt eines Gegenstandes zu bannen. Der ZB-Malus bei Gegenständen entspricht dabei der Stufesumme all derjenigen, die diesen Gegenstand erschufen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "- Wirkerstufe bzw. -LK / 2" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 12, + "wizard": 7, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344893, + "modifiedTime": 1740227862589, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tBWEyulMfJFzPuWM" +} diff --git a/packs/spells/Magie_entdecken_d1PUhzL8wuBe3mTl.json b/packs/spells/Magie_entdecken_d1PUhzL8wuBe3mTl.json new file mode 100644 index 00000000..8f8d8e53 --- /dev/null +++ b/packs/spells/Magie_entdecken_d1PUhzL8wuBe3mTl.json @@ -0,0 +1,71 @@ +{ + "_id": "d1PUhzL8wuBe3mTl", + "name": "Magie entdecken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/sparkles.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Scheitert ein Zauberwirker, die Magie einer Örtlichkeit, eines Objektes oder eines Wesen zu erspüren (DS4 S. 47), kann er sämtliche Magie im Wirkungsbreich – nur für ihn sichtbar – mit Hilfe dieses Zaubers für kurze Zeit aufleuchten sehen, sofern sie nicht verborgen ist (unter einem Umhang, in einer Truhe usw.).

\n

Betrachtet man Zauberwirker, leuchten diese ebenfalls kurz auf, je heller, desto mächtiger ist die Magie in ihnen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 1, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344738, + "modifiedTime": 1740227862579, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!d1PUhzL8wuBe3mTl" +} diff --git a/packs/spells/Magie_identifizieren_pUhIT77TSIDrv9Pi.json b/packs/spells/Magie_identifizieren_pUhIT77TSIDrv9Pi.json new file mode 100644 index 00000000..555741ba --- /dev/null +++ b/packs/spells/Magie_identifizieren_pUhIT77TSIDrv9Pi.json @@ -0,0 +1,71 @@ +{ + "_id": "pUhIT77TSIDrv9Pi", + "name": "Magie identifizieren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-axe.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Offenbart dem Zauberwirker die Quelle und/oder Funktion der Magie eines Objektes oder einer Örtlichkeit.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": 5, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344882, + "modifiedTime": 1740227862587, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pUhIT77TSIDrv9Pi" +} diff --git a/packs/spells/Magische_Barriere_KhmJCaFuP7Tgdw7q.json b/packs/spells/Magische_Barriere_KhmJCaFuP7Tgdw7q.json new file mode 100644 index 00000000..8b7e8bbc --- /dev/null +++ b/packs/spells/Magische_Barriere_KhmJCaFuP7Tgdw7q.json @@ -0,0 +1,71 @@ +{ + "_id": "KhmJCaFuP7Tgdw7q", + "name": "Magische Barriere", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/stone-wall.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker erschafft ein unbewegliches, würfelförmiges Kraftfeld mit einer Größe von maximal VE/2 m³, welches sämtliche Magie- und Zaubersprucheffekte nach innen und außen hin komplett abblockt. Weder @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerbälle}, noch @Compendium[ds4.spells.WkZBOsMblhcrPRUF]{Lauschen}- oder @Compendium[ds4.spells.ANV77WNlbZFRMssv]{Teleport}-Zauber können diese magische Barriere durchbrechen.

\n

Die magische Barriere verschwindet, sofern der Zauerwirker sie nicht – nach Ablauf der Spruchdauer – durch ununterbrochene Konzentration (zählt als ganze Aktion) aufrecht erhält.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE min oder Konzentration", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 14, + "wizard": 10, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344555, + "modifiedTime": 1740227862567, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KhmJCaFuP7Tgdw7q" +} diff --git a/packs/spells/Magische_R_stung_ZdlsX5F803JJEat6.json b/packs/spells/Magische_R_stung_ZdlsX5F803JJEat6.json new file mode 100644 index 00000000..2761314d --- /dev/null +++ b/packs/spells/Magische_R_stung_ZdlsX5F803JJEat6.json @@ -0,0 +1,71 @@ +{ + "_id": "ZdlsX5F803JJEat6", + "name": "Magische Rüstung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-mail.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Die Lebenskraft des Charakters erhöht sich um das Wurfergebnis. Erhält der Zauberwirker Schaden, kostet ihn das zuerst immer die (nicht heilbare) Lebenskraft der magischen Rüstung, bevor es an die eigene Lebenskraft geht. Die LK der magischen Rüstung bleiben erhalten, bis sie durch Schaden verloren sind, oder wenn der Charakter den Zauber abermals anwendet.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 4, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344699, + "modifiedTime": 1740227862577, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZdlsX5F803JJEat6" +} diff --git a/packs/spells/Magische_Waffe_ASvdS1fyjmRS1Xb6.json b/packs/spells/Magische_Waffe_ASvdS1fyjmRS1Xb6.json new file mode 100644 index 00000000..83260ca4 --- /dev/null +++ b/packs/spells/Magische_Waffe_ASvdS1fyjmRS1Xb6.json @@ -0,0 +1,71 @@ +{ + "_id": "ASvdS1fyjmRS1Xb6", + "name": "Magische Waffe", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/pointy-sword.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber verleiht einer Waffe magische Kräfte. Ihr WB erhöht sich für die Dauer des Zaubers um +1 und der mit ihr verursachte Schaden gilt als magisch, verletzt beispielsweise also auch körperlose Wesen wie Geister.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": 1, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344485, + "modifiedTime": 1740227862562, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ASvdS1fyjmRS1Xb6" +} diff --git a/packs/spells/Magisches_Schloss_dzYAc9ti7ghhkyiX.json b/packs/spells/Magisches_Schloss_dzYAc9ti7ghhkyiX.json new file mode 100644 index 00000000..27398e13 --- /dev/null +++ b/packs/spells/Magisches_Schloss_dzYAc9ti7ghhkyiX.json @@ -0,0 +1,71 @@ +{ + "_id": "dzYAc9ti7ghhkyiX", + "name": "Magisches Schloss", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/padlock.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber verschließt auf magische Weise eine Klappe, Truhe, Tür oder ähnliche Öffnung.

\n

Das Probenergebnis stellt die Erschwernis dar, um dieses Schloss zu öffnen (ob nun mit einem Dietrich, roher Gewalt oder Magie), nur der Zauberwirker selbst kann es ohne Probleme öffnen.

\n

Der Zauber kann auch auf ein mechanisches Schloss gesprochen werden, um dessen Schlosswert (SW) zu verstärken.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis Schloss geöffnet", + "unit": "custom" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 3, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344760, + "modifiedTime": 1740227862581, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dzYAc9ti7ghhkyiX" +} diff --git a/packs/spells/Manabrot_JvK5b8DXdHgaByjP.json b/packs/spells/Manabrot_JvK5b8DXdHgaByjP.json new file mode 100644 index 00000000..30c94342 --- /dev/null +++ b/packs/spells/Manabrot_JvK5b8DXdHgaByjP.json @@ -0,0 +1,71 @@ +{ + "_id": "JvK5b8DXdHgaByjP", + "name": "Manabrot", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sliced-bread.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker bündelt die magische Energien um sich herum und erschafft daraus warmes, aber geschmackloses Manabrot.

\n

Maximal kann der Zauberwirker eine Anzahl von Manabrot gleich seiner halbierten Stufe erschaffen. Jeder der blau-violetten, teigähnlichen Klumpen, entspricht einer ganzen Mahlzeit (von denen ein Erwachsener 3 pro Tag benötigt) für eine Person.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344550, + "modifiedTime": 1740227862566, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JvK5b8DXdHgaByjP" +} diff --git a/packs/spells/Nahrung_zaubern_l8o3vG0kW9qvFmBY.json b/packs/spells/Nahrung_zaubern_l8o3vG0kW9qvFmBY.json new file mode 100644 index 00000000..c789d594 --- /dev/null +++ b/packs/spells/Nahrung_zaubern_l8o3vG0kW9qvFmBY.json @@ -0,0 +1,71 @@ +{ + "_id": "l8o3vG0kW9qvFmBY", + "name": "Nahrung zaubern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/potato.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker bündelt die magische Energien um sich herum und erschafft daraus die Grundzutat einer einfachen Mahlzeit, wie etwa Linsen, Reis oder Rüben.

Maximal kann der Zauberwirker genügend Zutaten für eine Anzahl von Mahlzeiten (von denen ein Erwachsener 3 pro Tag benötigt) gleich seiner Stufe erschaffen

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 2, + "wizard": 7, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344869, + "modifiedTime": 1740227862584, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!l8o3vG0kW9qvFmBY" +} diff --git a/packs/spells/Netz_73bT47FtQgPp9Snq.json b/packs/spells/Netz_73bT47FtQgPp9Snq.json new file mode 100644 index 00000000..4af51994 --- /dev/null +++ b/packs/spells/Netz_73bT47FtQgPp9Snq.json @@ -0,0 +1,71 @@ +{ + "_id": "73bT47FtQgPp9Snq", + "name": "Netz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/spider-web.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Netz aus klebriger Astralmasse mit einem Radius von VE/2 in Metern erscheint.

\n

Vom Netz getroffene Wesen, welche keine Abwehr dagegen würfeln dürfen, halbieren für die Dauer des Zaubers Initiative, Laufen und Schlagen.

\n

Der Zauber wirkt nicht gegen Wesen, die 2+ Größenkategorien (DS4 S. 104) größer sind.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(AGI+ST)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 4, + "wizard": 9, + "sorcerer": 9 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344461, + "modifiedTime": 1740227862558, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!73bT47FtQgPp9Snq" +} diff --git a/packs/spells/Niesanfall_c9confMPTK2Q7AfX.json b/packs/spells/Niesanfall_c9confMPTK2Q7AfX.json new file mode 100644 index 00000000..15cedc91 --- /dev/null +++ b/packs/spells/Niesanfall_c9confMPTK2Q7AfX.json @@ -0,0 +1,71 @@ +{ + "_id": "c9confMPTK2Q7AfX", + "name": "Niesanfall", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/energy-breath.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg kann das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, sich vor lauter Niesen nur (mit halbiertem Laufen-Wert) bewegen, bis der Spruchwirker wieder an der Reihe ist.

\n

Der Niesanfall endet vorzeitig, sollte das Ziel Schaden erhalten.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "1", + "unit": "rounds" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 1, + "wizard": 3, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344729, + "modifiedTime": 1740227862578, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!c9confMPTK2Q7AfX" +} diff --git a/packs/spells/Putzteufel_gLzyooEA8RBya37o.json b/packs/spells/Putzteufel_gLzyooEA8RBya37o.json new file mode 100644 index 00000000..5365f60a --- /dev/null +++ b/packs/spells/Putzteufel_gLzyooEA8RBya37o.json @@ -0,0 +1,71 @@ +{ + "_id": "gLzyooEA8RBya37o", + "name": "Putzteufel", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-broom.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker erschafft einen kleinen, magischen Diener, der für ihn unglaublich flink putzt, aufräumt und packt.

\n

Ansonsten ist der Putzteufel völlig unütz, befolgt keine andersartigen Befehle und verpufft bei Schaden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "bis zu VE / 2", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344835, + "modifiedTime": 1740227862582, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gLzyooEA8RBya37o" +} diff --git a/packs/spells/Reinigen_ZXBYdYAtcs3FoTAx.json b/packs/spells/Reinigen_ZXBYdYAtcs3FoTAx.json new file mode 100644 index 00000000..b655da2c --- /dev/null +++ b/packs/spells/Reinigen_ZXBYdYAtcs3FoTAx.json @@ -0,0 +1,71 @@ +{ + "_id": "ZXBYdYAtcs3FoTAx", + "name": "Reinigen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/shower.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber reinigt eine ungewaschene Person, einen Gegenstand (wie einen schlammbesudelten Umhang) oder auch eine Mahlzeit (von Bakterien, Fäulnis und Gift).

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 3, + "wizard": 7, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344695, + "modifiedTime": 1740227862577, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZXBYdYAtcs3FoTAx" +} diff --git a/packs/spells/Rost_eMeuOnBODch7D9dm.json b/packs/spells/Rost_eMeuOnBODch7D9dm.json new file mode 100644 index 00000000..86be76a4 --- /dev/null +++ b/packs/spells/Rost_eMeuOnBODch7D9dm.json @@ -0,0 +1,71 @@ +{ + "_id": "eMeuOnBODch7D9dm", + "name": "Rost", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/rusty-sword.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber lässt bei Erfolg eine nichtmagische Waffe oder ein nichtmagisches Rüstungsteil aus Metall augenblicklich zu rostigem Staub zerfallen.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-WB der Waffe bzw. -PA der Rüstung" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 5, + "wizard": 7, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344764, + "modifiedTime": 1740227862581, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eMeuOnBODch7D9dm" +} diff --git a/packs/spells/Schatten_5mF59XCsZffF0cSp.json b/packs/spells/Schatten_5mF59XCsZffF0cSp.json new file mode 100644 index 00000000..560184a0 --- /dev/null +++ b/packs/spells/Schatten_5mF59XCsZffF0cSp.json @@ -0,0 +1,71 @@ +{ + "_id": "5mF59XCsZffF0cSp", + "name": "Schatten", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/shadow-follower.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dunkle Schatten umhüllen das Ziel (welches keine Abwehr dagegen würfeln darf), wodurch es -8 auf alle Handlungen hat, bei denen es besser sehen können sollte. Augenlosen Untoten, wie beispielsweise @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skeletten}, aber auch blinden Lebewesen, kann der Zauber nichts anhaben.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(AGI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "rounds" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344458, + "modifiedTime": 1740227862557, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5mF59XCsZffF0cSp" +} diff --git a/packs/spells/Schatten_erwecken_dPGm1Ji2U0fJxnT3.json b/packs/spells/Schatten_erwecken_dPGm1Ji2U0fJxnT3.json new file mode 100644 index 00000000..24eadfca --- /dev/null +++ b/packs/spells/Schatten_erwecken_dPGm1Ji2U0fJxnT3.json @@ -0,0 +1,71 @@ +{ + "_id": "dPGm1Ji2U0fJxnT3", + "name": "Schatten erwecken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/two-shadows.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Schwarzmagier kann die Seelen von einer maximalen Anzahl von Toten im Wirkungsradius gleich seiner eigenen Stufe verderben und in Form tödlicher @Compendium[ds4.creatures.T9YRYe0vnR4Qg4UM]{Schatten} (DS4 S. 121) zu gequältem Unleben erwecken. Die Schatten benötigen drei Kampfrunden, um sich zu bilden, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 13 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344742, + "modifiedTime": 1740227862579, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dPGm1Ji2U0fJxnT3" +} diff --git a/packs/spells/Schattenklinge_RUfE7hqqHCKMEMbh.json b/packs/spells/Schattenklinge_RUfE7hqqHCKMEMbh.json new file mode 100644 index 00000000..1fafd734 --- /dev/null +++ b/packs/spells/Schattenklinge_RUfE7hqqHCKMEMbh.json @@ -0,0 +1,71 @@ +{ + "_id": "RUfE7hqqHCKMEMbh", + "name": "Schattenklinge", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/blade-fall.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Die verzauberte Klinge verströmt rauchartige Schatten voll dunkler Magie. Die folgenden Effekte gelten nur, wenn ein Charakter mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} die Waffe benutzt:

\n

Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch. Jedesmal, wenn mit der Waffe Schaden verursacht wird, sinkt die Abwehr des Ziels um 1. Dieser Effekt endet, wenn die Zauberdauer abgelaufen ist.

\n

Schattenklinge ist nicht mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge}, @Compendium[ds4.spells.Gc5G9kixOqNbuwp1]{Frostwaffe}, @Compendium[ds4.spells.919AW6tITRT8WikD]{Glühender Glaube} oder @Compendium[ds4.spells.cggG4v6EBPmEZuAQ]{Waffe des Lichts} kombinierbar.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 8, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344617, + "modifiedTime": 1740227862572, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RUfE7hqqHCKMEMbh" +} diff --git a/packs/spells/Schattenlanze_b5RFJWPaYbpXNpsv.json b/packs/spells/Schattenlanze_b5RFJWPaYbpXNpsv.json new file mode 100644 index 00000000..32511554 --- /dev/null +++ b/packs/spells/Schattenlanze_b5RFJWPaYbpXNpsv.json @@ -0,0 +1,71 @@ +{ + "_id": "b5RFJWPaYbpXNpsv", + "name": "Schattenlanze", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/spear-hook.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.tPFiElqQuvih76gd]{Schattenpfeil}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 5, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344719, + "modifiedTime": 1740227862578, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!b5RFJWPaYbpXNpsv" +} diff --git a/packs/spells/Schattenpfeil_tPFiElqQuvih76gd.json b/packs/spells/Schattenpfeil_tPFiElqQuvih76gd.json new file mode 100644 index 00000000..267985d8 --- /dev/null +++ b/packs/spells/Schattenpfeil_tPFiElqQuvih76gd.json @@ -0,0 +1,71 @@ +{ + "_id": "tPFiElqQuvih76gd", + "name": "Schattenpfeil", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/energy-arrow.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gegen den Schaden dieses Zielzaubers erhalten @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} einen Malus von 2 auf ihre Abwehr.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 2, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344895, + "modifiedTime": 1740227862589, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tPFiElqQuvih76gd" +} diff --git a/packs/spells/Schattens_ule_mg3rChUVQrZ09gCW.json b/packs/spells/Schattens_ule_mg3rChUVQrZ09gCW.json new file mode 100644 index 00000000..585fe8a0 --- /dev/null +++ b/packs/spells/Schattens_ule_mg3rChUVQrZ09gCW.json @@ -0,0 +1,71 @@ +{ + "_id": "mg3rChUVQrZ09gCW", + "name": "Schattensäule", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/bubbling-beam.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.b5RFJWPaYbpXNpsv]{Schattenlanze}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} ebenfalls einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} addieren ihren Talentrang auf den PW der Zielzaubern-Probe Schattensäule.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 8, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": null, + "wizard": 20, + "sorcerer": 15 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344876, + "modifiedTime": 1740227862586, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mg3rChUVQrZ09gCW" +} diff --git a/packs/spells/Schleudern_bKCGwIne0uoWZiY0.json b/packs/spells/Schleudern_bKCGwIne0uoWZiY0.json new file mode 100644 index 00000000..5654d63a --- /dev/null +++ b/packs/spells/Schleudern_bKCGwIne0uoWZiY0.json @@ -0,0 +1,71 @@ +{ + "_id": "bKCGwIne0uoWZiY0", + "name": "Schleudern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/heavenly-dog/catapult.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauberspruch, gegen den das Ziel keine Abwehr würfeln kann, schleudert das Ziel (Probenergebnis/3) Meter weit fort.

\n

Das Ziel erhält für die Distanz, die es geschleudert wird (auch wenn eine Wand den Flug bremst) Sturzschaden (DS4 S. 85), gegen den es ganz normal Abwehr würfelt.

\n

Nach dem Fortschleudern liegt das Ziel immer am Boden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE / 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 16, + "wizard": 12, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344726, + "modifiedTime": 1740227862578, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!bKCGwIne0uoWZiY0" +} diff --git a/packs/spells/Schutzfeld_NWPoiZHCmZ7ZJud4.json b/packs/spells/Schutzfeld_NWPoiZHCmZ7ZJud4.json new file mode 100644 index 00000000..646ba6d7 --- /dev/null +++ b/packs/spells/Schutzfeld_NWPoiZHCmZ7ZJud4.json @@ -0,0 +1,71 @@ +{ + "_id": "NWPoiZHCmZ7ZJud4", + "name": "Schutzfeld", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/omega.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Schutzfeld mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, an dem nichtmagische Geschosse von außen her wirkungslos abprallen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 4, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344578, + "modifiedTime": 1740227862569, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NWPoiZHCmZ7ZJud4" +} diff --git a/packs/spells/Schutzkuppel_TKx3LO5ZWQuKpK04.json b/packs/spells/Schutzkuppel_TKx3LO5ZWQuKpK04.json new file mode 100644 index 00000000..f07bbc57 --- /dev/null +++ b/packs/spells/Schutzkuppel_TKx3LO5ZWQuKpK04.json @@ -0,0 +1,71 @@ +{ + "_id": "TKx3LO5ZWQuKpK04", + "name": "Schutzkuppel", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/shiny-omega.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine Schutzkuppel mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, solange er sich konzentriert (zählt als ganze Aktion).

\n

Die unbewegliche Kuppel ist von beiden Seiten unpassierbar – weder Angriffe, Personen noch Zauber wie @Compendium[ds4.spells.ANV77WNlbZFRMssv]{Teleport} gelangen hindurch.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Konzentration", + "unit": "custom" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": 8, + "wizard": 12, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344643, + "modifiedTime": 1740227862574, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TKx3LO5ZWQuKpK04" +} diff --git a/packs/spells/Schutzschild_dehnen_s31yIj9viKMLyaen.json b/packs/spells/Schutzschild_dehnen_s31yIj9viKMLyaen.json new file mode 100644 index 00000000..d2af2909 --- /dev/null +++ b/packs/spells/Schutzschild_dehnen_s31yIj9viKMLyaen.json @@ -0,0 +1,71 @@ +{ + "_id": "s31yIj9viKMLyaen", + "name": "Schutzschild dehnen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/alarm-clock.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Verdoppelt die erwürfelte Dauer eines @Compendium[ds4.spells.dpz383XbGFXEsGot]{Schutzschild}-Zaubers, der bereits auf das Ziel wirkt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 4, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344888, + "modifiedTime": 1740227862588, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!s31yIj9viKMLyaen" +} diff --git a/packs/spells/Schutzschild_dpz383XbGFXEsGot.json b/packs/spells/Schutzschild_dpz383XbGFXEsGot.json new file mode 100644 index 00000000..f015ab16 --- /dev/null +++ b/packs/spells/Schutzschild_dpz383XbGFXEsGot.json @@ -0,0 +1,71 @@ +{ + "_id": "dpz383XbGFXEsGot", + "name": "Schutzschild", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/bell-shield.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis die Dauer des Zaubers abgelaufen ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 4, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344746, + "modifiedTime": 1740227862580, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dpz383XbGFXEsGot" +} diff --git a/packs/spells/Schutzschild_st_rken_0O56S0JDXi2y71Pu.json b/packs/spells/Schutzschild_st_rken_0O56S0JDXi2y71Pu.json new file mode 100644 index 00000000..b80d24b8 --- /dev/null +++ b/packs/spells/Schutzschild_st_rken_0O56S0JDXi2y71Pu.json @@ -0,0 +1,71 @@ +{ + "_id": "0O56S0JDXi2y71Pu", + "name": "Schutzschild stärken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/diamond-hard.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Verdoppelt den Bonus auf die Abwehr eines @Compendium[ds4.spells.dpz383XbGFXEsGot]{Schutzschild}-Zaubers, der bereits auf das Ziel wirkt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 4, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344446, + "modifiedTime": 1740227862555, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0O56S0JDXi2y71Pu" +} diff --git a/packs/spells/Schweben_SPnYNGggFb8XRICE.json b/packs/spells/Schweben_SPnYNGggFb8XRICE.json new file mode 100644 index 00000000..1843856f --- /dev/null +++ b/packs/spells/Schweben_SPnYNGggFb8XRICE.json @@ -0,0 +1,71 @@ +{ + "_id": "SPnYNGggFb8XRICE", + "name": "Schweben", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/angel-wings.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel kann statt zu laufen auch lotrecht hoch und runter schweben.

Der Laufen-Wert beim Schweben ist dabei genau so hoch, wie am Boden (man kann im Schweben nicht rennen).

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "custom" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 7, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344620, + "modifiedTime": 1740227862572, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!SPnYNGggFb8XRICE" +} diff --git a/packs/spells/Schweig_rojd8AL3iXmGfc5m.json b/packs/spells/Schweig_rojd8AL3iXmGfc5m.json new file mode 100644 index 00000000..c973b3b9 --- /dev/null +++ b/packs/spells/Schweig_rojd8AL3iXmGfc5m.json @@ -0,0 +1,71 @@ +{ + "_id": "rojd8AL3iXmGfc5m", + "name": "Schweig", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/silenced.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, verstummt für die Dauer des Zauberspruchs. Verstummte Zauberwirker können solange nur wortlos zaubern (DS4 S. 47).

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE/2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 12, + "wizard": 10, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344886, + "modifiedTime": 1740227862588, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rojd8AL3iXmGfc5m" +} diff --git a/packs/spells/Segen_ZF5cwMCnw4Uf1MCz.json b/packs/spells/Segen_ZF5cwMCnw4Uf1MCz.json new file mode 100644 index 00000000..2fcb65dc --- /dev/null +++ b/packs/spells/Segen_ZF5cwMCnw4Uf1MCz.json @@ -0,0 +1,71 @@ +{ + "_id": "ZF5cwMCnw4Uf1MCz", + "name": "Segen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/holy-hand-grenade.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker und bis zu VE x 2 Kameraden in VE x 2 Meter Umkreis werden gesegnet.

\n

Für die Dauer des Zauberspruchs erhalten sie auf alle Proben einen PW-Bonus von +1.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 2, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344690, + "modifiedTime": 1740227862576, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZF5cwMCnw4Uf1MCz" +} diff --git a/packs/spells/Skelette_erwecken_bGs9MiTMj6k4d1Nl.json b/packs/spells/Skelette_erwecken_bGs9MiTMj6k4d1Nl.json new file mode 100644 index 00000000..86c87c54 --- /dev/null +++ b/packs/spells/Skelette_erwecken_bGs9MiTMj6k4d1Nl.json @@ -0,0 +1,71 @@ +{ + "_id": "bGs9MiTMj6k4d1Nl", + "name": "Skelette erwecken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/skoll/raise-skeleton.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Schwarzmagier kann eine maximale Anzahl von @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skeletten} (DS4 S. 122) im Wirkungsradius gleich seiner eigenen Stufe zu untotem Leben erwecken. Die Skelette benötigen drei Kampfrunden, um sich zu erheben, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 6 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344722, + "modifiedTime": 1740227862578, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!bGs9MiTMj6k4d1Nl" +} diff --git a/packs/spells/Spionage_xR5aBGFz3916e82x.json b/packs/spells/Spionage_xR5aBGFz3916e82x.json new file mode 100644 index 00000000..05150494 --- /dev/null +++ b/packs/spells/Spionage_xR5aBGFz3916e82x.json @@ -0,0 +1,71 @@ +{ + "_id": "xR5aBGFz3916e82x", + "name": "Spionage", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/spy.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker begibt sich in einen tranceähnlichen Zustand, in dem seine optischen und akustischen Sinne sich von seinem Körper lösen können.

\n

Sein unsichtbarer, hörender Blick bewegt sich mit einer konstanten Geschwindigkeit von VE Meter pro Kampfrunde und kann durch die kleinsten Öffnungen dringen. Der Zauberwirker sieht und hört dabei alles, als wäre er selbst vor Ort.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 8, + "wizard": 6, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344903, + "modifiedTime": 1740227862591, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xR5aBGFz3916e82x" +} diff --git a/packs/spells/Springen_L6NrH3AEmS2I3NWG.json b/packs/spells/Springen_L6NrH3AEmS2I3NWG.json new file mode 100644 index 00000000..06b0e5bc --- /dev/null +++ b/packs/spells/Springen_L6NrH3AEmS2I3NWG.json @@ -0,0 +1,71 @@ +{ + "_id": "L6NrH3AEmS2I3NWG", + "name": "Springen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker springt augenblicklich bis zu Probenergebnis/2 Meter weit und landet dabei wieder sicher auf seinen Beinen. Alternativ kann man auch hoch oder runter springen, beispielsweise um einen Balkon zu erreichen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 5, + "wizard": 2, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344560, + "modifiedTime": 1740227862568, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!L6NrH3AEmS2I3NWG" +} diff --git a/packs/spells/Spurt_KUbT1gBeThcLY7vU.json b/packs/spells/Spurt_KUbT1gBeThcLY7vU.json new file mode 100644 index 00000000..f4e72bf9 --- /dev/null +++ b/packs/spells/Spurt_KUbT1gBeThcLY7vU.json @@ -0,0 +1,71 @@ +{ + "_id": "KUbT1gBeThcLY7vU", + "name": "Spurt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/run.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Laufen-Wert des Ziels wird für die Dauer des Zaubers verdoppelt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 7, + "wizard": 7, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344553, + "modifiedTime": 1740227862567, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KUbT1gBeThcLY7vU" +} diff --git a/packs/spells/Steinwand_NRfYtF7tFoNMe1cR.json b/packs/spells/Steinwand_NRfYtF7tFoNMe1cR.json new file mode 100644 index 00000000..59e9d8f2 --- /dev/null +++ b/packs/spells/Steinwand_NRfYtF7tFoNMe1cR.json @@ -0,0 +1,71 @@ +{ + "_id": "NRfYtF7tFoNMe1cR", + "name": "Steinwand", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/brick-wall.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker erschafft eine Steinwand, die Ausmaße von bis zu 1 m x VE m x VE m annehmen kann und nicht wieder verschwindet.

\n

Die Steinwand muss auf festen Boden stehen und kann nicht an einem Ort erscheinen, wo sich bereits etwas befindet.

\n

Die Steinwand hat eine Abwehr gleich der dreifachen Stufe des Zauberwirkers, für den Fall, dass jemand sie mit Gewalt durchdringen will. Jeder einzelne Kubikmeter der Steinwand verfügt über LK in Höhe der Stufe des Zauberwirkers.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": true, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 14 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344573, + "modifiedTime": 1740227862569, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NRfYtF7tFoNMe1cR" +} diff --git a/packs/spells/Sto_gebet_DPFRVvfvmhCfcm7E.json b/packs/spells/Sto_gebet_DPFRVvfvmhCfcm7E.json new file mode 100644 index 00000000..747915c7 --- /dev/null +++ b/packs/spells/Sto_gebet_DPFRVvfvmhCfcm7E.json @@ -0,0 +1,71 @@ +{ + "_id": "DPFRVvfvmhCfcm7E", + "name": "Stoßgebet", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/kneeling.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine Druckwelle heiliger Macht schießt aus dem Heiler und bringt Gegner in einem Radius gleich seiner doppelten Stufe in Metern zu Fall.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 5, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344507, + "modifiedTime": 1740227862563, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DPFRVvfvmhCfcm7E" +} diff --git a/packs/spells/Stolpern_KIyVOdiXZnXJIAh6.json b/packs/spells/Stolpern_KIyVOdiXZnXJIAh6.json new file mode 100644 index 00000000..4b30b53f --- /dev/null +++ b/packs/spells/Stolpern_KIyVOdiXZnXJIAh6.json @@ -0,0 +1,71 @@ +{ + "_id": "KIyVOdiXZnXJIAh6", + "name": "Stolpern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/tripwire.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, stürzt augenblicklich zu Boden.

Misslingt ihm außerdem eine Probe auf AGI+GE, lässt er alles Gehaltene fallen.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(AGI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 4, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344552, + "modifiedTime": 1740227862567, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KIyVOdiXZnXJIAh6" +} diff --git a/packs/spells/Tanz_lQJvJQFzSxfriOlc.json b/packs/spells/Tanz_lQJvJQFzSxfriOlc.json new file mode 100644 index 00000000..0ee9e8ac --- /dev/null +++ b/packs/spells/Tanz_lQJvJQFzSxfriOlc.json @@ -0,0 +1,71 @@ +{ + "_id": "lQJvJQFzSxfriOlc", + "name": "Tanz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/ballerina-shoes.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, kann für die Dauer des Zauberspruchs nur tanzen (und dabei höchstens 1 m pro Kampfrunde laufen).

Das groteske Schauspiel endet vorzeitig, sollte das Ziel Schaden erhalten.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "minutes" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 8, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344870, + "modifiedTime": 1740227862584, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lQJvJQFzSxfriOlc" +} diff --git a/packs/spells/Tarnender_Nebel_BdBUObZr9RahUqxA.json b/packs/spells/Tarnender_Nebel_BdBUObZr9RahUqxA.json new file mode 100644 index 00000000..00c9ec01 --- /dev/null +++ b/packs/spells/Tarnender_Nebel_BdBUObZr9RahUqxA.json @@ -0,0 +1,71 @@ +{ + "_id": "BdBUObZr9RahUqxA", + "name": "Tarnender Nebel", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/fog.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine Nebelwolke mit einem Radius von maximal VE in Metern entsteht.

Angriffe gegen Ziele in der Nebelwolke werden um 8 erschwert, gleichsam erhalten alle innerhalb des Nebels -8 auf alle Proben, bei denen man besser sehen können sollte. Eine Nebelwolke kann durch Wind bewegt oder gar auseinander geweht werden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 4, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344494, + "modifiedTime": 1740227862563, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!BdBUObZr9RahUqxA" +} diff --git a/packs/spells/Telekinese_VGeMfTNSKWzNGm6r.json b/packs/spells/Telekinese_VGeMfTNSKWzNGm6r.json new file mode 100644 index 00000000..068385bd --- /dev/null +++ b/packs/spells/Telekinese_VGeMfTNSKWzNGm6r.json @@ -0,0 +1,71 @@ +{ + "_id": "VGeMfTNSKWzNGm6r", + "name": "Telekinese", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/sbed/weight-crush.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mit diesem Zauber lässt der Zauberwirker einen unbelebten Gegenstand mit einer Geschwindigkeit von 1 m pro Kampfrunde schweben, solange er sich ununterbrochen konzentriert (zählt als ganze Aktion).

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-1 pro (Stufe x 5) kg Gewicht" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Konzentration", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344670, + "modifiedTime": 1740227862575, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VGeMfTNSKWzNGm6r" +} diff --git a/packs/spells/Teleport_ANV77WNlbZFRMssv.json b/packs/spells/Teleport_ANV77WNlbZFRMssv.json new file mode 100644 index 00000000..cf4e5a1e --- /dev/null +++ b/packs/spells/Teleport_ANV77WNlbZFRMssv.json @@ -0,0 +1,71 @@ +{ + "_id": "ANV77WNlbZFRMssv", + "name": "Teleport", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/teleport.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber teleportiert den Zauberwirker und bis zu VE Begleiter an einen ihm bekannten Ort. War der Zauberwirker nur einmal dort und kennt ihn nur flüchtig, wird der PW der Zaubern-Probe halbiert. Bei einem Teleport-Patzer erscheinen die Charaktere in einem Objekt (zu tief im Boden, ein naher Baum) und erhalten W20 nicht abwehrbaren Schaden (2W20, wenn der Ort nur flüchtig bekannt ist).

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-1 pro Begleiter" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 20, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344484, + "modifiedTime": 1740227862562, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ANV77WNlbZFRMssv" +} diff --git a/packs/spells/Terror_SgDFje4OTxqPEzoA.json b/packs/spells/Terror_SgDFje4OTxqPEzoA.json new file mode 100644 index 00000000..747c421e --- /dev/null +++ b/packs/spells/Terror_SgDFje4OTxqPEzoA.json @@ -0,0 +1,71 @@ +{ + "_id": "SgDFje4OTxqPEzoA", + "name": "Terror", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/terror.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg fliehen betroffene Ziele – maximal eine Anzahl gleich der Stufe des Zauberwirkers – so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren.

Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 5, + "wizard": 9, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344636, + "modifiedTime": 1740227862573, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!SgDFje4OTxqPEzoA" +} diff --git a/packs/spells/Tierbeherschung_TVsayZ3WkUxyzKbL.json b/packs/spells/Tierbeherschung_TVsayZ3WkUxyzKbL.json new file mode 100644 index 00000000..6db20c31 --- /dev/null +++ b/packs/spells/Tierbeherschung_TVsayZ3WkUxyzKbL.json @@ -0,0 +1,71 @@ +{ + "_id": "TVsayZ3WkUxyzKbL", + "name": "Tierbeherschung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/charging-bull.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg wird das Tier zu einem willenlosen Sklaven des Zauberwirkers. Es befolgt alle seine einsilbigen Befehle, auch wenn diese den eigenen Tod bedeuten können.

Ein Zauberwirker kann niemals mehr als VE Tiere gleichzeitig durch diesen Zauber beherrschen.

Endet der Zauber, nimmt das Tier wieder sein ursprüngliches Verhalten an.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-LK / 2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 9, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344646, + "modifiedTime": 1740227862574, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TVsayZ3WkUxyzKbL" +} diff --git a/packs/spells/Tiere_bes_nftigen_GpdYH1BAO4tIf6Fj.json b/packs/spells/Tiere_bes_nftigen_GpdYH1BAO4tIf6Fj.json new file mode 100644 index 00000000..38970d36 --- /dev/null +++ b/packs/spells/Tiere_bes_nftigen_GpdYH1BAO4tIf6Fj.json @@ -0,0 +1,71 @@ +{ + "_id": "GpdYH1BAO4tIf6Fj", + "name": "Tiere besänftigen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/paw-heart.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aggressive Tiere im Wirkungsradius können mit diesem Zauber besänftigt werden. Magische Wesen (wie beispielsweise @Compendium[ds4.creatures.SQv63FQBjA5jW5xv]{Einhörner} oder @Compendium[ds4.creatures.O2maANGDJHPLX8aE]{Unwölfe}) sind gegen den Zauber immun, ebenso Tiere, die unter einem Kontrollzauber wie @Compendium[ds4.spells.TVsayZ3WkUxyzKbL]{Tierbeherschung} o.ä. stehen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-LK / 5 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 1, + "wizard": 7, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344530, + "modifiedTime": 1740227862565, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GpdYH1BAO4tIf6Fj" +} diff --git a/packs/spells/Totengespr_ch_sKCHnXV6c4w1CJWf.json b/packs/spells/Totengespr_ch_sKCHnXV6c4w1CJWf.json new file mode 100644 index 00000000..cabe7bb4 --- /dev/null +++ b/packs/spells/Totengespr_ch_sKCHnXV6c4w1CJWf.json @@ -0,0 +1,71 @@ +{ + "_id": "sKCHnXV6c4w1CJWf", + "name": "Totengespräch", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/half-dead.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann den Geist eines Toten befragen, dieser muss ihm antworten, allerdings nicht automatisch wahrheitsgemäß.

\n

Maximal wirkt der Zauber VE Minuten oder bis dem Geist VE Fragen gestellt wurden, die dieser nur mit „Ja“ oder „Nein“ beantwortet. Der Geist versteht die Sprache des Zauberwirkers und antwortet in dieser.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE Fragen, bzw. VE Minuten", + "unit": "custom" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 9 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344891, + "modifiedTime": 1740227862588, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sKCHnXV6c4w1CJWf" +} diff --git a/packs/spells/Trugbild_eMilydZd4gqDUsff.json b/packs/spells/Trugbild_eMilydZd4gqDUsff.json new file mode 100644 index 00000000..96445252 --- /dev/null +++ b/packs/spells/Trugbild_eMilydZd4gqDUsff.json @@ -0,0 +1,71 @@ +{ + "_id": "eMilydZd4gqDUsff", + "name": "Trugbild", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/mirror-mirror.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber erschafft eine rein optische, unbewegliche Illusion, deren Ausmaße maximal VE/2 Kubikmeter betragen können. Die Illusion ist mit einer erfolgreichen Bemerken-Probe (DS4 S. 89) – abzüglich des halbierten Probenergebnisses der Trugbild Zaubern-Probe – durchschaubar.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "hours" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344792, + "modifiedTime": 1740227862581, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eMilydZd4gqDUsff" +} diff --git a/packs/spells/Unsichtbares_sehen_nR6Wbt9k2c8SBVpT.json b/packs/spells/Unsichtbares_sehen_nR6Wbt9k2c8SBVpT.json new file mode 100644 index 00000000..9448292b --- /dev/null +++ b/packs/spells/Unsichtbares_sehen_nR6Wbt9k2c8SBVpT.json @@ -0,0 +1,71 @@ +{ + "_id": "nR6Wbt9k2c8SBVpT", + "name": "Unsichtbares sehen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible-face.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel erhält für die Dauer des Zauberspruchs die Fähigkeit, unsichtbare Objekte und Lebewesen ganz normal erkennen zu können.

\n

Magie, magische Effekte – bis auf den Zauberspruch @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} – oder auch verborgene Fallen gelten nicht als unsichtbar in Bezug auf diesen Zauberspruch.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 10, + "wizard": 12, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344878, + "modifiedTime": 1740227862586, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nR6Wbt9k2c8SBVpT" +} diff --git a/packs/spells/Unsichtbarkeit_EXqdD6yddQ4c0zAw.json b/packs/spells/Unsichtbarkeit_EXqdD6yddQ4c0zAw.json new file mode 100644 index 00000000..cf9cfab8 --- /dev/null +++ b/packs/spells/Unsichtbarkeit_EXqdD6yddQ4c0zAw.json @@ -0,0 +1,71 @@ +{ + "_id": "EXqdD6yddQ4c0zAw", + "name": "Unsichtbarkeit", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 20, + "wizard": 12, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344512, + "modifiedTime": 1740227862564, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!EXqdD6yddQ4c0zAw" +} diff --git a/packs/spells/Verborgenes_sehen_zWol1q702sjg2b7K.json b/packs/spells/Verborgenes_sehen_zWol1q702sjg2b7K.json new file mode 100644 index 00000000..a6835906 --- /dev/null +++ b/packs/spells/Verborgenes_sehen_zWol1q702sjg2b7K.json @@ -0,0 +1,71 @@ +{ + "_id": "zWol1q702sjg2b7K", + "name": "Verborgenes sehen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/secret-door.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann unbelebte Dinge – die verborgen oder absichtlich versteckt sind (Fallen, Geheimtüren u.ä.) – mit Hilfe dieses Zaubers für kurze Zeit aufleuchten sehen, selbst wenn sie durch etwas verdeckt sind, wie ein Vorhang oder ein Behältnis.

Der Zauber funktioniert nicht bei magischen oder unsichtbaren Objekten.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 8, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344907, + "modifiedTime": 1740227862592, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zWol1q702sjg2b7K" +} diff --git a/packs/spells/Verdampfen_s3nfDjJjDtiHGKzm.json b/packs/spells/Verdampfen_s3nfDjJjDtiHGKzm.json new file mode 100644 index 00000000..7878c249 --- /dev/null +++ b/packs/spells/Verdampfen_s3nfDjJjDtiHGKzm.json @@ -0,0 +1,71 @@ +{ + "_id": "s3nfDjJjDtiHGKzm", + "name": "Verdampfen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/smoking-orb.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel beginnt vor magischer Hitze regelrecht zu verdampfen. Der innerlich wirkende Schaden entspricht dem dreifachen Probenergebnis, das Ziel würfelt seine Abwehr ohne die Panzerungsboni von seinen Gegenständen.

\n

Der Zauber ist gegen wasserlose Wesen – wie beispielsweise @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skelette} oder @Compendium[ds4.creatures.tYcKw69Feoy3B6hG]{Feuerelementare} – nicht einsetzbar.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 20, + "sorcerer": 18 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344889, + "modifiedTime": 1740227862588, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!s3nfDjJjDtiHGKzm" +} diff --git a/packs/spells/Vergr__ern_uryiDdwKAwbASnuH.json b/packs/spells/Vergr__ern_uryiDdwKAwbASnuH.json new file mode 100644 index 00000000..3723a8fd --- /dev/null +++ b/packs/spells/Vergr__ern_uryiDdwKAwbASnuH.json @@ -0,0 +1,71 @@ +{ + "_id": "uryiDdwKAwbASnuH", + "name": "Vergrößern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/expand.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Die Körpergröße des freiwilligen Ziels – samt seiner Ausrüstung – verdoppelt sich augenblicklich. Charaktere nehmen die Größenkategorie „groß“ (DS4 S. 104) an.

Für die Dauer des Zauberspruchs werden KÖR, ST und HÄ sowie Laufen verdoppelt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344899, + "modifiedTime": 1740227862590, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uryiDdwKAwbASnuH" +} diff --git a/packs/spells/Verkleinern_ITWKevUdrtyBHjgR.json b/packs/spells/Verkleinern_ITWKevUdrtyBHjgR.json new file mode 100644 index 00000000..eae0020b --- /dev/null +++ b/packs/spells/Verkleinern_ITWKevUdrtyBHjgR.json @@ -0,0 +1,71 @@ +{ + "_id": "ITWKevUdrtyBHjgR", + "name": "Verkleinern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/contract.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das freiwillige Ziel – samt seiner Ausrüstung – wird auf ein Zehntel seiner Körpergröße verkleinert. Charaktere nehmen die Größenkategorie „winzig“ (DS4 S. 104) an.

Für die Dauer des Zauberspruchs werden KÖR, ST und HÄ halbiert und Laufen durch 10 geteilt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344543, + "modifiedTime": 1740227862565, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ITWKevUdrtyBHjgR" +} diff --git a/packs/spells/Verlangsamen_tqJ8DBLXcnCfrG3t.json b/packs/spells/Verlangsamen_tqJ8DBLXcnCfrG3t.json new file mode 100644 index 00000000..2a4f7dcc --- /dev/null +++ b/packs/spells/Verlangsamen_tqJ8DBLXcnCfrG3t.json @@ -0,0 +1,71 @@ +{ + "_id": "tqJ8DBLXcnCfrG3t", + "name": "Verlangsamen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/snail.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber halbiert den Laufen-Wert von einer maximalen Anzahl von Zielen gleich der halbierten Stufe des Zauberwirkers.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 3, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344897, + "modifiedTime": 1740227862589, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tqJ8DBLXcnCfrG3t" +} diff --git a/packs/spells/Versetzen_WETUfLs0pbo1odAp.json b/packs/spells/Versetzen_WETUfLs0pbo1odAp.json new file mode 100644 index 00000000..4fb194fd --- /dev/null +++ b/packs/spells/Versetzen_WETUfLs0pbo1odAp.json @@ -0,0 +1,71 @@ +{ + "_id": "WETUfLs0pbo1odAp", + "name": "Versetzen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/body-swapping.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das einwilligende Ziel wird bis zu Probenergebnis / 2 Meter weit teleportiert, eine klare Sichtlinie vorausgesetzt.

Reicht die ermittelte Entfernung nicht aus, um den Zielpunkt zu erreichen, wird der Charakter dennoch – so weit wie möglich – in dessen Richtung versetzt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 10, + "wizard": 6, + "sorcerer": 6 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344681, + "modifiedTime": 1740227862576, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!WETUfLs0pbo1odAp" +} diff --git a/packs/spells/Versetzte_Stimme_SaLY0K9FQRb1TQoQ.json b/packs/spells/Versetzte_Stimme_SaLY0K9FQRb1TQoQ.json new file mode 100644 index 00000000..31020498 --- /dev/null +++ b/packs/spells/Versetzte_Stimme_SaLY0K9FQRb1TQoQ.json @@ -0,0 +1,71 @@ +{ + "_id": "SaLY0K9FQRb1TQoQ", + "name": "Versetzte Stimme", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/lips.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann das von ihm Gesagte an einen bis zu VE x 10 Meter entfernten Punkt verlagern (eine klare Sichtlinie vorausgesetzt).

\n

Dieser Punkt kann eine freie Stelle im Raum sein oder auch ein Kleidungsstück einer Person.

\n

Jeder in Hörweite dieses Punktes kann den Zauberwirker hören.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-1 pro 10 Meter Entfernung" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 2, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344624, + "modifiedTime": 1740227862572, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!SaLY0K9FQRb1TQoQ" +} diff --git a/packs/spells/Verteidigung_0Jp3WM3Aba8VKcrb.json b/packs/spells/Verteidigung_0Jp3WM3Aba8VKcrb.json new file mode 100644 index 00000000..20f9384b --- /dev/null +++ b/packs/spells/Verteidigung_0Jp3WM3Aba8VKcrb.json @@ -0,0 +1,71 @@ +{ + "_id": "0Jp3WM3Aba8VKcrb", + "name": "Verteidigung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/templar-shield.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis der Zauberwirker in der nächsten Kampfrunde wieder an der Reihe ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "1", + "unit": "rounds" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 1, + "wizard": 4, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344444, + "modifiedTime": 1740227862555, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0Jp3WM3Aba8VKcrb" +} diff --git a/packs/spells/Vertreiben_QVcmtKpmT5HzIwur.json b/packs/spells/Vertreiben_QVcmtKpmT5HzIwur.json new file mode 100644 index 00000000..55d6fcfe --- /dev/null +++ b/packs/spells/Vertreiben_QVcmtKpmT5HzIwur.json @@ -0,0 +1,71 @@ +{ + "_id": "QVcmtKpmT5HzIwur", + "name": "Vertreiben", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/chalk-outline-murder.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Vertreibt eine Anzahl von Untoten im Wirkungsbereich gleich der halbierten Stufe des Zauberwirkers.

\n

Für die Dauer der Vertreibung ziehen sich die Untoten so schnell wie möglich von dem Zauberwirker zurück bis auf eine Distanz von Probenergebnis x 5 m.

\n

Bis zum Ablauf des Zaubers können die Untoten niemanden in seinem Wirkungsbereich angreifen.

\n

Der Effekt endet bei jedem Untoten, der Schaden erleidet.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche betroffen sind. Alternativ kann auch ein bestimmter Untoter als Ziel der Vertreibung bestimmt werden.

\n

Wird beim Vertreiben ein Immersieg gewürfelt, erhalten die betroffenen Untoten zusätzlichen abwehrbaren Schaden in der tatsächlichen Höhe des Immersiegs.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "minutes" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 1, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344603, + "modifiedTime": 1740227862570, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QVcmtKpmT5HzIwur" +} diff --git a/packs/spells/Verwandlung_4Wlx1LdkUK3BYctJ.json b/packs/spells/Verwandlung_4Wlx1LdkUK3BYctJ.json new file mode 100644 index 00000000..4c02e993 --- /dev/null +++ b/packs/spells/Verwandlung_4Wlx1LdkUK3BYctJ.json @@ -0,0 +1,71 @@ +{ + "_id": "4Wlx1LdkUK3BYctJ", + "name": "Verwandlung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/ghost-ally.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker nimmt das Aussehen einer anderen Person an, die seinem Volk angehören und gleichen Geschlechts sein muss.

\n

Handelt es sich um eine bestimmte Person, die der Charakter jedoch nur flüchtig oder aus der Ferne kennt, können ihm Fehler unterlaufen, wodurch Bekannte der Zielperson mit einer Bemerken-Probe den Zauber durchschauen können.

\n

Untote Wesen u. ä. kann man mit diesem rein optischen Effekt nicht täuschen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344455, + "modifiedTime": 1740227862557, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!4Wlx1LdkUK3BYctJ" +} diff --git a/packs/spells/Verwirren_niQVUxJHzdMDlwXc.json b/packs/spells/Verwirren_niQVUxJHzdMDlwXc.json new file mode 100644 index 00000000..34d9b959 --- /dev/null +++ b/packs/spells/Verwirren_niQVUxJHzdMDlwXc.json @@ -0,0 +1,71 @@ +{ + "_id": "niQVUxJHzdMDlwXc", + "name": "Verwirren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte…
1–5… greift die Charaktere an
6–10… läuft verwirrt in eine zufällige Richtung
11–15… steht verwirrt herum
16+… greift die eigenen Verbündeten an
", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 8, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344879, + "modifiedTime": 1740227862586, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!niQVUxJHzdMDlwXc" +} diff --git a/packs/spells/Volksgestalt_8Y5rUQhP8XCQM9xL.json b/packs/spells/Volksgestalt_8Y5rUQhP8XCQM9xL.json new file mode 100644 index 00000000..de762690 --- /dev/null +++ b/packs/spells/Volksgestalt_8Y5rUQhP8XCQM9xL.json @@ -0,0 +1,71 @@ +{ + "_id": "8Y5rUQhP8XCQM9xL", + "name": "Volksgestalt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/relationship-bounds.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bis zu VE einwilligende, humanoide Ziele (zu denen natürlich auch der Zauberwirker selbst gehören kann) in Reichweite werden in die Gestalt eines anderen humanoiden Volkes der gleichen Größenkategorie (DS4 S. 104) verwandelt (nicht jedoch seine Ausrüstung).

\n

Beispielsweise könnte man einen Menschen in einen Ork oder sogar in einen uralten Zwerg verwandeln.

\n

Der Charakter behält dabei all seine Fähigkeiten und erhält umgekehrt auch keine Fähigkeiten des Volkes, in das er verwandelt wurde.

\n

Während die Stimme sich dem neuen Volk anpasst, erinnern Augen und Gesichtzüge weiterhin an die eigentliche Gestalt des verwandelten Charakters.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344473, + "modifiedTime": 1740227862560, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8Y5rUQhP8XCQM9xL" +} diff --git a/packs/spells/W_chter_7HCeOPLYvb1SQxcV.json b/packs/spells/W_chter_7HCeOPLYvb1SQxcV.json new file mode 100644 index 00000000..18afc937 --- /dev/null +++ b/packs/spells/W_chter_7HCeOPLYvb1SQxcV.json @@ -0,0 +1,71 @@ +{ + "_id": "7HCeOPLYvb1SQxcV", + "name": "Wächter", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/static-guard.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein magischer Wächter alarmiert bzw. weckt den Zauberwirker, sobald ein Wesen sich bis auf VE x 2 Meter oder weniger dem Zielpunkt nähert.

\n

Dies gilt nicht für Wesen, die sich während des Zaubervorgangs bereits in diesem Bereich aufhielten.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 4, + "wizard": 6, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344463, + "modifiedTime": 1740227862558, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7HCeOPLYvb1SQxcV" +} diff --git a/packs/spells/Waffe_des_Lichts_cggG4v6EBPmEZuAQ.json b/packs/spells/Waffe_des_Lichts_cggG4v6EBPmEZuAQ.json new file mode 100644 index 00000000..f66a4e08 --- /dev/null +++ b/packs/spells/Waffe_des_Lichts_cggG4v6EBPmEZuAQ.json @@ -0,0 +1,71 @@ +{ + "_id": "cggG4v6EBPmEZuAQ", + "name": "Waffe des Lichts", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/aspergillum.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Die anvisierte Waffe erstrahlt mit der heiligen Kraft des Lichts.

\n

Die folgenden Effekte gelten nur, wenn ein Charakter mit dem Talent Diener des Lichts die Waffe benutzt:

\n

Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch.

\n

Jedesmal, wenn mit der Waffe Schaden verursacht wird, erhöht sich die Abwehr des Waffenträgers um 1.

\n

Dieser Effekt endet, wenn die Zauberdauer abgelaufen ist oder der Charakter die Waffe fallen lässt.

\n

Waffe des Lichts kann man nicht mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge}, @Compendium[ds4.spells.Gc5G9kixOqNbuwp1]{Frostwaffe} oder @Compendium[ds4.spells.RUfE7hqqHCKMEMbh]{Schattenklinge} kombinieren.

\n

Charaktere mit dem Talent Diener der Dunkelheit können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 7, + "wizard": 8, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344734, + "modifiedTime": 1740227862579, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cggG4v6EBPmEZuAQ" +} diff --git a/packs/spells/Wahnsinn_OODDFguw5Y113ywm.json b/packs/spells/Wahnsinn_OODDFguw5Y113ywm.json new file mode 100644 index 00000000..4cb08b56 --- /dev/null +++ b/packs/spells/Wahnsinn_OODDFguw5Y113ywm.json @@ -0,0 +1,71 @@ +{ + "_id": "OODDFguw5Y113ywm", + "name": "Wahnsinn", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/mad-scientist.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel des Zaubers wird auf der Stelle wahnsinnig und zu einem sabbernden Schwachsinnigen, dessen Geist fortan auf 0 gesenkt ist.

\n

Nur der Zauberspruch @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} kann diesen Effekt bannen, wofür pro wiederherzustellenden Punkt in GEI der Spruch jeweils einmal auf das Ziel angewendet werden muss.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 15 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344599, + "modifiedTime": 1740227862570, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!OODDFguw5Y113ywm" +} diff --git a/packs/spells/Wand_ffnung_7foZzrxZuX0dCh3C.json b/packs/spells/Wand_ffnung_7foZzrxZuX0dCh3C.json new file mode 100644 index 00000000..fbd55d98 --- /dev/null +++ b/packs/spells/Wand_ffnung_7foZzrxZuX0dCh3C.json @@ -0,0 +1,71 @@ +{ + "_id": "7foZzrxZuX0dCh3C", + "name": "Wandöffnung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/hole.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker öffnet ein kreisrundes Loch von 1 m Durchmesser in einer bis zu VE x 10 cm dicken, nichtmagischen Steinwand.

\n

Nach Ablauf des Zaubers verschwindet das Loch ohne Spuren zu hinterlassen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": true, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 14 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344466, + "modifiedTime": 1740227862558, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7foZzrxZuX0dCh3C" +} diff --git a/packs/spells/Wasser_teilen_zcuCpowoHDs7eIHn.json b/packs/spells/Wasser_teilen_zcuCpowoHDs7eIHn.json new file mode 100644 index 00000000..26f7cb63 --- /dev/null +++ b/packs/spells/Wasser_teilen_zcuCpowoHDs7eIHn.json @@ -0,0 +1,71 @@ +{ + "_id": "zcuCpowoHDs7eIHn", + "name": "Wasser teilen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/zigzag-hieroglyph.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann jegliche Gewässer teilen und eine 1 m breite Schneise bis zu Grund in sie schlagen, ihre Länge einzig und allein begrenzt durch den Entfernungsmalus auf Zielzauber (DS4 S. 43).

\n

Wird der Zauber gegen flüssige Wesen wie beispielsweise @Compendium[ds4.creatures.ZJF6ieo8O0GXfgwz]{Wasserelementare} eingesetzt, entspricht das Wurfergebnis nicht abwehrbaren Schaden, während die Zauberdauer nur noch augenblicklich ist.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": true, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Konzentration", + "unit": "custom" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": 12, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344908, + "modifiedTime": 1740227862592, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zcuCpowoHDs7eIHn" +} diff --git a/packs/spells/Wasser_weihen_TKkpNdYo6cbFq7Pt.json b/packs/spells/Wasser_weihen_TKkpNdYo6cbFq7Pt.json new file mode 100644 index 00000000..4df3b242 --- /dev/null +++ b/packs/spells/Wasser_weihen_TKkpNdYo6cbFq7Pt.json @@ -0,0 +1,71 @@ +{ + "_id": "TKkpNdYo6cbFq7Pt", + "name": "Wasser weihen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/holy-water.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Berührtes, reines Wasser wird zu heiligem @Compendium[ds4.equipment.RoXGTPdisjn6AdYK]{Weihwasser}. Bei jeder Anwendung des Zaubers stellt der Heiler eine Anzahl an Weihwassereinheiten (etwa 1/2 Liter) gleich dem halbierten Probenergebnis her, genügend „normales“ Wasser als Rohstoff vorausgesetzt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 1, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344639, + "modifiedTime": 1740227862573, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TKkpNdYo6cbFq7Pt" +} diff --git a/packs/spells/Wasserwandeln_mYZ3gFtRJASLL9pv.json b/packs/spells/Wasserwandeln_mYZ3gFtRJASLL9pv.json new file mode 100644 index 00000000..04786c32 --- /dev/null +++ b/packs/spells/Wasserwandeln_mYZ3gFtRJASLL9pv.json @@ -0,0 +1,71 @@ +{ + "_id": "mYZ3gFtRJASLL9pv", + "name": "Wasserwandeln", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/walk.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel des Zaubers kann eine Anzahl von Runden gleich dem Probenergebnis auf Wasser laufen, als befände es sich an Land.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": true, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 5, + "wizard": 9, + "sorcerer": 9 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344875, + "modifiedTime": 1740227862585, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mYZ3gFtRJASLL9pv" +} diff --git a/packs/spells/Wechselzauber_DNplbUwfxszg5UbZ.json b/packs/spells/Wechselzauber_DNplbUwfxszg5UbZ.json new file mode 100644 index 00000000..4763840f --- /dev/null +++ b/packs/spells/Wechselzauber_DNplbUwfxszg5UbZ.json @@ -0,0 +1,71 @@ +{ + "_id": "DNplbUwfxszg5UbZ", + "name": "Wechselzauber", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/magick-trick.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Präpariert einen Zauberspruch des Zauberwirkers, um einmalig aktionsfrei zu diesem zu wechseln.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 12, + "wizard": 10, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344503, + "modifiedTime": 1740227862563, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DNplbUwfxszg5UbZ" +} diff --git a/packs/spells/Wiederbelebung_duf86LKvOIyDXJbc.json b/packs/spells/Wiederbelebung_duf86LKvOIyDXJbc.json new file mode 100644 index 00000000..896e07ed --- /dev/null +++ b/packs/spells/Wiederbelebung_duf86LKvOIyDXJbc.json @@ -0,0 +1,71 @@ +{ + "_id": "duf86LKvOIyDXJbc", + "name": "Wiederbelebung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/heart-wings.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber belebt einen Charakter, der nicht eines natürlichen Todes starb, wieder zum Leben mit 1 LK.

\n

Das Ziel darf höchstens seit W20 Tagen tot sein und verliert bei der Wiederbelebung permanent 1 Punkt KÖR (DS4 S. 42).

\n

Charaktere mit KÖR 1 können folglich also nicht mehr mit Hilfe dieses Zauberspruchs wiederbelebt bleiben.

\n

Zu beachten ist, dass dieser Zauber keine besonderen Verletzungen heilt – beispielsweise sollte ein aufgeschlitzte Kehle oder ein zerstampfter Körper vor der Wiederbelebung mit dem Zauber @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} behandelt werden, um ein erneutes Ableben gleich nach der Wiederbelebung zu verhindern.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 10, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344757, + "modifiedTime": 1740227862580, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!duf86LKvOIyDXJbc" +} diff --git a/packs/spells/Wolke_der_Reue_aDitBSXiHFI67zDZ.json b/packs/spells/Wolke_der_Reue_aDitBSXiHFI67zDZ.json new file mode 100644 index 00000000..8987ad8e --- /dev/null +++ b/packs/spells/Wolke_der_Reue_aDitBSXiHFI67zDZ.json @@ -0,0 +1,71 @@ +{ + "_id": "aDitBSXiHFI67zDZ", + "name": "Wolke der Reue", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/tear-tracks.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine unsichtbare Wolke der Reue mit einem Radius von maximal VE in Metern entsteht.

Jeder Charakter innerhalb der Wolke empfindet ein unterschwelliges Schuldgefühl, wirkt leicht verunsichert und erhält dadurch -1 auf alle Proben.

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 1, + "wizard": 6, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344707, + "modifiedTime": 1740227862577, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aDitBSXiHFI67zDZ" +} diff --git a/packs/spells/Wolke_des_Todes_xs7tx8K3ZdQ76u0b.json b/packs/spells/Wolke_des_Todes_xs7tx8K3ZdQ76u0b.json new file mode 100644 index 00000000..f76af558 --- /dev/null +++ b/packs/spells/Wolke_des_Todes_xs7tx8K3ZdQ76u0b.json @@ -0,0 +1,71 @@ +{ + "_id": "xs7tx8K3ZdQ76u0b", + "name": "Wolke des Todes", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/skull-mask.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine schwarze, qualmende Wolke des Todes mit einem Radius von maximal VE in Metern entsteht.

\n

Zwar ist die Wolke nicht undurchsichtig, dennoch werden Angriffe gegen Ziele darin um 2 erschwert, gleichsam erhalten alle innerhalb der Wolke -2 auf alle Proben, bei denen man besser sehen können sollte.

\n

Jeder Charakter innerhalb der Wolke erleidet pro Runde automatisch einen nicht abwehrbaren Punkt Schaden.

\n

Sollte der Schwarzmagier über das Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} verfügen, wird sein Talentrang auf den nicht abwehrbaren Schaden, den jedes Opfer pro Kampfrunde erleidet, addiert.

\n

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": true, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 13 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344904, + "modifiedTime": 1740227862591, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xs7tx8K3ZdQ76u0b" +} diff --git a/packs/spells/Zauberabklang_uAgln8KHIaeK9G1I.json b/packs/spells/Zauberabklang_uAgln8KHIaeK9G1I.json new file mode 100644 index 00000000..27853e84 --- /dev/null +++ b/packs/spells/Zauberabklang_uAgln8KHIaeK9G1I.json @@ -0,0 +1,71 @@ +{ + "_id": "uAgln8KHIaeK9G1I", + "name": "Zauberabklang", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/backward-time.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mit diesem Zauber kann versucht werden, die Abklingzeit eines zuvor (innerhalb der letzten VE Kamfprunden) erfolgreich gewirkten Zauberspruchs wieder auf Null zu senken.

Misslingt die Probe, kann man den Zauberabklang bei diesem speziellen Zauberspruch erst wieder versuchen, wenn der Zauberwirker ihn abermals gewirkt hat.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "- eigene Zugangsstufe für den Spruch" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 10, + "wizard": 5, + "sorcerer": 9 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344898, + "modifiedTime": 1740227862590, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uAgln8KHIaeK9G1I" +} diff --git a/packs/spells/Zauberleiter_USNJNNF2jDaS6BDQ.json b/packs/spells/Zauberleiter_USNJNNF2jDaS6BDQ.json new file mode 100644 index 00000000..8df3393e --- /dev/null +++ b/packs/spells/Zauberleiter_USNJNNF2jDaS6BDQ.json @@ -0,0 +1,71 @@ +{ + "_id": "USNJNNF2jDaS6BDQ", + "name": "Zauberleiter", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/ladder.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine magische Leiter entsteht, die bis zu VE x Zauberwirkerstufe Meter hoch sein kann.

Die Leiter steht fest im Raum und benötigt keinen Halt. Sie bleibt, solange der Zauberwirker sich ununterbrochen konzentriert (zählt als ganze Aktion).

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Konzentration", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 8, + "wizard": 4, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344664, + "modifiedTime": 1740227862574, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!USNJNNF2jDaS6BDQ" +} diff --git a/packs/spells/Zaubertrick_kOCHuBrtIXOwoZ1J.json b/packs/spells/Zaubertrick_kOCHuBrtIXOwoZ1J.json new file mode 100644 index 00000000..fd93b2e4 --- /dev/null +++ b/packs/spells/Zaubertrick_kOCHuBrtIXOwoZ1J.json @@ -0,0 +1,71 @@ +{ + "_id": "kOCHuBrtIXOwoZ1J", + "name": "Zaubertrick", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-hat.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauberspruch erzeugt kleine, unschädliche Illusionen. Beispielsweise kann der Zauberwirker schwebende Bälle zaubern oder die Illusion eines Kaninchens aus einem Hut ziehen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344867, + "modifiedTime": 1740227862584, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kOCHuBrtIXOwoZ1J" +} diff --git a/packs/spells/Zeitstop_BGnY1p1qZXwpzXFA.json b/packs/spells/Zeitstop_BGnY1p1qZXwpzXFA.json new file mode 100644 index 00000000..2cdd4189 --- /dev/null +++ b/packs/spells/Zeitstop_BGnY1p1qZXwpzXFA.json @@ -0,0 +1,71 @@ +{ + "_id": "BGnY1p1qZXwpzXFA", + "name": "Zeitstop", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/time-trap.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker hält die Zeit an, bis die Zauberdauer endet oder er Schaden verursacht bzw. selber erleidet.

Andere Objekte und Lebewesen können nicht bewegt werden – sie sind starr in der Zeit eingefroren.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -5, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 20 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344490, + "modifiedTime": 1740227862562, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!BGnY1p1qZXwpzXFA" +} diff --git a/packs/spells/Zombies_erwecken_mBFPKvtK3Rmq7CFY.json b/packs/spells/Zombies_erwecken_mBFPKvtK3Rmq7CFY.json new file mode 100644 index 00000000..5e989850 --- /dev/null +++ b/packs/spells/Zombies_erwecken_mBFPKvtK3Rmq7CFY.json @@ -0,0 +1,71 @@ +{ + "_id": "mBFPKvtK3Rmq7CFY", + "name": "Zombies erwecken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/skoll/raise-zombie.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Schwarzmagier kann eine maximale Anzahl an Leichen gleich seiner eigenen Stufe im Wirkungsradius zu untotem Leben erwecken.

\n

Die @Compendium[ds4.creatures.rLUCyWfSBebB8cSC]{Zombies} (DS4 S. 125) benötigen drei Kampfrunden, um sich zu erheben, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344873, + "modifiedTime": 1740227862585, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mBFPKvtK3Rmq7CFY" +} diff --git a/packs/spells/_ffnen_ip0DVeb1YeNrEeUu.json b/packs/spells/_ffnen_ip0DVeb1YeNrEeUu.json new file mode 100644 index 00000000..46484376 --- /dev/null +++ b/packs/spells/_ffnen_ip0DVeb1YeNrEeUu.json @@ -0,0 +1,71 @@ +{ + "_id": "ip0DVeb1YeNrEeUu", + "name": "Öffnen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/padlock-open.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Öffnet ein Schloss, ohne es zu beschädigen. Der normalerweise immer +0 betragende Schlosswert (SW) kann durch bessere Qualität oder den Zauberspruch @Compendium[ds4.spells.dzYAc9ti7ghhkyiX]{Magisches Schloss} erhöht werden.

\n

Misslingt der Zauber, kann der Zauberwirker es erneut versuchen. Jeder Folgewurf senkt den PW der Zaubern-Proben bei diesem speziellen Schloss jedoch um jeweils 2.

\n

Dieser kumulative Malus gegen dieses eine Schloss erlischt erst, wenn der Zauberwirker eine neue Stufe erreicht.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-SW" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344866, + "modifiedTime": 1740227862584, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ip0DVeb1YeNrEeUu" +} diff --git a/packs/talents/Abklingen_w2Dn16q2f0gBxTch.json b/packs/talents/Abklingen_w2Dn16q2f0gBxTch.json new file mode 100644 index 00000000..2f50fb88 --- /dev/null +++ b/packs/talents/Abklingen_w2Dn16q2f0gBxTch.json @@ -0,0 +1,32 @@ +{ + "_id": "w2Dn16q2f0gBxTch", + "name": "Abklingen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent senkt die Zauberabklingzeit jedes Zaubers um 1 Runde pro Talentrang. Es ist jedoch nicht möglich, die Abklingzeit eines Zaubers unter Null zu senken.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349656, + "modifiedTime": 1740227862745, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!w2Dn16q2f0gBxTch" +} diff --git a/packs/talents/Abklingendes_Blut_yIcgnr9Xr7Kwocaj.json b/packs/talents/Abklingendes_Blut_yIcgnr9Xr7Kwocaj.json new file mode 100644 index 00000000..5fc5bc57 --- /dev/null +++ b/packs/talents/Abklingendes_Blut_yIcgnr9Xr7Kwocaj.json @@ -0,0 +1,32 @@ +{ + "_id": "yIcgnr9Xr7Kwocaj", + "name": "Abklingendes Blut", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Blutmagier kann für das Opfern von bis zu 1 LK pro Talentrang (zählt als freie Aktion) die Abklingzeit eines gerade abklingenden Zauberspruchs um jeweils 1 Runde senken.

\n

Pro weiterem Talentrang kann ein weiterer LK geopfert werden, wodurch die Abklingzeit um eine weitere Runde gesenkt wird.

\n

Abklingendes Blut ist mit dem Talent @Compendium[ds4.talents.w2Dn16q2f0gBxTch]{Abklingen} kombinierbar.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349660, + "modifiedTime": 1740227862746, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yIcgnr9Xr7Kwocaj" +} diff --git a/packs/talents/Aderschlitzer_JbGKvhxVEAdczQib.json b/packs/talents/Aderschlitzer_JbGKvhxVEAdczQib.json new file mode 100644 index 00000000..1a2fb7ae --- /dev/null +++ b/packs/talents/Aderschlitzer_JbGKvhxVEAdczQib.json @@ -0,0 +1,32 @@ +{ + "_id": "JbGKvhxVEAdczQib", + "name": "Aderschlitzer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird bei einem Angriff mit einem Messer, Dolch oder Einhandschwert bzw. mit einer Schußwaffe ein Würfelergebnis erzielt, welches gleich oder kleiner als der Talentrang in Aderschlitzer ist, wird die Abwehr des Gegners gegen diesen Angriff pro Talentrang um 5 gesenkt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349509, + "modifiedTime": 1740227862727, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JbGKvhxVEAdczQib" +} diff --git a/packs/talents/Adlergestalt_sSKiZ5hdQMBnAYRA.json b/packs/talents/Adlergestalt_sSKiZ5hdQMBnAYRA.json new file mode 100644 index 00000000..6320b68c --- /dev/null +++ b/packs/talents/Adlergestalt_sSKiZ5hdQMBnAYRA.json @@ -0,0 +1,32 @@ +{ + "_id": "sSKiZ5hdQMBnAYRA", + "name": "Adlergestalt", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Druide kann sich pro Talentrang einmal alle 24 Stunden samt seiner Ausrüstung (magische Boni von Gegenständen wirken dadurch weiterhin) in einen flugfähigen @Compendium[ds4.creatures.HjpxMlpyjPr3hd3r]{Adler} (DS4 S. 106) verwandeln. Auch kann er die Gestalt kleinerer Vögel annehmen. Die Verwandlung dauert 1 Runde. Der Effekt endet auf Wunsch des Druiden oder durch seinen Tod. Erlittener Schaden bleibt nach der Rückverwandlung gänzlich bestehen.

\n

GEI, VE und AU des Druiden verändern sich dabei nicht, jedoch nehmen alle anderen Attribute, Eigenschaften und Kampfwerte die Werte eines Adlers an.

\n

In Adlergestalt ist es dem Druiden nicht möglich, zu sprechen oder zu zaubern, wohl aber, Gesprochenes zu verstehen und die Sinne des Adlers einzusetzen. Zauber, die beispielsweise Tiere kontrollieren, haben auf den Druiden in Adlergestalt keinen Einfluss.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349641, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sSKiZ5hdQMBnAYRA" +} diff --git a/packs/talents/Akrobat_9qdc56F4XTntYoo9.json b/packs/talents/Akrobat_9qdc56F4XTntYoo9.json new file mode 100644 index 00000000..3d4133ef --- /dev/null +++ b/packs/talents/Akrobat_9qdc56F4XTntYoo9.json @@ -0,0 +1,90 @@ +{ + "_id": "9qdc56F4XTntYoo9", + "name": "Akrobat", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "ouQeQaI46fM2mq4D", + "changes": [ + { + "key": "system.checks.climb", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.jump", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Akrobatische Proben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!9qdc56F4XTntYoo9.ouQeQaI46fM2mq4D" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein geübter Kletterer und Turner. Auf alle Proben, bei denen es um athletisches Geschick, Balancieren oder Kletterkunst geht, erhält der Charakter einen Bonus von +2 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349488, + "modifiedTime": 1740227862724, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9qdc56F4XTntYoo9" +} diff --git a/packs/talents/Alchemie_XUyuomVVOxuSSKXl.json b/packs/talents/Alchemie_XUyuomVVOxuSSKXl.json new file mode 100644 index 00000000..7eb4b2dd --- /dev/null +++ b/packs/talents/Alchemie_XUyuomVVOxuSSKXl.json @@ -0,0 +1,32 @@ +{ + "_id": "XUyuomVVOxuSSKXl", + "name": "Alchemie", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird benötigt, um magische Tränke zu brauen (DS4 S. 101).

\n

Jeder Talentrang reduziert die Zubereitungsdauer von Tränken und gibt +1 auf Proben, um diese herzustellen oder zu identifizieren (DS4 S. 47).

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349553, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XUyuomVVOxuSSKXl" +} diff --git a/packs/talents/Arkane_Explosion_hGuQT644hBIM8G4J.json b/packs/talents/Arkane_Explosion_hGuQT644hBIM8G4J.json new file mode 100644 index 00000000..15e3881a --- /dev/null +++ b/packs/talents/Arkane_Explosion_hGuQT644hBIM8G4J.json @@ -0,0 +1,32 @@ +{ + "_id": "hGuQT644hBIM8G4J", + "name": "Arkane Explosion", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden sein magisches Potenzial in einer kugelförmigen, arkanen Explosion entladen, deren Mittelpunkt er bildet.

\n

Die Kugel hat einen festen Durchmesser von Stufe/2 Meter und verursacht nicht abwehrbaren Schaden mit einem Probenwert von 10 pro Talentrang.

\n

Pro Gefährten, der im Explosionsradius steht, kann der Charakter GEI+VE würfeln, um ihn vor dem Schaden zu bewahren.

\n

Das Talent @Compendium[ds4.talents.2ASdMhcx0hN3ZpPc]{Explosionskontrolle} kann hier ebenfalls angewendet werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349605, + "modifiedTime": 1740227862738, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hGuQT644hBIM8G4J" +} diff --git a/packs/talents/Ausweichen_h8rhfVd2pINsa4d2.json b/packs/talents/Ausweichen_h8rhfVd2pINsa4d2.json new file mode 100644 index 00000000..da6f3912 --- /dev/null +++ b/packs/talents/Ausweichen_h8rhfVd2pINsa4d2.json @@ -0,0 +1,32 @@ +{ + "_id": "h8rhfVd2pINsa4d2", + "name": "Ausweichen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf einen gegen ihn gerichteten Nahkampfangriff komplett ignorieren (zählt als freie Aktion). Dass der Charakter einem Angriff ausweichen will, muss angesagt werden, bevor feststeht, ob dieser Schlag ihn trifft oder nicht. Gegen Angriffe von Gegnern, die 2+ Größenkategorien (DS4 S. 104) größer sind, ist das Talent wirkungslos.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349602, + "modifiedTime": 1740227862737, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!h8rhfVd2pINsa4d2" +} diff --git a/packs/talents/B_ndiger_kqm5iBvDGn8NQ4BR.json b/packs/talents/B_ndiger_kqm5iBvDGn8NQ4BR.json new file mode 100644 index 00000000..24cc8d50 --- /dev/null +++ b/packs/talents/B_ndiger_kqm5iBvDGn8NQ4BR.json @@ -0,0 +1,32 @@ +{ + "_id": "kqm5iBvDGn8NQ4BR", + "name": "Bändiger", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Einmal pro Talentrang kann der Charakter mit GEI+AU versuchen, einer selbst beschworenen bzw. selbst herbeigerufenen Wesenheit, die er nicht unter seine Kontrolle bringen konnte (die Probe auf Zaubern also misslang), dennoch seinen Willen aufzuzwingen (jeder Versuch zählt als eine ganze Aktion). Bei einem Erfolg kann der Charakter versuchen, noch ein weiteres Wesen (sofern vorhanden) in der gleichen Runde zu bändigen (zählt nun als freie Aktion), insgesamt jedoch nicht mehr zusätzliche Wesenheiten pro Runde, als sein Talentrang beträgt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349615, + "modifiedTime": 1740227862739, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kqm5iBvDGn8NQ4BR" +} diff --git a/packs/talents/B_rengestalt_8pylauN1hY933vrQ.json b/packs/talents/B_rengestalt_8pylauN1hY933vrQ.json new file mode 100644 index 00000000..8925940a --- /dev/null +++ b/packs/talents/B_rengestalt_8pylauN1hY933vrQ.json @@ -0,0 +1,32 @@ +{ + "_id": "8pylauN1hY933vrQ", + "name": "Bärengestalt", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Druide kann sich pro Talentrang einmal alle 24 Stunden samt seiner Ausrüstung (magische Boni von Gegenständen wirken dadurch weiterhin) in einen @Compendium[ds4.creatures.InLjj4RGxfkDrtXr]{Bären} (DS4 S. 106) verwandeln. Alternativ kann in Absprache mit dem Spielleiter bei Talenterwerb auch ein anderes „großes“ (DS4 S. 104) Tier gewählt werden. Die Verwandlung dauert 1 Runde. Der Effekt endet auf Wunsch des Druiden oder durch seinen Tod. Erlittener Schaden bleibt nach der Rückverwandlung gänzlich bestehen.

\n

GEI, VE und AU des Druiden verändern sich nicht, jedoch nehmen alle anderen Attribute, Eigenschaften und Kampfwerte die Werte des Tieres an.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349484, + "modifiedTime": 1740227862723, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8pylauN1hY933vrQ" +} diff --git a/packs/talents/Beschw_rer_MIYh9GTkm7xIquWK.json b/packs/talents/Beschw_rer_MIYh9GTkm7xIquWK.json new file mode 100644 index 00000000..721ec6a0 --- /dev/null +++ b/packs/talents/Beschw_rer_MIYh9GTkm7xIquWK.json @@ -0,0 +1,84 @@ +{ + "_id": "MIYh9GTkm7xIquWK", + "name": "Beschwörer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "1Lrnk4tNGWXSdCd1", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.demonology" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Dämonologie +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!MIYh9GTkm7xIquWK.1Lrnk4tNGWXSdCd1" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein Experte im Beschwören von Dämonen. Er erhält auf alle Versuche, Dämonen zu beschwören und diese zu kontrollieren einen Bonus von +2 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349517, + "modifiedTime": 1740227862728, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MIYh9GTkm7xIquWK" +} diff --git a/packs/talents/Beute_Sch_tzen_5eEaKiUSzWBhG8Bn.json b/packs/talents/Beute_Sch_tzen_5eEaKiUSzWBhG8Bn.json new file mode 100644 index 00000000..4b3a54c4 --- /dev/null +++ b/packs/talents/Beute_Sch_tzen_5eEaKiUSzWBhG8Bn.json @@ -0,0 +1,84 @@ +{ + "_id": "5eEaKiUSzWBhG8Bn", + "name": "Beute Schätzen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "HHnWhHQf9ibLVCAP", + "changes": [ + { + "key": "system.checks.appraise", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schätzen +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!5eEaKiUSzWBhG8Bn.HHnWhHQf9ibLVCAP" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter erhält pro Talentrang einen Bonus von +3, wenn er den Wert eines Gegenstandes schätzt.

\n

Auch kann er mit GEI+AU spüren, ob dieser magisch ist (nicht aber im Anschluss mit GEI+VE, wie Zauberwirker, seine Funktionsweise erkennen), worauf der gleiche Bonus angerechnet wird.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349465, + "modifiedTime": 1740227862721, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5eEaKiUSzWBhG8Bn" +} diff --git a/packs/talents/Bildung_KgOHPx5oQHKBuVPc.json b/packs/talents/Bildung_KgOHPx5oQHKBuVPc.json new file mode 100644 index 00000000..b9601058 --- /dev/null +++ b/packs/talents/Bildung_KgOHPx5oQHKBuVPc.json @@ -0,0 +1,90 @@ +{ + "_id": "KgOHPx5oQHKBuVPc", + "name": "Bildung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "JbL6BC0HyUKyxBvd", + "changes": [ + { + "key": "system.checks.decipherScript", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.communicate", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Bildungsproben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!KgOHPx5oQHKBuVPc.JbL6BC0HyUKyxBvd" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter hat einen gewissen Grad an Bildung erworben.

\n

Im Gegensatz zu dem Talent @Compendium[ds4.talents.IB1OJ65TseuSw9ZI]{Wissensegebiet}, welches nur einzelne Themengebiete umfasst, erhält man durch das Talent Bildung einen +2 Bonus pro Talentrang auf alle Proben, bei denen es um Allgemeinwissen oder das Lösen von Rätseln geht.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349513, + "modifiedTime": 1740227862728, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KgOHPx5oQHKBuVPc" +} diff --git a/packs/talents/Blitzmacher_zhzVJz6WhSMMeTuY.json b/packs/talents/Blitzmacher_zhzVJz6WhSMMeTuY.json new file mode 100644 index 00000000..b9474c28 --- /dev/null +++ b/packs/talents/Blitzmacher_zhzVJz6WhSMMeTuY.json @@ -0,0 +1,84 @@ +{ + "_id": "zhzVJz6WhSMMeTuY", + "name": "Blitzmacher", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "zcVXFPGvCoUuso15", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.lightning && @item.system.spellGroups.damage" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Blitzschadenszauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!zhzVJz6WhSMMeTuY.zcVXFPGvCoUuso15" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker ist geübt im Umgang mit Zaubersprüchen, die Blitze erzeugen.

\n

Er erhält auf alle Zauber, die Blitzschaden verursachen, einen Bonus von +1 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349662, + "modifiedTime": 1740227862747, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zhzVJz6WhSMMeTuY" +} diff --git a/packs/talents/Blocker_9y7I3NIFuFC5lG4s.json b/packs/talents/Blocker_9y7I3NIFuFC5lG4s.json new file mode 100644 index 00000000..6c911229 --- /dev/null +++ b/packs/talents/Blocker_9y7I3NIFuFC5lG4s.json @@ -0,0 +1,32 @@ +{ + "_id": "9y7I3NIFuFC5lG4s", + "name": "Blocker", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter versteht es, im Kampf seinen Schild geschickt einzusetzen.

\n

In jeder Kampfrunde, in der er keine offensive Handlung unternimmt, dabei einen Schild führt und sich nicht einen Schritt bewegt, erhält er pro Talentrang +2 auf seine Abwehr gegen alle Angriffe, derer er sich bewusst ist und die nicht von hinten erfolgen. Zusätzlich kann er mit demselben Bonus KÖR+HÄ aktionsfrei würfeln, um im Kampf nicht zurückgedrängt zu werden (DS4 S. 44). Einmal pro Kampf kann ein Blocker pro Talentrang einen Patzer bei der Abwehr wiederholen, auch wenn er gerade eine offensiv Handlung unternimmt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349489, + "modifiedTime": 1740227862724, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9y7I3NIFuFC5lG4s" +} diff --git a/packs/talents/Blutige_Heilung_ODepf0g8Us5jBqLm.json b/packs/talents/Blutige_Heilung_ODepf0g8Us5jBqLm.json new file mode 100644 index 00000000..276dd512 --- /dev/null +++ b/packs/talents/Blutige_Heilung_ODepf0g8Us5jBqLm.json @@ -0,0 +1,32 @@ +{ + "_id": "ODepf0g8Us5jBqLm", + "name": "Blutige Heilung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Blutmagier einmal pro Kampf (außerhalb eines Kampfes beliebig oft) versuchen, sich mit der Kraft des eigenen Blutes zu heilen (zählt als eine freie Aktion, die einmal pro Runde möglich ist), was allerdings auch misslingen kann.

\n

Der Charakter würfelt dafür mit einem Probenwert gleich seiner eigenen Stufe.

\n

Bei einem Erfolg wird er um das doppelte Probenergebnis geheilt, bei einem Misserfolg erleidet er jedoch nicht abwehrbaren Schaden gleich seinem doppelten Talentrang. Bei einem Patzer ist das Talent außerdem W20 Stunden nicht mehr einsetzbar.

\n

Wird bei der blutigen Heilung das Talent @Compendium[ds4.talents.AM8Wp2ZVwWgbUXQz]{Macht des Blutes} angewendet, wird als dessen Bonus das Attribut KÖR bzw. GEI verwendet, was immer höher ist.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349530, + "modifiedTime": 1740227862730, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ODepf0g8Us5jBqLm" +} diff --git a/packs/talents/Blutschild_hUfTQbzMpbOH03qq.json b/packs/talents/Blutschild_hUfTQbzMpbOH03qq.json new file mode 100644 index 00000000..d6f52e39 --- /dev/null +++ b/packs/talents/Blutschild_hUfTQbzMpbOH03qq.json @@ -0,0 +1,32 @@ +{ + "_id": "hUfTQbzMpbOH03qq", + "name": "Blutschild", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Blutmagier kann für das Opfern von 2 LK seine Abwehr für W20 Runden um +2 erhöhen (zählt als freie Aktion).

\n

Pro weiteren Talentrang können zwei weitere LK geopfert werden, welche die Abwehr um weitere +2 erhöhen.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349606, + "modifiedTime": 1740227862738, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hUfTQbzMpbOH03qq" +} diff --git a/packs/talents/Brutaler_Hieb_ZnT8LMCRqZS3zpJO.json b/packs/talents/Brutaler_Hieb_ZnT8LMCRqZS3zpJO.json new file mode 100644 index 00000000..3f9d2c70 --- /dev/null +++ b/packs/talents/Brutaler_Hieb_ZnT8LMCRqZS3zpJO.json @@ -0,0 +1,84 @@ +{ + "_id": "ZnT8LMCRqZS3zpJO", + "name": "Brutaler Hieb", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "aC7UEoDRrwhs7j3U", + "changes": [ + { + "key": "system.checks.featOfStrength", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Kraftakt +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZnT8LMCRqZS3zpJO.aC7UEoDRrwhs7j3U" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf seinen Wert in Schlagen für einen Angriff um den Wert von KÖR erhöhen.

\n

Es ist möglich, mehrere Talentränge in einem einzigen Schlag zu vereinen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349558, + "modifiedTime": 1740227862734, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZnT8LMCRqZS3zpJO" +} diff --git a/packs/talents/Charmant_pAOP7wkvhtsNIPQ8.json b/packs/talents/Charmant_pAOP7wkvhtsNIPQ8.json new file mode 100644 index 00000000..28a2f671 --- /dev/null +++ b/packs/talents/Charmant_pAOP7wkvhtsNIPQ8.json @@ -0,0 +1,90 @@ +{ + "_id": "pAOP7wkvhtsNIPQ8", + "name": "Charmant", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "PzOc07kYoWYygECD", + "changes": [ + { + "key": "system.checks.flirt", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.haggle", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Soziale Proben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!pAOP7wkvhtsNIPQ8.PzOc07kYoWYygECD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Auf sämtliche Proben sozialer Interaktion, beispielsweise um sympathisch aufzutreten oder eine Geschichte glaubhafter zu berichten, erhält der Charakter pro Talentrang einen Bonus von +2 (bei Vertretern des anderen Geschlechts sogar +3).

\n

Settingoption:
In vielen Settings ist es Zwergen verwehrt, dieses Talent zu erlernen.

\n

 

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349630, + "modifiedTime": 1740227862741, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pAOP7wkvhtsNIPQ8" +} diff --git a/packs/talents/D_monen_zerschmettern_DZcu8KQFWChBVPRR.json b/packs/talents/D_monen_zerschmettern_DZcu8KQFWChBVPRR.json new file mode 100644 index 00000000..7eb95447 --- /dev/null +++ b/packs/talents/D_monen_zerschmettern_DZcu8KQFWChBVPRR.json @@ -0,0 +1,32 @@ +{ + "_id": "DZcu8KQFWChBVPRR", + "name": "Dämonen zerschmettern", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden einen Nahkampfangriff gegen einen Dämonen führen, der nicht abgewehrt werden kann.

\n

Vor dem Angriffswurf muss angesagt werden, dass das Talent zum Einsatz kommen soll, welches mit Talenten wie @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb} und/oder @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} kombiniert werden kann.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349497, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DZcu8KQFWChBVPRR" +} diff --git a/packs/talents/D_monenbrut_7H5VfdfMACJbv8bz.json b/packs/talents/D_monenbrut_7H5VfdfMACJbv8bz.json new file mode 100644 index 00000000..53165336 --- /dev/null +++ b/packs/talents/D_monenbrut_7H5VfdfMACJbv8bz.json @@ -0,0 +1,32 @@ +{ + "_id": "7H5VfdfMACJbv8bz", + "name": "Dämonenbrut", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Dämonologe auf Wunsch bei einer Beschwörung einen weiteren Dämon gleichen Typs beschwören. Ein zusätzlicher Beschwörungskreis oder eine weitere Probe werden dafür nicht benötigt.

\n

Sollte die Beschwörung misslingen, wendet sich die gesamte Dämonenbrut gegen ihren Beschwörer.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349478, + "modifiedTime": 1740227862722, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7H5VfdfMACJbv8bz" +} diff --git a/packs/talents/D_monenzauber_sThruiUnwaN9KHrP.json b/packs/talents/D_monenzauber_sThruiUnwaN9KHrP.json new file mode 100644 index 00000000..bf018a58 --- /dev/null +++ b/packs/talents/D_monenzauber_sThruiUnwaN9KHrP.json @@ -0,0 +1,32 @@ +{ + "_id": "sThruiUnwaN9KHrP", + "name": "Dämonenzauber", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Dämonologe einem einzelnen seiner beschworenen Dämonen einen seiner eigenen Zaubersprüche beibringen (dauert eine Aktion), mit Ausnahme des Zauberspruchs @Compendium[ds4.spells.yy43TiBbip28QRhs]{Dämonen beschwören}. Der jeweilige Dämon hat für die Dauer seiner Beschwörung den jeweiligen Zauber aktiv und kann ihn nach den normalen Regeln einsetzen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349643, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sThruiUnwaN9KHrP" +} diff --git a/packs/talents/Diebeskunst_VqzpRGrHclPSGLP0.json b/packs/talents/Diebeskunst_VqzpRGrHclPSGLP0.json new file mode 100644 index 00000000..22106f9d --- /dev/null +++ b/packs/talents/Diebeskunst_VqzpRGrHclPSGLP0.json @@ -0,0 +1,108 @@ +{ + "_id": "VqzpRGrHclPSGLP0", + "name": "Diebeskunst", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "HQXZuzxIk1xmD1FQ", + "changes": [ + { + "key": "system.checks.disableTraps", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.openLock", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.pickPocket", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.workMechanism", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.search", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Diebeskunstproben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!VqzpRGrHclPSGLP0.HQXZuzxIk1xmD1FQ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter erhält einen Bonus von +2 pro Talentrang auf alle Proben, bei denen es darum geht, Fallen zu entdecken und zu entschärfen, fremde Taschen zu leeren, Schlösser zu öffnen oder Glücksspiele zu manipulieren.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349546, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VqzpRGrHclPSGLP0" +} diff --git a/packs/talents/Diener_der_Dunkelheit_hAfZhfLqCjPvho3u.json b/packs/talents/Diener_der_Dunkelheit_hAfZhfLqCjPvho3u.json new file mode 100644 index 00000000..fbb9c721 --- /dev/null +++ b/packs/talents/Diener_der_Dunkelheit_hAfZhfLqCjPvho3u.json @@ -0,0 +1,32 @@ +{ + "_id": "hAfZhfLqCjPvho3u", + "name": "Diener der Dunkelheit", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter dient den Mächten der Dunkelheit. Er erhält auf alle Angriffe gegen @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts}/@Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} einen Bonus von +1 pro Talentrang. Gleiches gilt für seine Abwehr gegen Schaden von Lichtzaubern.

\n

Charakter mit diesem Talent können nicht das Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} erlernen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349604, + "modifiedTime": 1740227862737, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hAfZhfLqCjPvho3u" +} diff --git a/packs/talents/Diener_des_Lichts_Wwvj3V65hIe0JWul.json b/packs/talents/Diener_des_Lichts_Wwvj3V65hIe0JWul.json new file mode 100644 index 00000000..16992060 --- /dev/null +++ b/packs/talents/Diener_des_Lichts_Wwvj3V65hIe0JWul.json @@ -0,0 +1,32 @@ +{ + "_id": "Wwvj3V65hIe0JWul", + "name": "Diener des Lichts", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter dient den Mächten des Lichts. Er erhält gegen alle Angriffe von @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit}/@Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Dienern der Dunkelheit} einen Bonus von +1 pro Talentrang auf seine Abwehr. Gleiches gilt bei Schaden von Schattenzaubern.

\n

Charaktere, die gegen die Prinzipien des Lichts verstoßen (beispielsweise sinnlos Morden) verlieren Talentränge ersatzlos.

\n

Charaktere mit diesem Talent können nicht das Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} erlernen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349549, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Wwvj3V65hIe0JWul" +} diff --git a/packs/talents/Einbetten_MbPRlVBm0JsBoA6X.json b/packs/talents/Einbetten_MbPRlVBm0JsBoA6X.json new file mode 100644 index 00000000..78f2508c --- /dev/null +++ b/packs/talents/Einbetten_MbPRlVBm0JsBoA6X.json @@ -0,0 +1,32 @@ +{ + "_id": "MbPRlVBm0JsBoA6X", + "name": "Einbetten", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird benötigt, um magische Gegenstände herzustellen (DS4 S. 101). Jeder Talentrang reduziert die Herstellungsdauer von magischen Gegenständen und gibt +1 auf Einbetten- Proben, um diese zu fertigen.

\n

Einbetten hilft zwar auch bei der Herstellung von Tränken bzw. Schriftrollen, dennoch wird dafür zunächst immer noch das Talent @Compendium[ds4.talents.XUyuomVVOxuSSKXl]{Alchemie} bzw. @Compendium[ds4.talents.t56WOCnxZwQWhajW]{Runenkunde} benötigt.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349520, + "modifiedTime": 1740227862729, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MbPRlVBm0JsBoA6X" +} diff --git a/packs/talents/Einstecker_ZvswuU2GqxDQwgpM.json b/packs/talents/Einstecker_ZvswuU2GqxDQwgpM.json new file mode 100644 index 00000000..76a52529 --- /dev/null +++ b/packs/talents/Einstecker_ZvswuU2GqxDQwgpM.json @@ -0,0 +1,141 @@ +{ + "_id": "ZvswuU2GqxDQwgpM", + "name": "Einstecker", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "2rmByR3ov2nUHHEj", + "changes": [ + { + "key": "system.combatValues.hitPoints.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Lebenskraft +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZvswuU2GqxDQwgpM.2rmByR3ov2nUHHEj" + }, + { + "_id": "ulUx8SX4R1q1ikhw", + "changes": [ + { + "key": "system.checks.defyPoison", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.checks.resistDisease", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Gift/Krankheit trotzen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZvswuU2GqxDQwgpM.ulUx8SX4R1q1ikhw" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter versteht es, ordentlich Schaden einzustecken.

\n

Pro Talentrang steigt die Lebenskraft (LK) um +3.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349560, + "modifiedTime": 1740227862735, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZvswuU2GqxDQwgpM" +} diff --git a/packs/talents/Elementare_b_ndeln_11ZOcPcDIigrXvww.json b/packs/talents/Elementare_b_ndeln_11ZOcPcDIigrXvww.json new file mode 100644 index 00000000..8bf36806 --- /dev/null +++ b/packs/talents/Elementare_b_ndeln_11ZOcPcDIigrXvww.json @@ -0,0 +1,32 @@ +{ + "_id": "11ZOcPcDIigrXvww", + "name": "Elementare bündeln", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Elementarist auf Wunsch bei einer Herbeirufung eine weitere Elementarstufe (I) herbeirufen.

\n

Der Elementarist muss vor der Herbeirufung schon festlegen, wie viele der zusätzlichen Elementare einzeln oder gebündelt – wodurch sich ihre Stufen (DS4 S. 53) bis maximal III addieren – erscheinen sollen. Ein zusätzliches Elementarportal oder Proben werden dafür nicht benötigt, aber der ZB entsprechend gesenkt.

\n

Sollte die Herbeirufung misslingen, wenden sich alle Elementare – gebündelte wie ungebündelte – gegen den Elementaristen.

", + "rank": { + "base": 0, + "max": 10, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349428, + "modifiedTime": 1740227862719, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!11ZOcPcDIigrXvww" +} diff --git a/packs/talents/Elementen_trotzen_HFCY3fxIbeXapRan.json b/packs/talents/Elementen_trotzen_HFCY3fxIbeXapRan.json new file mode 100644 index 00000000..a512603a --- /dev/null +++ b/packs/talents/Elementen_trotzen_HFCY3fxIbeXapRan.json @@ -0,0 +1,32 @@ +{ + "_id": "HFCY3fxIbeXapRan", + "name": "Elementen trotzen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden erlittenen Schaden durch die Elemente (beispielsweise durch Blitze, Eis oder Feuer) aller Art ignorieren.

\n

Dies gilt auch für Schaden, der normalerweise nicht abgewehrt werden kann (beispielsweise durch den Zauberspruch @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerball}).

\n

Die schützende Wirkung wird als freie Aktion ausgelöst und hält eine ununterbrochene Anzahl von Runden gleich dem dreifachen Talentrang an.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349504, + "modifiedTime": 1740227862726, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HFCY3fxIbeXapRan" +} diff --git a/packs/talents/Explosionskontrolle_2ASdMhcx0hN3ZpPc.json b/packs/talents/Explosionskontrolle_2ASdMhcx0hN3ZpPc.json new file mode 100644 index 00000000..1ed55a17 --- /dev/null +++ b/packs/talents/Explosionskontrolle_2ASdMhcx0hN3ZpPc.json @@ -0,0 +1,32 @@ +{ + "_id": "2ASdMhcx0hN3ZpPc", + "name": "Explosionskontrolle", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter eine Person (auch sich selbst) vor der Wirkung eines seiner eigenen Flächenzauber verschonen. Pro Talentrang kann er das Talent einmal pro Kampf einsetzen.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349453, + "modifiedTime": 1740227862719, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2ASdMhcx0hN3ZpPc" +} diff --git a/packs/talents/F_rsorger_MdIritgH5eEAngSY.json b/packs/talents/F_rsorger_MdIritgH5eEAngSY.json new file mode 100644 index 00000000..0642fdba --- /dev/null +++ b/packs/talents/F_rsorger_MdIritgH5eEAngSY.json @@ -0,0 +1,84 @@ +{ + "_id": "MdIritgH5eEAngSY", + "name": "Fürsorger", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "d2tT2smyOwGtpzlC", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && (@item.system.spellGroups.healing || @item.system.spellGroups.protection)" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Heil- und Schutzzauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!MdIritgH5eEAngSY.d2tT2smyOwGtpzlC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist geübt im Umgang mit heilender und schützender Magie.

\n

Er erhält auf alle Heil- und Schutzzauber +1 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349522, + "modifiedTime": 1740227862729, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MdIritgH5eEAngSY" +} diff --git a/packs/talents/Feuermagier_8D01Z1kDIDcsuVCn.json b/packs/talents/Feuermagier_8D01Z1kDIDcsuVCn.json new file mode 100644 index 00000000..d3425704 --- /dev/null +++ b/packs/talents/Feuermagier_8D01Z1kDIDcsuVCn.json @@ -0,0 +1,84 @@ +{ + "_id": "8D01Z1kDIDcsuVCn", + "name": "Feuermagier", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "MbXCCUny8g0DURC5", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.fire" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Feuerzauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!8D01Z1kDIDcsuVCn.MbXCCUny8g0DURC5" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker ist geübt im Umgang mit Feuermagie. Er erhält auf alle Zauber, die einen Feuereffekt haben, einen Bonus von +1 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349480, + "modifiedTime": 1740227862723, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8D01Z1kDIDcsuVCn" +} diff --git a/packs/talents/Fieser_Schuss_srLA4jC8lsZbp3nT.json b/packs/talents/Fieser_Schuss_srLA4jC8lsZbp3nT.json new file mode 100644 index 00000000..ce6e43b3 --- /dev/null +++ b/packs/talents/Fieser_Schuss_srLA4jC8lsZbp3nT.json @@ -0,0 +1,32 @@ +{ + "_id": "srLA4jC8lsZbp3nT", + "name": "Fieser Schuss", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf seinen Wert in Schießen einen Angriff lang um den Wert von Agilität erhöhen. Es ist möglich, mehrere Talentränge in einem einzigen Schuß zu vereinen. Zielzauber profitieren nicht von diesem Talent.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349648, + "modifiedTime": 1740227862744, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!srLA4jC8lsZbp3nT" +} diff --git a/packs/talents/Flink_v5axYsQQ2w57Iu4p.json b/packs/talents/Flink_v5axYsQQ2w57Iu4p.json new file mode 100644 index 00000000..73dfc36a --- /dev/null +++ b/packs/talents/Flink_v5axYsQQ2w57Iu4p.json @@ -0,0 +1,84 @@ +{ + "_id": "v5axYsQQ2w57Iu4p", + "name": "Flink", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "fDKyU3R0ACgW9uw3", + "changes": [ + { + "key": "system.combatValues.movement.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Laufen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!v5axYsQQ2w57Iu4p.fDKyU3R0ACgW9uw3" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist schnell und gut zu Fuß. Der Wert für Laufen wird pro Erwerb des Talents um 1 erhöht.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349653, + "modifiedTime": 1740227862744, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!v5axYsQQ2w57Iu4p" +} diff --git a/packs/talents/Friedvoller_Hieb_lvBKtlBcyVldzsrw.json b/packs/talents/Friedvoller_Hieb_lvBKtlBcyVldzsrw.json new file mode 100644 index 00000000..a95dbee0 --- /dev/null +++ b/packs/talents/Friedvoller_Hieb_lvBKtlBcyVldzsrw.json @@ -0,0 +1,32 @@ +{ + "_id": "lvBKtlBcyVldzsrw", + "name": "Friedvoller Hieb", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden einen friedvollen Hieb mittels eines waffenlosen Angriffs ausführen. Das Resultat wird wie gewohnt ermittelt (also abzüglich der Abwehr), allerdings wird kein Schaden erzeugt, stattdessen ist das Opfer für 1 Runde pro letztendlich erhaltenem Schadenspunkt gelähmt.

\n

Wird das gelähmte Ziel anderweitig angegriffen, wozu auch geistesbeeinflussende Zauber u. ä. zählen, endet die Wirkung.

\n

Gegen Ziele, die 2+ Größenkategorien (DS4 S. 104) größer sind, ist das Talent wirkungslos.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349623, + "modifiedTime": 1740227862740, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lvBKtlBcyVldzsrw" +} diff --git a/packs/talents/Frontheiler_2jZY66sVnHSIFq7P.json b/packs/talents/Frontheiler_2jZY66sVnHSIFq7P.json new file mode 100644 index 00000000..d1750511 --- /dev/null +++ b/packs/talents/Frontheiler_2jZY66sVnHSIFq7P.json @@ -0,0 +1,32 @@ +{ + "_id": "2jZY66sVnHSIFq7P", + "name": "Frontheiler", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Heiler einmal alle 24 Stunden die Abklingzeit eines Heilzaubers (so auch @Compendium[ds4.spells.duf86LKvOIyDXJbc]{Wiederbelebung}) ignorieren.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349456, + "modifiedTime": 1740227862720, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2jZY66sVnHSIFq7P" +} diff --git a/packs/talents/Genesung_UUYS4u0DmEbGzXxI.json b/packs/talents/Genesung_UUYS4u0DmEbGzXxI.json new file mode 100644 index 00000000..19fde36f --- /dev/null +++ b/packs/talents/Genesung_UUYS4u0DmEbGzXxI.json @@ -0,0 +1,84 @@ +{ + "_id": "UUYS4u0DmEbGzXxI", + "name": "Genesung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "j6Npl52FgDvkTwk7", + "changes": [ + { + "key": "system.attributes.body.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Körper +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!UUYS4u0DmEbGzXxI.j6Npl52FgDvkTwk7" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

War ein Charakter vorübergehend tot und hat dadurch Punkte des Attributs KÖR eingebüßt, kann pro Talentrang +1 KÖR wiederhergestellt werden.

\n

Es ist mit diesem Talent nicht möglich, KÖR über den ursprünglichen Wert zu steigern.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349544, + "modifiedTime": 1740227862732, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!UUYS4u0DmEbGzXxI" +} diff --git a/packs/talents/Ger_stet_nMxDermxN1pUziUJ.json b/packs/talents/Ger_stet_nMxDermxN1pUziUJ.json new file mode 100644 index 00000000..be421d9b --- /dev/null +++ b/packs/talents/Ger_stet_nMxDermxN1pUziUJ.json @@ -0,0 +1,32 @@ +{ + "_id": "nMxDermxN1pUziUJ", + "name": "Gerüstet", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Jeder Rang dieses Talentes gestattet es dem Charakter, die nächste Klasse (Stoff, Leder, Kette, Platte) von Rüstungen zu tragen. So kann ein Kleriker, der das Talent erstmalig erwirbt, Rüstungen aus Kette wie ein Späher tragen (allerdings weiterhin keine Helme, DS4 S. 41), statt wie bislang nur Rüstungen aus Stoff oder Leder.

\n

Die normalen Abzügen durch die Rüstung in Höhe ihrer PA, beispielsweise beim Zaubern, bleiben allerdings bestehen. Um diese zu senken, wird das Talent @Compendium[ds4.talents.lXzQsIobk5yaZ47a]{Rüstzauberer} benötigt.

", + "rank": { + "base": 0, + "max": 2, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349626, + "modifiedTime": 1740227862740, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nMxDermxN1pUziUJ" +} diff --git a/packs/talents/Gezieltes_Gift_8nkrwGAE0HPoAAEm.json b/packs/talents/Gezieltes_Gift_8nkrwGAE0HPoAAEm.json new file mode 100644 index 00000000..ab1eb747 --- /dev/null +++ b/packs/talents/Gezieltes_Gift_8nkrwGAE0HPoAAEm.json @@ -0,0 +1,32 @@ +{ + "_id": "8nkrwGAE0HPoAAEm", + "name": "Gezieltes Gift", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Attentäter kennt die Stellen, wo man im Kampf den Gegner treffen muss, damit ein Waffengift seine Wirkung ideal entfalten kann.

\n

Pro Talentrang werden bei seinen Angriffen mit vergifteten Waffen Schadensgifte um +2 Schaden, Betäubungsgifte um +2 Minuten und Lähmungsgifte um +2 Runden erhöht.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349482, + "modifiedTime": 1740227862723, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8nkrwGAE0HPoAAEm" +} diff --git a/packs/talents/Gl_ckspilz_Y6nYTc9XJnmV9ZxX.json b/packs/talents/Gl_ckspilz_Y6nYTc9XJnmV9ZxX.json new file mode 100644 index 00000000..73320c08 --- /dev/null +++ b/packs/talents/Gl_ckspilz_Y6nYTc9XJnmV9ZxX.json @@ -0,0 +1,32 @@ +{ + "_id": "Y6nYTc9XJnmV9ZxX", + "name": "Glückspilz", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein wahrer Glückspilz, kann er doch einmal pro Talentrang alle 24 Stunden einen Patzer ignorieren und den jeweiligen Wurf wiederholen.

\n

Sollte der neue Wurf ebenfalls ein Patzer sein, man aber über mehr als einen Talentrang verfügt, kann dieser ebenfalls ausgeglichen werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349556, + "modifiedTime": 1740227862734, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Y6nYTc9XJnmV9ZxX" +} diff --git a/packs/talents/Handwerk_vnEDVqVCsZuf8NYN.json b/packs/talents/Handwerk_vnEDVqVCsZuf8NYN.json new file mode 100644 index 00000000..6fae07b6 --- /dev/null +++ b/packs/talents/Handwerk_vnEDVqVCsZuf8NYN.json @@ -0,0 +1,32 @@ +{ + "_id": "vnEDVqVCsZuf8NYN", + "name": "Handwerk", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird für jede Handwerksart (Bogenbauer, Schreiner, Steinmetz, Waffenschmied usw.) individuell erlernt, kann also mehrmals bis Höchstrang III erworben werden.

\n

Man beherrscht das jeweilige Handwerk und erhält auf alle diesbezüglichen Proben, sei es um Gegenstände herzustellen oder beschädigte Ausrüstung zu reparieren (DS4 S. 88), einen Bonus von +3 pro Talentrang, den man für dieses Handwerk erworben hat.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349655, + "modifiedTime": 1740227862745, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!vnEDVqVCsZuf8NYN" +} diff --git a/packs/talents/Heimlichkeit_sqGJRKlgFoD2vLCD.json b/packs/talents/Heimlichkeit_sqGJRKlgFoD2vLCD.json new file mode 100644 index 00000000..a478d97d --- /dev/null +++ b/packs/talents/Heimlichkeit_sqGJRKlgFoD2vLCD.json @@ -0,0 +1,102 @@ +{ + "_id": "sqGJRKlgFoD2vLCD", + "name": "Heimlichkeit", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "MBeD0OrohtuDdSFy", + "changes": [ + { + "key": "system.checks.hide", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.pickPocket", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.sneak", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.search", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Heimlichkeitsproben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!sqGJRKlgFoD2vLCD.MBeD0OrohtuDdSFy" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein geübter Schleicher und versteht sich darauf, nicht bemerkt zu werden.

\n

Er erhält +2 auf alle Proben, bei denen es darum geht, leise zu sein, sich zu verbergen, nicht bemerkt zu werden oder etwas heimlich zu tun, wie beispielsweise Taschendiebstahl.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349645, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sqGJRKlgFoD2vLCD" +} diff --git a/packs/talents/Heldengl_ck_WMXI5ckyEdlC29j4.json b/packs/talents/Heldengl_ck_WMXI5ckyEdlC29j4.json new file mode 100644 index 00000000..39130d3e --- /dev/null +++ b/packs/talents/Heldengl_ck_WMXI5ckyEdlC29j4.json @@ -0,0 +1,32 @@ +{ + "_id": "WMXI5ckyEdlC29j4", + "name": "Heldenglück", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist wahrlich vom Glück gesegnet, kann er doch einmal pro Talentrang alle 24 Stunden einen beliebigen Würfelwurf wiederholen.

\n

Sollte das neue Wurfergebnis ebenfalls nicht gefallen, kann man erneut die Probe wiederholen, sofern man noch über weitere Talentränge verfügt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349548, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!WMXI5ckyEdlC29j4" +} diff --git a/packs/talents/Herausforderer_der_Elemente_6YJLvjCIUmhqlaFb.json b/packs/talents/Herausforderer_der_Elemente_6YJLvjCIUmhqlaFb.json new file mode 100644 index 00000000..6f8a550e --- /dev/null +++ b/packs/talents/Herausforderer_der_Elemente_6YJLvjCIUmhqlaFb.json @@ -0,0 +1,32 @@ +{ + "_id": "6YJLvjCIUmhqlaFb", + "name": "Herausforderer der Elemente", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Elementarist einmal alle 24 Stunden die Abklingzeit des Zauberspruchs Elementar Harbeirufen (@Compendium[ds4.spells.9GBDoyVXPXjWoLix]{Erde}, @Compendium[ds4.spells.8BT2TqPHC0v2OzNe]{Feuer}, @Compendium[ds4.spells.PXIVHRBpLwlzrk3L]{Luft}, @Compendium[ds4.spells.ftDPIhLCVRLRpOix]{Wasser}) ignorieren. Alternativ kann dies auch bei einem Zauber angewendet werden, der Elementarschaden verursacht.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349472, + "modifiedTime": 1740227862722, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6YJLvjCIUmhqlaFb" +} diff --git a/packs/talents/Herr_der_Elemente_w34myctr1EDmXSPI.json b/packs/talents/Herr_der_Elemente_w34myctr1EDmXSPI.json new file mode 100644 index 00000000..983da479 --- /dev/null +++ b/packs/talents/Herr_der_Elemente_w34myctr1EDmXSPI.json @@ -0,0 +1,84 @@ +{ + "_id": "w34myctr1EDmXSPI", + "name": "Herr der Elemente", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "UZeS8KqoBFS8oY35", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.damage && (@item.system.spellGroups.lightning || @item.system.spellGroups.earth || @item.system.spellGroups.water || @item.system.spellGroups.ice || @item.system.spellGroups.fire || @item.system.spellGroups.air)" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Elementarschadenszauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!w34myctr1EDmXSPI.UZeS8KqoBFS8oY35" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist geübt im Freisetzen elementarer Kräfte.

\n

Er erhält auf alle Zauber, die Schaden verursachen, der auf den Elementen Erde, Feuer, Luft (hierzu zählen auch Blitzzauber) oder Wasser (hierzu zählen auch Eiszauber) basiert, einen Bonus von +1 pro Talentrang.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349657, + "modifiedTime": 1740227862745, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!w34myctr1EDmXSPI" +} diff --git a/packs/talents/Hinterh_ltiger_Angriff_8apgKsktW4pyWmMq.json b/packs/talents/Hinterh_ltiger_Angriff_8apgKsktW4pyWmMq.json new file mode 100644 index 00000000..5e51d5c4 --- /dev/null +++ b/packs/talents/Hinterh_ltiger_Angriff_8apgKsktW4pyWmMq.json @@ -0,0 +1,32 @@ +{ + "_id": "8apgKsktW4pyWmMq", + "name": "Hinterhältiger Angriff", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Einmal pro Kampf kann der Attentäter einen Gegner mit einem hinterhältigen Angriff im Nahkampf attackieren, sofern er einen Dolch, ein Messer oder eine Würgewaffe (Draht, Schur usw.) dafür benutzt und das Opfer sich des Angriffs nicht gewahr ist. Dafür wird in dieser Runde sein Wert in Schlagen um GE – multipliziert mit dem Talentrang – erhöht.

\n

Wurde durch den hinterhältigen Angriff der Kampf eröffnet, kann das Ziel (sofern der hinterhältigen Angriff auch gelang) in dieser Runde nicht mehr agieren.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349481, + "modifiedTime": 1740227862723, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8apgKsktW4pyWmMq" +} diff --git a/packs/talents/Homonkulus_de0VlXllMzMK8lga.json b/packs/talents/Homonkulus_de0VlXllMzMK8lga.json new file mode 100644 index 00000000..ad9a2885 --- /dev/null +++ b/packs/talents/Homonkulus_de0VlXllMzMK8lga.json @@ -0,0 +1,32 @@ +{ + "_id": "de0VlXllMzMK8lga", + "name": "Homonkulus", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Erzmagier erschafft Kraft seiner Magie einen kleinen, magischen, humanoiden Begleiter, der ihm beim Zaubern helfen kann.

\n

Der Homunkulus hat KÖR, AGI und GEI jeweils 4 und verfügt über 6 Punkte für Eigenschaften, die der Erzmagier frei verteilen kann.

\n

Homunkuli sind klein (halbe LK, zu treffen -2) und können nur Grunzlaute von sich geben, verstehen aber simple Worte und einsilbige Befehle ihres Erschaffers.

\n

Befindet sich der Homunkulus nicht mehr als AU x 5 (des Charakters) in Metern von dem Erzmagier entfernt, kann er ihm pro Talentrang einen aufteilbaren Bonus von +2 auf VE und/oder AU geben.

\n

Die genaue Verteilung kann der Erzmagier jede Runde als freie Handlung umändern. Es ist nicht möglich, die Talente @Compendium[ds4.talents.KwGcyAzyqbz7oiTl]{Vertrauter} oder @Compendium[ds4.talents.tkLyvmSYvVslMXVE]{Vertrautenband} auf Homunkuli anzuwenden.

\n

Homunkuli sind äußerst feige und scheuen den Kampf. Sie ergreifen die Flucht, sobald sie Schaden erhalten und kehren erst zu ihrem Erschaffer zurück, wenn die Gefahr vorüber ist, dann jedoch so schnell wie möglich. Dank der Fähigkeit, ihren Erschaffer und seine Gemütslage zu spüren, stellt dies für sie kein Problem dar.

\n

Stirbt ein Homunkulus, kann der Erzmagier innerhalb von W20 Stunden einen neuen erschaffen, sofern er in dieser Zeit Zugang zu einem Alchimistenlabor hat.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349576, + "modifiedTime": 1740227862736, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!de0VlXllMzMK8lga" +} diff --git a/packs/talents/Ich_muss_weg__42FNsShgm1B6MClC.json b/packs/talents/Ich_muss_weg__42FNsShgm1B6MClC.json new file mode 100644 index 00000000..8f33b059 --- /dev/null +++ b/packs/talents/Ich_muss_weg__42FNsShgm1B6MClC.json @@ -0,0 +1,32 @@ +{ + "_id": "42FNsShgm1B6MClC", + "name": "Ich muss weg!", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter in jedem Kampf für jeweils eine Runde sämtliche gegen ihn gerichteten Nahkampfangriffe komplett ignorieren.

\n

Dabei darf er aber seine Gegner nicht attackieren, sondern muss sich dabei um mindestens 2 m von ihnen entfernen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349462, + "modifiedTime": 1740227862720, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!42FNsShgm1B6MClC" +} diff --git a/packs/talents/In_Deckung_cLkCx5hxP7rVYUqD.json b/packs/talents/In_Deckung_cLkCx5hxP7rVYUqD.json new file mode 100644 index 00000000..8b9cc577 --- /dev/null +++ b/packs/talents/In_Deckung_cLkCx5hxP7rVYUqD.json @@ -0,0 +1,32 @@ +{ + "_id": "cLkCx5hxP7rVYUqD", + "name": "In Deckung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter versteht es, im Kampf geschickt in die Defensive zu gehen.

\n

Pro Talentrang werden in jeder Kampfrunde, in der er keine offensive Handlung unternimmt, alle Angriffe gegen ihn um 2 gesenkt, sofern er sich ihrer bewusst ist.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349573, + "modifiedTime": 1740227862736, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cLkCx5hxP7rVYUqD" +} diff --git a/packs/talents/Instrument_Nu7TKGp987s5mHA0.json b/packs/talents/Instrument_Nu7TKGp987s5mHA0.json new file mode 100644 index 00000000..53777987 --- /dev/null +++ b/packs/talents/Instrument_Nu7TKGp987s5mHA0.json @@ -0,0 +1,32 @@ +{ + "_id": "Nu7TKGp987s5mHA0", + "name": "Instrument", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird für jedes Instrument (Flöte, Mandoline, Harfe, Trommel usw.) individuell erlernt, kann also mehrmals bis Höchstrang III erworben werden.

\n

Man beherrscht das jeweilige Instrument und erhält auf alle diesbezüglichen Proben einen Bonus von +3 pro Talentrang, den man für dieses Instrument erworben hat.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349529, + "modifiedTime": 1740227862730, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Nu7TKGp987s5mHA0" +} diff --git a/packs/talents/J_ger_61Dz3XpStwlMfsbL.json b/packs/talents/J_ger_61Dz3XpStwlMfsbL.json new file mode 100644 index 00000000..1201dc4c --- /dev/null +++ b/packs/talents/J_ger_61Dz3XpStwlMfsbL.json @@ -0,0 +1,90 @@ +{ + "_id": "61Dz3XpStwlMfsbL", + "name": "Jäger", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "1YQV8nWWzoU30KHR", + "changes": [ + { + "key": "system.checks.startFire", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.readTracks", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Jagdproben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!61Dz3XpStwlMfsbL.1YQV8nWWzoU30KHR" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter wandert oft durch die Wildnis und erhält durch dieses Talent +2 auf Proben, mit denen Spuren gelesen, Wild gejagt oder die richtige Marschrichtung wiedergefunden werden soll.

\n

Pro Talentrang kann außerdem eine Mahlzeit (von denen 3 einer Tagesration entsprechen) problemlos beschafft werden (Beeren pflücken, Kleintier erlegen usw.).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349470, + "modifiedTime": 1740227862721, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!61Dz3XpStwlMfsbL" +} diff --git a/packs/talents/K_mpfer_6z0JXGEqdzDTWQ7f.json b/packs/talents/K_mpfer_6z0JXGEqdzDTWQ7f.json new file mode 100644 index 00000000..c431fd1f --- /dev/null +++ b/packs/talents/K_mpfer_6z0JXGEqdzDTWQ7f.json @@ -0,0 +1,84 @@ +{ + "_id": "6z0JXGEqdzDTWQ7f", + "name": "Kämpfer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "XkW7XqOCXg2e4OTo", + "changes": [ + { + "key": "system.combatValues.meleeAttack.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schlagen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!6z0JXGEqdzDTWQ7f.XkW7XqOCXg2e4OTo" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein geübter Nahkämpfer: Er erhält pro Talentrang auf Schlagen einen Bonus von +1.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349475, + "modifiedTime": 1740227862722, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6z0JXGEqdzDTWQ7f" +} diff --git a/packs/talents/Kann_ich_mal_vorbei__XNjKX9xKkktkwAHk.json b/packs/talents/Kann_ich_mal_vorbei__XNjKX9xKkktkwAHk.json new file mode 100644 index 00000000..16ca561e --- /dev/null +++ b/packs/talents/Kann_ich_mal_vorbei__XNjKX9xKkktkwAHk.json @@ -0,0 +1,32 @@ +{ + "_id": "XNjKX9xKkktkwAHk", + "name": "Kann ich mal vorbei?", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Meisterdieb kann einmal alle 24 Stunden pro Talentrang eine Zielperson durch Ansprechen, Vorbeidrängeln etc. derart ablenken, dass sämtliche Bemerken-Proben gegen Taschendiebstahl u.ä. dieser Person für Talentrang in Runden um die Stufe des Meisterdiebes erschwert werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349551, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XNjKX9xKkktkwAHk" +} diff --git a/packs/talents/Kletterass_l0le4xG5t0gUh2Y1.json b/packs/talents/Kletterass_l0le4xG5t0gUh2Y1.json new file mode 100644 index 00000000..0b1a5d3c --- /dev/null +++ b/packs/talents/Kletterass_l0le4xG5t0gUh2Y1.json @@ -0,0 +1,84 @@ +{ + "_id": "l0le4xG5t0gUh2Y1", + "name": "Kletterass", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "GlAlx4yvg5rCHu20", + "changes": [ + { + "key": "system.checks.climb", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Klettern +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!l0le4xG5t0gUh2Y1.GlAlx4yvg5rCHu20" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter erhält auf alle Klettern- Probe einen Bonus von +2 pro Talentrang und die normale Klettergeschwindigkeit von Laufen/2 wird pro Talentrang um 1 m erhöht.

\n

Außerdem kann der Charakter an überhängenden Wänden oder gar kopfüber an Decken ganz „normal“ klettern (also diesbezügliche Mali ignorieren), sofern diese nicht gänzlich eben sind, sondern über Vorsprünge, Stalagtiten, Mauerfugen o. ä. verfügen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349617, + "modifiedTime": 1740227862739, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!l0le4xG5t0gUh2Y1" +} diff --git a/packs/talents/Knechtschaft_Bp7OVgurG40CR1Mw.json b/packs/talents/Knechtschaft_Bp7OVgurG40CR1Mw.json new file mode 100644 index 00000000..1764a520 --- /dev/null +++ b/packs/talents/Knechtschaft_Bp7OVgurG40CR1Mw.json @@ -0,0 +1,32 @@ +{ + "_id": "Bp7OVgurG40CR1Mw", + "name": "Knechtschaft", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter jeder selbst beschworenen bzw. selbst herbeigerufenen Wesenheit eine weitere Frage stellen bzw. einen weiteren Auftrag erteilen und die Zeit, die das Wesen ihm dienen muss, um 1 Stunde verlängern.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349493, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Bp7OVgurG40CR1Mw" +} diff --git a/packs/talents/Kraft_der_Bestie_lim7XMqSaQ0nrHkO.json b/packs/talents/Kraft_der_Bestie_lim7XMqSaQ0nrHkO.json new file mode 100644 index 00000000..4b816f97 --- /dev/null +++ b/packs/talents/Kraft_der_Bestie_lim7XMqSaQ0nrHkO.json @@ -0,0 +1,32 @@ +{ + "_id": "lim7XMqSaQ0nrHkO", + "name": "Kraft der Bestie", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Druide alle seine zur Verfügung stehenden Kampfwerte in @Compendium[ds4.talents.sSKiZ5hdQMBnAYRA]{Adler-}, @Compendium[ds4.talents.8pylauN1hY933vrQ]{Bären-} oder @Compendium[ds4.talents.iP5aZcqriVLjdVcd]{Tiergestalt} um jeweils +2 erhöhen.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349622, + "modifiedTime": 1740227862740, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lim7XMqSaQ0nrHkO" +} diff --git a/packs/talents/Kreiszeichner_sqWBOfkvuv7ZTrVM.json b/packs/talents/Kreiszeichner_sqWBOfkvuv7ZTrVM.json new file mode 100644 index 00000000..80096ef3 --- /dev/null +++ b/packs/talents/Kreiszeichner_sqWBOfkvuv7ZTrVM.json @@ -0,0 +1,32 @@ +{ + "_id": "sqWBOfkvuv7ZTrVM", + "name": "Kreiszeichner", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein Meister im Zeichnen von Beschwörungskreisen und kann pro Talentrang 2 weitere Stunden Arbeit in sie investieren. Zusätzlich wird der Zeitaufwand von jeder Stunden, die an dem Kreis gezeichnet wird, um 15 Minuten pro Talentrang gesenkt. Außerdem gewährt das Talent +1 pro Talentrang beim Beschwören, selbst wenn dies nur mit einem improvisierten Beschwörungskreis geschieht.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349647, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sqWBOfkvuv7ZTrVM" +} diff --git a/packs/talents/Langfinger_pDPVZpnhvlabmcvT.json b/packs/talents/Langfinger_pDPVZpnhvlabmcvT.json new file mode 100644 index 00000000..929b6977 --- /dev/null +++ b/packs/talents/Langfinger_pDPVZpnhvlabmcvT.json @@ -0,0 +1,32 @@ +{ + "_id": "pDPVZpnhvlabmcvT", + "name": "Langfinger", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Versuchen, Leute zu bestehlen, kann der Meisterdieb einmal alle 24 Stunden pro Talentrang AGI zu seiner Probe auf Taschendiebstahl dazu addieren.

\n

Es ist möglich, mehrere Talentränge in einer einzelnen Probe zu vereinen. Ebenso ist es natürlich mit @Compendium[ds4.talents.VqzpRGrHclPSGLP0]{Diebeskunst} kombinierbar.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349632, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pDPVZpnhvlabmcvT" +} diff --git a/packs/talents/M_chtige_Beschw_rung_pEH7q5M85j50f45J.json b/packs/talents/M_chtige_Beschw_rung_pEH7q5M85j50f45J.json new file mode 100644 index 00000000..14301cf4 --- /dev/null +++ b/packs/talents/M_chtige_Beschw_rung_pEH7q5M85j50f45J.json @@ -0,0 +1,32 @@ +{ + "_id": "pEH7q5M85j50f45J", + "name": "Mächtige Beschwörung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Dämonologe Punkte in Höhe von seinem Wert in GEI bei jedem seiner beschworenen Dämonen auf dessen Kampfwerte beliebig verteilen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349635, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pEH7q5M85j50f45J" +} diff --git a/packs/talents/M_chtige_Erweckung_2zY11r1tKxBzNB0e.json b/packs/talents/M_chtige_Erweckung_2zY11r1tKxBzNB0e.json new file mode 100644 index 00000000..ffad02c9 --- /dev/null +++ b/packs/talents/M_chtige_Erweckung_2zY11r1tKxBzNB0e.json @@ -0,0 +1,32 @@ +{ + "_id": "2zY11r1tKxBzNB0e", + "name": "Mächtige Erweckung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Nekromant Punkte in Höhe von GEI/2 auf die Kampfwerte eines jeden von ihm erweckten Untoten beliebig verteilen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349457, + "modifiedTime": 1740227862720, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2zY11r1tKxBzNB0e" +} diff --git a/packs/talents/M_chtige_Herbeirufung_wpZ1LCG8nLu4PSc9.json b/packs/talents/M_chtige_Herbeirufung_wpZ1LCG8nLu4PSc9.json new file mode 100644 index 00000000..91c9e47d --- /dev/null +++ b/packs/talents/M_chtige_Herbeirufung_wpZ1LCG8nLu4PSc9.json @@ -0,0 +1,32 @@ +{ + "_id": "wpZ1LCG8nLu4PSc9", + "name": "Mächtige Herbeirufung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Elementarist Punkte in Höhe von seinem Wert in GEI bei jedem seiner herbeigerufenen Elementare auf dessen Kampfwerte beliebig verteilen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349657, + "modifiedTime": 1740227862745, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!wpZ1LCG8nLu4PSc9" +} diff --git a/packs/talents/Macht_des_Blutes_AM8Wp2ZVwWgbUXQz.json b/packs/talents/Macht_des_Blutes_AM8Wp2ZVwWgbUXQz.json new file mode 100644 index 00000000..58c888cc --- /dev/null +++ b/packs/talents/Macht_des_Blutes_AM8Wp2ZVwWgbUXQz.json @@ -0,0 +1,32 @@ +{ + "_id": "AM8Wp2ZVwWgbUXQz", + "name": "Macht des Blutes", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Blutmagier einmal pro Tag den Probenwert einer beliebigen Probe um den Wert ihres enthaltenen Attributs erhöhen.

\n

Beispielsweise könnte der Probenwert einer Klettern-Probe (AGI+ST) um den Wert in Agilität erhöht werden.

\n

Es ist möglich, mehrere Talentränge in einer einzigen Probe zu vereinen.

\n

Allerdings erhält der Blutmagier jedesmal beim Einsatz des Talents 2 Punkte nicht abwehrbaren Schaden pro eingesetzten Talentrang.

\n

Eine Kombination mit dem Talent @Compendium[ds4.talents.XiwLao8lZi3JL0ku]{Zaubermacht} ist möglich (dessen dabei eingesetzte Talentränge verursachen aber keinen Schaden beim Blutmagier).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349491, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!AM8Wp2ZVwWgbUXQz" +} diff --git a/packs/talents/Macht_des_Blutes_bu9alxaRfnzzTyX1.json b/packs/talents/Macht_des_Blutes_bu9alxaRfnzzTyX1.json new file mode 100644 index 00000000..cfb75b6e --- /dev/null +++ b/packs/talents/Macht_des_Blutes_bu9alxaRfnzzTyX1.json @@ -0,0 +1,32 @@ +{ + "_id": "bu9alxaRfnzzTyX1", + "name": "Macht des Blutes", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Blutmagier einmal pro Tag den Probenwert einer beliebigen Probe um den Wert ihres enthaltenen Attributs erhöhen. Beispielsweise könnte der Probenwert einer Klettern-Probe (AGI+ST) um den Wert in Agilität erhöht werden. Es ist möglich, mehrere Talentränge in einer einzigen Probe zu vereinen. Allerdings erhält der Blutmagier jedesmal beim Einsatz des Talents 2 Punkte nicht abwehrbaren Schaden pro eingesetzten Talentrang.

\n

Eine Kombination mit dem Talent @Compendium[ds4.talents.XiwLao8lZi3JL0ku]{Zaubermacht} ist möglich (dessen dabei eingesetzte Talentränge verursachen aber keinen Schaden beim Blutmagier).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349571, + "modifiedTime": 1740227862736, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!bu9alxaRfnzzTyX1" +} diff --git a/packs/talents/Magieresistent_yMVciLvr77vbTw6r.json b/packs/talents/Magieresistent_yMVciLvr77vbTw6r.json new file mode 100644 index 00000000..7d41d059 --- /dev/null +++ b/packs/talents/Magieresistent_yMVciLvr77vbTw6r.json @@ -0,0 +1,32 @@ +{ + "_id": "yMVciLvr77vbTw6r", + "name": "Magieresistent", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gegen den Charakter gerichtete Zauber werden um +2 pro Talentrang erschwert. Dies gilt jedoch nicht für Zauber, die Elementarschaden (beispielsweise mit Blitzen, Eis oder Feuer) verursachen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349660, + "modifiedTime": 1740227862746, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yMVciLvr77vbTw6r" +} diff --git a/packs/talents/Manipulator_Mz5glQvRowlF5U8X.json b/packs/talents/Manipulator_Mz5glQvRowlF5U8X.json new file mode 100644 index 00000000..b2583540 --- /dev/null +++ b/packs/talents/Manipulator_Mz5glQvRowlF5U8X.json @@ -0,0 +1,84 @@ +{ + "_id": "Mz5glQvRowlF5U8X", + "name": "Manipulator", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "WS2cnABb8FYRhtpJ", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.mindAffecting" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Geistesbeeinflusende Zauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Mz5glQvRowlF5U8X.WS2cnABb8FYRhtpJ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein Meister der magischen Beeinflussung des Geistes.

\n

Er erhält auf alle geistesbeeinflussenden Zauber einen Bonus von +1.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349524, + "modifiedTime": 1740227862729, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Mz5glQvRowlF5U8X" +} diff --git a/packs/talents/Meister_aller_Klassen_nbDef1IPNyYcXmua.json b/packs/talents/Meister_aller_Klassen_nbDef1IPNyYcXmua.json new file mode 100644 index 00000000..5e60c9d7 --- /dev/null +++ b/packs/talents/Meister_aller_Klassen_nbDef1IPNyYcXmua.json @@ -0,0 +1,32 @@ +{ + "_id": "nbDef1IPNyYcXmua", + "name": "Meister aller Klassen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann eines seiner drei Attribute (KÖR, AGI oder GEI) um +1 steigern.

", + "rank": { + "base": 0, + "max": 1, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349627, + "modifiedTime": 1740227862741, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nbDef1IPNyYcXmua" +} diff --git a/packs/talents/Meister_seiner_Klasse_DUexlPzqyH2xPxYP.json b/packs/talents/Meister_seiner_Klasse_DUexlPzqyH2xPxYP.json new file mode 100644 index 00000000..0a1a380d --- /dev/null +++ b/packs/talents/Meister_seiner_Klasse_DUexlPzqyH2xPxYP.json @@ -0,0 +1,32 @@ +{ + "_id": "DUexlPzqyH2xPxYP", + "name": "Meister seiner Klasse", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann das primäre Attribut seiner Klasse um +1 steigern:

\n

Krieger steigern KÖR, Späher steigern AGI und Zauberwirker steigern GEI.

", + "rank": { + "base": 0, + "max": 1, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349495, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DUexlPzqyH2xPxYP" +} diff --git a/packs/talents/Meucheln_G3fbdAorLMCa2hGu.json b/packs/talents/Meucheln_G3fbdAorLMCa2hGu.json new file mode 100644 index 00000000..21ae69ae --- /dev/null +++ b/packs/talents/Meucheln_G3fbdAorLMCa2hGu.json @@ -0,0 +1,32 @@ +{ + "_id": "G3fbdAorLMCa2hGu", + "name": "Meucheln", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Senkt die Abwehr des Gegners gegen Schaden durch das Talent @Compendium[ds4.talents.8apgKsktW4pyWmMq]{Hinterhältiger Angriff} um 5 pro Talentrang.

\n

Gegen Ziele, die 2+ Größenkategorien (DS4 S. 104) größer sind, ist das Talent wirkungslos.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349500, + "modifiedTime": 1740227862726, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!G3fbdAorLMCa2hGu" +} diff --git a/packs/talents/Nekromantie_oxWYfqhbcsDoaaUJ.json b/packs/talents/Nekromantie_oxWYfqhbcsDoaaUJ.json new file mode 100644 index 00000000..d673a966 --- /dev/null +++ b/packs/talents/Nekromantie_oxWYfqhbcsDoaaUJ.json @@ -0,0 +1,84 @@ +{ + "_id": "oxWYfqhbcsDoaaUJ", + "name": "Nekromantie", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "pgGKKWy5nLTSdp8l", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.necromancy" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Nekromantie +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!oxWYfqhbcsDoaaUJ.pgGKKWy5nLTSdp8l" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kennt sich sehr gut mit nekromantischen Zaubern aus.

\n

Er erhält auf alle Zauber, die Untote bannen, erwecken oder kontrollieren, einen Bonus von +2 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349628, + "modifiedTime": 1740227862741, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oxWYfqhbcsDoaaUJ" +} diff --git a/packs/talents/Panzerung_zerschmettern_PRkbeuKFTWd8Ja3Q.json b/packs/talents/Panzerung_zerschmettern_PRkbeuKFTWd8Ja3Q.json new file mode 100644 index 00000000..cb33bd76 --- /dev/null +++ b/packs/talents/Panzerung_zerschmettern_PRkbeuKFTWd8Ja3Q.json @@ -0,0 +1,32 @@ +{ + "_id": "PRkbeuKFTWd8Ja3Q", + "name": "Panzerung zerschmettern", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Jedesmal, wenn ein Charakter mit einem Nahkampfangriff bei einem Gegner Schaden verursacht, sinkt der PA-Wert eines zufällig zu ermittelnden Rüstungsteils des Opfers um 1 Punkt pro Talentrang.

\n

Welches einzelne Rüstungsteil der getragenen Panzerung betroffen ist, wird zufällig ermittelt.

\n

Wird dabei ein magisches Rüstungsteil getroffen, zeigt das Talent allerdings keine Wirkung.

\n

Sinkt der PA-Wert eines Rüstungsteils auf Null oder niedriger, gilt es als zerstört, kann aber von einem findigen Handwerker wieder repariert werden (DS4 S. 88).

\n

Gegen natürliche Rüstungen (Chitinpanzer, Drachenschuppen, Hornpanzer u. ä.) ist das Talent dagegen wirkungslos.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349533, + "modifiedTime": 1740227862731, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PRkbeuKFTWd8Ja3Q" +} diff --git a/packs/talents/Parade_8wHCsoZEQp3rScWe.json b/packs/talents/Parade_8wHCsoZEQp3rScWe.json new file mode 100644 index 00000000..f1858811 --- /dev/null +++ b/packs/talents/Parade_8wHCsoZEQp3rScWe.json @@ -0,0 +1,32 @@ +{ + "_id": "8wHCsoZEQp3rScWe", + "name": "Parade", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter hat gelernt, die Nahkampfangriffe seiner Gegner zu parieren.

\n

Sofern er eine Nahkampfwaffe gezogen hat, erhält der Charakter pro Talentrang +1 auf seine Abwehr gegen jeden Nahkampfangriff, dessen er sich bewusst ist und der nicht von hinten erfolgt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349485, + "modifiedTime": 1740227862724, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8wHCsoZEQp3rScWe" +} diff --git a/packs/talents/Perfektion_iI1SP1214SpIzBCW.json b/packs/talents/Perfektion_iI1SP1214SpIzBCW.json new file mode 100644 index 00000000..05d91fce --- /dev/null +++ b/packs/talents/Perfektion_iI1SP1214SpIzBCW.json @@ -0,0 +1,32 @@ +{ + "_id": "iI1SP1214SpIzBCW", + "name": "Perfektion", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann die Boni auf Schlagen und Gegnerabwehr eines bereits erworbenen @Compendium[ds4.talents.v9ocoi91dKJahAe3]{Waffenkennertalents} für eine einzelne Waffenart pro Talentrang um +1 steigern.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349607, + "modifiedTime": 1740227862738, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iI1SP1214SpIzBCW" +} diff --git a/packs/talents/Pr_gler_GVuVyP3uLw3Fkiwf.json b/packs/talents/Pr_gler_GVuVyP3uLw3Fkiwf.json new file mode 100644 index 00000000..73443373 --- /dev/null +++ b/packs/talents/Pr_gler_GVuVyP3uLw3Fkiwf.json @@ -0,0 +1,32 @@ +{ + "_id": "GVuVyP3uLw3Fkiwf", + "name": "Prügler", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird bei einem Angriff mit stumpfen Waffen, Äxten oder zweihändigen Waffen ein Immersieg erzielt, wird die Abwehr des Gegners gegen diesen Angriff pro Talentrang um 5 gesenkt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349501, + "modifiedTime": 1740227862726, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GVuVyP3uLw3Fkiwf" +} diff --git a/packs/talents/Pr_ziser_Schuss_NSBiWy4FTIu6Y2Vv.json b/packs/talents/Pr_ziser_Schuss_NSBiWy4FTIu6Y2Vv.json new file mode 100644 index 00000000..57003939 --- /dev/null +++ b/packs/talents/Pr_ziser_Schuss_NSBiWy4FTIu6Y2Vv.json @@ -0,0 +1,32 @@ +{ + "_id": "NSBiWy4FTIu6Y2Vv", + "name": "Präziser Schuss", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Späher einmal alle 24 Stunden mit einem Fernkampfangriff einen präzisen Schuss abfeuern, gegen den keine Abwehr gewürfelt wird.

\n

Der präzise Schuss muss vor dem Würfeln der Schießen-Probe angesagt werden und kann pro Talentrang mit einem Talentrang eines anderen Talents (beispielsweise @Compendium[ds4.talents.srLA4jC8lsZbp3nT]{Fieser Schuss}) kombiniert werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349527, + "modifiedTime": 1740227862730, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NSBiWy4FTIu6Y2Vv" +} diff --git a/packs/talents/R_sttr_ger_3AkPGw4beW52LIAY.json b/packs/talents/R_sttr_ger_3AkPGw4beW52LIAY.json new file mode 100644 index 00000000..e44d7675 --- /dev/null +++ b/packs/talents/R_sttr_ger_3AkPGw4beW52LIAY.json @@ -0,0 +1,32 @@ +{ + "_id": "3AkPGw4beW52LIAY", + "name": "Rüstträger", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist es gewohnt, schwere Rüstung zu tragen und sich in ihr zu bewegen. Der durch Rüstung verursachte Malus auf Laufen wird pro Talentrang um 0,5 gemindert.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349459, + "modifiedTime": 1740227862720, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3AkPGw4beW52LIAY" +} diff --git a/packs/talents/R_stzauberer_lXzQsIobk5yaZ47a.json b/packs/talents/R_stzauberer_lXzQsIobk5yaZ47a.json new file mode 100644 index 00000000..728700bd --- /dev/null +++ b/packs/talents/R_stzauberer_lXzQsIobk5yaZ47a.json @@ -0,0 +1,84 @@ +{ + "_id": "lXzQsIobk5yaZ47a", + "name": "Rüstzauberer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "BBiQrltkYi3Jo0Am", + "changes": [ + { + "key": "system.armorValueSpellMalus", + "mode": 2, + "value": "-2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Panzerungs-Zaubermalus -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!lXzQsIobk5yaZ47a.BBiQrltkYi3Jo0Am" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann ein Panzerungsmalus (PA) in Höhe von 2 beim Zaubern/Zielzaubern ignoriert werden. Beispielsweise benötigt es 2 Talentränge, um ungehindert in einem @Compendium[ds4.equipment.t13RJoXrsS0HAyIQ]{Plattenpanzer} (PA 3) samt @Compendium[ds4.equipment.fKhTsMO4YXDYY8GX]{Metallhelm} (PA 1) zaubern zu können.

", + "rank": { + "base": 0, + "max": 1, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349620, + "modifiedTime": 1740227862740, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lXzQsIobk5yaZ47a" +} diff --git a/packs/talents/Raserei_pC1K0VHWTpaJqwtt.json b/packs/talents/Raserei_pC1K0VHWTpaJqwtt.json new file mode 100644 index 00000000..8f373674 --- /dev/null +++ b/packs/talents/Raserei_pC1K0VHWTpaJqwtt.json @@ -0,0 +1,90 @@ +{ + "_id": "pC1K0VHWTpaJqwtt", + "name": "Raserei", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "YPU4v5VXXeRcscmP", + "changes": [ + { + "key": "system.combatValues.meleeAttack.total", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": true, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schlagen +2, Abwehr -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!pC1K0VHWTpaJqwtt.YPU4v5VXXeRcscmP" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Berserker kann pro Talentrang seine Abwehr um 1 Punkt mindern und dadurch seinen Wert in Schlagen um +2 erhöhen.

\n

Diese Umschichtung kann jede Runde geändert werden (zählt als freie Aktion).

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349631, + "modifiedTime": 1740227862741, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pC1K0VHWTpaJqwtt" +} diff --git a/packs/talents/Reiten_bA8wUU0bKouuxkQ5.json b/packs/talents/Reiten_bA8wUU0bKouuxkQ5.json new file mode 100644 index 00000000..6bb6ee60 --- /dev/null +++ b/packs/talents/Reiten_bA8wUU0bKouuxkQ5.json @@ -0,0 +1,84 @@ +{ + "_id": "bA8wUU0bKouuxkQ5", + "name": "Reiten", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "d5V2GjfkccIubrfY", + "changes": [ + { + "key": "system.checks.ride", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Reiten +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!bA8wUU0bKouuxkQ5.d5V2GjfkccIubrfY" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Charaktere mit diesem Talent haben reiten gelernt, können also problemlos die Richtung oder Geschwindigkeit ihres Reittieres um einen Schritt ändern und vom Pferderücken aus angreifen (DS4 S. 92).

\n

Pro Talentrang erhalten sie bei Sprüngen oder Proben, um die Reitrichtung oder die Geschwindigkeit um mehr als einen Schritt zu wechseln, einen Bonus von +2. Im berittenen Kampf erhalten sie pro Talentrang +1 auf Schlagen-Proben gegen unberittene Gegner.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349567, + "modifiedTime": 1740227862736, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!bA8wUU0bKouuxkQ5" +} diff --git a/packs/talents/Ritual_der_Narben_g4XI9wikUdxoCFNg.json b/packs/talents/Ritual_der_Narben_g4XI9wikUdxoCFNg.json new file mode 100644 index 00000000..7dd98e7c --- /dev/null +++ b/packs/talents/Ritual_der_Narben_g4XI9wikUdxoCFNg.json @@ -0,0 +1,102 @@ +{ + "_id": "g4XI9wikUdxoCFNg", + "name": "Ritual der Narben", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "t1DVGkDGOwrjFccz", + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.combatValues.hitPoints.total", + "mode": 2, + "value": "-1", + "priority": null + }, + { + "key": "system.checks.flirt", + "mode": 2, + "value": "-1", + "priority": null + }, + { + "key": "system.checks.haggle", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Abwehr +2, soziale Proben -1, Lebenskraft -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!g4XI9wikUdxoCFNg.t1DVGkDGOwrjFccz" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang erhält der Charakter permanent einen magischen Bonus von +2 auf seine Abwehr. Die gesamte Haut des Charakters ist nach diesem Ritual durch vernarbte Runen entstellt, was ihm bei Proben auf soziale Interaktion einen Malus von -1 pro Talentrang einbringt. Außerdem hat das Ritual seinen Preis:

\n

Der Charakter verliert pro Talentrang permanent 1 Punkt Lebenskraft (LK).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349592, + "modifiedTime": 1740227862737, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!g4XI9wikUdxoCFNg" +} diff --git a/packs/talents/Rundumschlag_RTLVQgPmjiPDdTFw.json b/packs/talents/Rundumschlag_RTLVQgPmjiPDdTFw.json new file mode 100644 index 00000000..0fd81e0d --- /dev/null +++ b/packs/talents/Rundumschlag_RTLVQgPmjiPDdTFw.json @@ -0,0 +1,32 @@ +{ + "_id": "RTLVQgPmjiPDdTFw", + "name": "Rundumschlag", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann mit einer Zweihandwaffe per Rundumschlag pro Talentrang einen weiteren, angrenzende Gegner mit seinem Schlag treffen. Für jeden weiteren Feind, den er per Rundumschlag treffen will, wird der Schlagen-Wert (es wird nur eine einzige Probe für den ganzen Rundumschlag gewürfelt) um 1 und die Abwehr um 2 gesenkt, bis der Charakter wieder an der Reihe ist.

\n

Kampfmönche können dieses Talent nur waffenlos in Verbindung mit dem Talent @Compendium[ds4.talents.1VAiKGCnqKfNC8AE]{Waffenloser Meister} benutzen. Dabei kann der Talentrang von Rundumschlag nie höher sein als der von Waffenloser Meister.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349541, + "modifiedTime": 1740227862732, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RTLVQgPmjiPDdTFw" +} diff --git a/packs/talents/Runenkunde_t56WOCnxZwQWhajW.json b/packs/talents/Runenkunde_t56WOCnxZwQWhajW.json new file mode 100644 index 00000000..ebb1583c --- /dev/null +++ b/packs/talents/Runenkunde_t56WOCnxZwQWhajW.json @@ -0,0 +1,32 @@ +{ + "_id": "t56WOCnxZwQWhajW", + "name": "Runenkunde", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird benötigt, will man Schriftrollen herstellen (DS4 S. 101). Jeder Talentrang reduziert die Zubereitungsdauer von Schriftrollen und gibt +1 auf Proben, um diese zu fertigen, oder gefundene Schriftrollen zu identifizieren. Es handelt sich bei den magischen Runen auf einer Schriftrolle um keine tatsächlichen Schriftzeichen, die man lesen, geschweige denn übersetzen könnte.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349649, + "modifiedTime": 1740227862744, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!t56WOCnxZwQWhajW" +} diff --git a/packs/talents/Salve_zvZelUv5qQz3adKN.json b/packs/talents/Salve_zvZelUv5qQz3adKN.json new file mode 100644 index 00000000..de3724db --- /dev/null +++ b/packs/talents/Salve_zvZelUv5qQz3adKN.json @@ -0,0 +1,32 @@ +{ + "_id": "zvZelUv5qQz3adKN", + "name": "Salve", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Einmal pro Kampf kann der Charakter mit einer Fernkampfwaffe einen zusätzlichen Schuss pro Talentrang abfeuern. Bei mehreren Talenträngen können die zusätzlichen Schüsse alle zusammen in einer Runde gebündelt abgefeuert werden oder aufgeteilt in einzelnen Runden.

\n

Die einzelnen Schüsse werden dabei als eigenständige Angriffe behandelt, können also beispielsweise nicht mehrfach durch das Talent @Compendium[ds4.talents.srLA4jC8lsZbp3nT]{Fieser Schuss} aufgebessert werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349663, + "modifiedTime": 1740227862747, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zvZelUv5qQz3adKN" +} diff --git a/packs/talents/Sattelsch_tze_IIvsBSAqFFUFqALo.json b/packs/talents/Sattelsch_tze_IIvsBSAqFFUFqALo.json new file mode 100644 index 00000000..7e2a6014 --- /dev/null +++ b/packs/talents/Sattelsch_tze_IIvsBSAqFFUFqALo.json @@ -0,0 +1,32 @@ +{ + "_id": "IIvsBSAqFFUFqALo", + "name": "Sattelschütze", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent gestattet dem Charakter, während des Reitens mit einer Schusswaffe zu schießen, die mit beiden Händen gehalten wird.

\n

Dennoch gibt es bei diesem schwierigen Manöver immer noch einen Malus von -5 im Trab und -10 im Galopp auf die Schießen-Probe (DS4 S. 92).

\n

Durch den zweiten und dritten Talentrang in Sattelschütze kann dieser Malus jedoch um jeweils 5 gemindert werden.

\n

Der Charakter benötigt mindestens einen Talentrang im Talent @Compendium[ds4.talents.bA8wUU0bKouuxkQ5]{Reiten}, um Sattelschütze erwerben zu können.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349506, + "modifiedTime": 1740227862727, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!IIvsBSAqFFUFqALo" +} diff --git a/packs/talents/Sch_tze_GWVLcfQ2fm3Hc0zP.json b/packs/talents/Sch_tze_GWVLcfQ2fm3Hc0zP.json new file mode 100644 index 00000000..d66e0616 --- /dev/null +++ b/packs/talents/Sch_tze_GWVLcfQ2fm3Hc0zP.json @@ -0,0 +1,90 @@ +{ + "_id": "GWVLcfQ2fm3Hc0zP", + "name": "Schütze", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "v4ruKzcrriNyrgvE", + "changes": [ + { + "key": "system.combatValues.rangedAttack.total", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.combatValues.targetedSpellcasting.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schießen und Zielzauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!GWVLcfQ2fm3Hc0zP.v4ruKzcrriNyrgvE" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein geübter Fernkämpfer: Er erhält auf Schießen und Zielzauber einen Bonus von +1 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349503, + "modifiedTime": 1740227862726, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GWVLcfQ2fm3Hc0zP" +} diff --git a/packs/talents/Scharfsch_tze_OYneDZJStjhuDp41.json b/packs/talents/Scharfsch_tze_OYneDZJStjhuDp41.json new file mode 100644 index 00000000..dfdbeb05 --- /dev/null +++ b/packs/talents/Scharfsch_tze_OYneDZJStjhuDp41.json @@ -0,0 +1,84 @@ +{ + "_id": "OYneDZJStjhuDp41", + "name": "Scharfschütze", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "jJ2oSM9Bs4dDApiH", + "changes": [ + { + "key": "system.opponentDefenseForAttackType.ranged", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'weapon' && ('@item.system.attackType' === 'ranged' || '@item.system.attackType' === 'meleeRanged')" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Gegnerabwehr bei Fernkampfangriffen", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!OYneDZJStjhuDp41.jJ2oSM9Bs4dDApiH" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Im Fernkampf zielt der Charakter auf die verletzliche Körperpartien seines Ziels:

\n

Die Abwehr des Gegners wird gegen die Fernkampfangriffe des Charakters mittels Schießen um 1 pro Talentrang gesenkt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349532, + "modifiedTime": 1740227862731, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!OYneDZJStjhuDp41" +} diff --git a/packs/talents/Schlachtruf_jmjtmMy7DnG205xR.json b/packs/talents/Schlachtruf_jmjtmMy7DnG205xR.json new file mode 100644 index 00000000..94112359 --- /dev/null +++ b/packs/talents/Schlachtruf_jmjtmMy7DnG205xR.json @@ -0,0 +1,32 @@ +{ + "_id": "jmjtmMy7DnG205xR", + "name": "Schlachtruf", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf als freie Aktion einen Schlachtruf ausstoßen, der auf ihn und drei Kameraden pro Talentrang in Hörweite wirkt:

\n

Durch den Schlachtruf ermutigt, erhalten sie für W20/2 Runden einen Bonus von +1 pro Talentrang auf alle Angriffe.

\n

Ein Charakter kann immer nur von einem Schlachtruf profitieren.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349612, + "modifiedTime": 1740227862739, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!jmjtmMy7DnG205xR" +} diff --git a/packs/talents/Schlitzohr_lDqu4RpV5Nr6BnPW.json b/packs/talents/Schlitzohr_lDqu4RpV5Nr6BnPW.json new file mode 100644 index 00000000..8dfbe444 --- /dev/null +++ b/packs/talents/Schlitzohr_lDqu4RpV5Nr6BnPW.json @@ -0,0 +1,84 @@ +{ + "_id": "lDqu4RpV5Nr6BnPW", + "name": "Schlitzohr", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "ZFoibqksWVXEfiOB", + "changes": [ + { + "key": "system.checks.haggle", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Feilschen +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!lDqu4RpV5Nr6BnPW.ZFoibqksWVXEfiOB" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Auf alle Proben sozialer Interaktion, bei denen geblufft, gefeilscht oder verhandelt wird, erhält der Charakter einen Bonus von +3 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349619, + "modifiedTime": 1740227862739, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lDqu4RpV5Nr6BnPW" +} diff --git a/packs/talents/Schlossknacker_NR3BzKbROxHjpGrs.json b/packs/talents/Schlossknacker_NR3BzKbROxHjpGrs.json new file mode 100644 index 00000000..ac9ffcc0 --- /dev/null +++ b/packs/talents/Schlossknacker_NR3BzKbROxHjpGrs.json @@ -0,0 +1,90 @@ +{ + "_id": "NR3BzKbROxHjpGrs", + "name": "Schlossknacker", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "8JquYZA8S06MnE0n", + "changes": [ + { + "key": "system.checks.openLock", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.workMechanism", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schloss/Mechanismus öffnen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!NR3BzKbROxHjpGrs.8JquYZA8S06MnE0n" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang erhält der Charakter einen Bonus von +2 auf sämtliche Proben, um Schlösser zu öffnen.

\n

Außerdem kann pro Talentrang ein weiteres Mal versucht werden, ein und das selbe Schloss zu öffnen, ohne bereits einen Malus zu erhalten (DS4 S. 93).

\n

Schlossknacker ist mit dem @Compendium[ds4.talents.VqzpRGrHclPSGLP0]{Diebeskunst} kombinierbar.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349526, + "modifiedTime": 1740227862729, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NR3BzKbROxHjpGrs" +} diff --git a/packs/talents/Schmerzhafter_Wechsel_YPFshcSE5pZS0dto.json b/packs/talents/Schmerzhafter_Wechsel_YPFshcSE5pZS0dto.json new file mode 100644 index 00000000..18f087e3 --- /dev/null +++ b/packs/talents/Schmerzhafter_Wechsel_YPFshcSE5pZS0dto.json @@ -0,0 +1,32 @@ +{ + "_id": "YPFshcSE5pZS0dto", + "name": "Schmerzhafter Wechsel", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf zu einem beliebigen, nicht aktiven Zauber wechseln (zählt als freie Aktion), wodurch er jedoch augenblicklich W20/2 abwehrbaren Schaden erleidet.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349557, + "modifiedTime": 1740227862734, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!YPFshcSE5pZS0dto" +} diff --git a/packs/talents/Schnelle_Reflexe_TQG9TbBb9S0nHogC.json b/packs/talents/Schnelle_Reflexe_TQG9TbBb9S0nHogC.json new file mode 100644 index 00000000..3e73d9d8 --- /dev/null +++ b/packs/talents/Schnelle_Reflexe_TQG9TbBb9S0nHogC.json @@ -0,0 +1,84 @@ +{ + "_id": "TQG9TbBb9S0nHogC", + "name": "Schnelle Reflexe", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "XEVDTsOyhPJIytd9", + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!TQG9TbBb9S0nHogC.XEVDTsOyhPJIytd9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann schnell reagieren. Im Kampf erhält er pro Talentrang einen Bonus von +2 auf seine Initiative.

\n

Zusätzlich kann man pro Talentrang einmal im Kampf eine Waffe als freie Aktion ziehen, wechseln oder vom Boden aufheben.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349543, + "modifiedTime": 1740227862732, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TQG9TbBb9S0nHogC" +} diff --git a/packs/talents/Schnutz_vor_Elementen_yCHMzXoqCRrNU5Br.json b/packs/talents/Schnutz_vor_Elementen_yCHMzXoqCRrNU5Br.json new file mode 100644 index 00000000..9d36c4d7 --- /dev/null +++ b/packs/talents/Schnutz_vor_Elementen_yCHMzXoqCRrNU5Br.json @@ -0,0 +1,32 @@ +{ + "_id": "yCHMzXoqCRrNU5Br", + "name": "Schnutz vor Elementen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann jederzeit die Wirkung der Außentemperatur auf ihn um bis zu 15 °C pro Talentrang variieren und damit für ihn den Aufenthalt in besonders kalten oder heißen Gebieten angenehmer zu machen.

\n

Pro Talentrang kann er diese Wirkung auf zwei willige Gefährten in VE Meter Umkreis ausdehnen.

\n

Außerdem kann er pro Talentrang einmal alle 24 Stunden – als freie Aktion – seine Abwehr gegen Elementarschaden (beispielsweise durch Blitz-, Eis- oder Feuerzauber), gegen den ein Abwehrwurf zulässig ist (also beispielsweise nicht beim Zauberspruch @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerball}), pro Talentrang um 5 erhöhen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349659, + "modifiedTime": 1740227862746, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yCHMzXoqCRrNU5Br" +} diff --git a/packs/talents/Schwimmen_RJauLusDDQWo77JU.json b/packs/talents/Schwimmen_RJauLusDDQWo77JU.json new file mode 100644 index 00000000..f3ffdb58 --- /dev/null +++ b/packs/talents/Schwimmen_RJauLusDDQWo77JU.json @@ -0,0 +1,84 @@ +{ + "_id": "RJauLusDDQWo77JU", + "name": "Schwimmen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "neVzXXAck47nnOFM", + "changes": [ + { + "key": "system.checks.swim", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schwimmen +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RJauLusDDQWo77JU.neVzXXAck47nnOFM" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann schwimmen (DS4 S. 93) und erhält pro Talentrang auf alle diesbezüglichen Proben +3.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349536, + "modifiedTime": 1740227862732, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RJauLusDDQWo77JU" +} diff --git a/packs/talents/Sehnenschneider_s37iJhz4IQVhCWbe.json b/packs/talents/Sehnenschneider_s37iJhz4IQVhCWbe.json new file mode 100644 index 00000000..bac43876 --- /dev/null +++ b/packs/talents/Sehnenschneider_s37iJhz4IQVhCWbe.json @@ -0,0 +1,32 @@ +{ + "_id": "s37iJhz4IQVhCWbe", + "name": "Sehnenschneider", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann im Kampf einmal pro Talentrang einem Gegner die „Sehnen schneiden“. Er muss dies vor dem entsprechendem Nahkampfangriff ansagen. Für diese Aktion wird die Abwehr des Charakters halbiert, bis er in der nächsten Kampfrunde wieder an der Reihe ist.

\n

Wird beim Gegner ein Schaden erzielt, wird dieser Schaden halbiert und der Laufen- Wert des Gegners um 0,5 pro Talentrang gesenkt. Wird kein Schaden verursacht, zählt dies nicht als Talenteinsatz und ein erneuter Versuch ist möglich. Die Verletzung kann nur auf magische Weise geheilt werden (einfachste Heilmagie reicht allerdings).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349640, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!s37iJhz4IQVhCWbe" +} diff --git a/packs/talents/Sensensp_tter_7ZBxxxx32wacXkHS.json b/packs/talents/Sensensp_tter_7ZBxxxx32wacXkHS.json new file mode 100644 index 00000000..48aa9407 --- /dev/null +++ b/packs/talents/Sensensp_tter_7ZBxxxx32wacXkHS.json @@ -0,0 +1,32 @@ +{ + "_id": "7ZBxxxx32wacXkHS", + "name": "Sensenspötter", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Nekromant kann dem Tod ein Schnippchen schlagen:

\n

Sobald er regeltechnisch stirbt, kann er noch eine weitere Runde pro Talentrang handeln, als ober er noch am Leben wäre, vorausgesetzt, er ist nicht enthauptet, explodiert, zerstampft u. ä.

\n

Sollte der Nekromant bei Eintritt des Todes bereits bewusstlos sein, bleibt er dies weiterhin, kann allerdings in dieser Zeit verarztet und geheilt werden, als wäre er noch am Leben.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349479, + "modifiedTime": 1740227862723, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7ZBxxxx32wacXkHS" +} diff --git a/packs/talents/Spruchmeister_JldVU3O4mmDWqk8s.json b/packs/talents/Spruchmeister_JldVU3O4mmDWqk8s.json new file mode 100644 index 00000000..cae74e81 --- /dev/null +++ b/packs/talents/Spruchmeister_JldVU3O4mmDWqk8s.json @@ -0,0 +1,32 @@ +{ + "_id": "JldVU3O4mmDWqk8s", + "name": "Spruchmeister", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann einmal alle 24 Stunden die Abklingzeit eines bestimmten Zauberspruchs ignorieren. Bei Erwerb eines Talentranges muss festgelegt werden, um welchen Zauber es sich dabei handelt. Werden mehrere Talentränge in ein und den selben Zauberspruch investiert, kann seine Abklingzeit einmal mehr pro Talentrang innerhalb der 24 Stunden ignoriert werden. Zaubersprüche, deren reguläre Abklingzeit mehr als 24 Stunden beträgt, können nicht gewählt werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349511, + "modifiedTime": 1740227862728, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JldVU3O4mmDWqk8s" +} diff --git a/packs/talents/Stabbindung_soobr7uyQgDm3DoN.json b/packs/talents/Stabbindung_soobr7uyQgDm3DoN.json new file mode 100644 index 00000000..52b3f3c1 --- /dev/null +++ b/packs/talents/Stabbindung_soobr7uyQgDm3DoN.json @@ -0,0 +1,32 @@ +{ + "_id": "soobr7uyQgDm3DoN", + "name": "Stabbindung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird rangweise an einen bestimmten Kampfstab gebunden – so kann der Charakter beispielsweise in einen Kampfstab zwei Talentränge investieren und einen dritten Talentrang beispielsweise in einen Ersatzkampfstab.

\n

Der Kampfstab wird durch diesen Vorgang magisch, zerbricht also nicht einfach bei einem Schlagen-Patzer.

\n

Pro jeweiligen Talentrang erhält der Charakter +1 auf Zielzauber (zusätzlich zu dem normalen, nichtmagischen +1 Bonus des Kampfstabs), sofern er den Stab hält.

\n

Desweiteren bindet er pro investierten Talentrang einen seiner Zauber an den Stab, wodurch er den Kampfstab wie einen Zauberstab für diesen Zauber benutzen kann. Wird ein Kampfstab wider Erwarten zerstört, sind die investierten Talentränge nicht verloren und können – nach Ablauf von W20 Wochen – an einen anderen Stab gebunden werden.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349644, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!soobr7uyQgDm3DoN" +} diff --git a/packs/talents/Standhaft_5LXCr1G1Hmx622V0.json b/packs/talents/Standhaft_5LXCr1G1Hmx622V0.json new file mode 100644 index 00000000..37c3072e --- /dev/null +++ b/packs/talents/Standhaft_5LXCr1G1Hmx622V0.json @@ -0,0 +1,32 @@ +{ + "_id": "5LXCr1G1Hmx622V0", + "name": "Standhaft", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang sinkt die Lebenskraft-Grenze, ab der ein Charakter bewusstlos wird, um jeweils 3.

\n

Ein Charakter mit Standhaft III wird also erst mit -9 LK bewusstlos, statt schon bei Null. Alles natürlich nur unter der Voraussetzung, dass man so viele negative LK auch überleben kann (DS4 S. 42).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349463, + "modifiedTime": 1740227862720, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5LXCr1G1Hmx622V0" +} diff --git a/packs/talents/Teufelchen_5nve4XNc1bJdfZNN.json b/packs/talents/Teufelchen_5nve4XNc1bJdfZNN.json new file mode 100644 index 00000000..0f35e0ba --- /dev/null +++ b/packs/talents/Teufelchen_5nve4XNc1bJdfZNN.json @@ -0,0 +1,32 @@ +{ + "_id": "5nve4XNc1bJdfZNN", + "name": "Teufelchen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Beschwörer erhält pro Talentrang ein kleines, fliegendes Teufelchen als Begleiter, das ihn im Kampf unterstützt. Teufelchen können nur Knurrlaute von sich geben, verstehen aber simple Worte und einsilbige Befehle ihres Beschwörers.

\n

Sobald der Charakter es befiehlt oder das Teufelchen über weniger als 1 LK verfügt, kehrt es zurück auf seine Existenzebene, von wo es erst nach frühestens W20 Stunden wiederkehren kann, sofern der Charakter dies wünscht.

\n

Es ist nicht möglich, die Talente @Compendium[ds4.talents.KwGcyAzyqbz7oiTl]{Vertrauter} oder @Compendium[ds4.talents.tkLyvmSYvVslMXVE]{Vertrautenband} auf ein Teufelchen anzuwenden.

\n

Es gibt drei Arten von Teufelchen (@Compendium[ds4.creatures.aqbcBjeCJUHJ5uVj]{Teufelchen I}, @Compendium[ds4.creatures.SxbO1iTrXYGbdMoC]{Teufelchen II}, @Compendium[ds4.creatures.22pkyKnZoRLG0nnY]{Teufelchen III}), auf die man durch weitere Talentränge Zugang erhält. Bei Erwerb eines Talentranges wird festgelegt, um was für ein Teufelchen es sich dabei handelt. Es ist auch immer möglich, ein rangniedrigeres Teufelchen erneut auszuwählen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349466, + "modifiedTime": 1740227862721, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5nve4XNc1bJdfZNN" +} diff --git a/packs/talents/Tiergestalt_iP5aZcqriVLjdVcd.json b/packs/talents/Tiergestalt_iP5aZcqriVLjdVcd.json new file mode 100644 index 00000000..fc81ef13 --- /dev/null +++ b/packs/talents/Tiergestalt_iP5aZcqriVLjdVcd.json @@ -0,0 +1,32 @@ +{ + "_id": "iP5aZcqriVLjdVcd", + "name": "Tiergestalt", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Druide kann sich pro Talentrang einmal alle 24 Stunden samt seiner Ausrüstung (magische Boni von Gegenständen wirken dadurch weiterhin) in ein Tier der Größenkategorie „normal“ (DS4 S. 104) oder kleiner verwandeln, wie beispielsweise eine Maus, eine Katze oder ein Wolf, aber keine magischen, giftigen oder flugfähigen Tiere.

\n

Die Verwandlung dauert eine Runde und kann jederzeit rückgängig gemacht werden, erlittener Schaden bleibt nach der Rückverwandlung gänzlich bestehen.

\n

GEI, VE und AU des Druiden verändern sich in Tiergestalt nicht, jedoch nehmen alle anderen Attribute, Eigenschaften und Kampfwerte die Werte des Tieres an, nicht jedoch Spezialangriffe wie beispielsweise den Giftbiss einer Schlange.

\n

In Tiergestalt ist es dem Druiden nicht möglich, zu sprechen oder zu zaubern, wohl aber, Gesprochenes zu verstehen und die Sinne des Tieres einzusetzen.

\n

Zauber, die beispielsweise Tiere kontrollieren, haben auf den verwandelten Druiden keinen Einfluss.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349608, + "modifiedTime": 1740227862738, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iP5aZcqriVLjdVcd" +} diff --git a/packs/talents/Tiermeister_IfyKb7y4YoUTssTs.json b/packs/talents/Tiermeister_IfyKb7y4YoUTssTs.json new file mode 100644 index 00000000..781bb6ca --- /dev/null +++ b/packs/talents/Tiermeister_IfyKb7y4YoUTssTs.json @@ -0,0 +1,84 @@ +{ + "_id": "IfyKb7y4YoUTssTs", + "name": "Tiermeister", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "oelEFuhY9y6DsxXO", + "changes": [ + { + "key": "system.checks.ride", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Reiten +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!IfyKb7y4YoUTssTs.oelEFuhY9y6DsxXO" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter hat ein Gespür für Tiere und erhält auf alle Proben im Umgang mit ihnen +3 (dieser Bonus zählt auch auf Reiten-Proben, um die Reitgeschwindigkeit oder die Richtung zu ändern).

\n

Einmal alle 24 Stunden pro Talentrang kann er außerdem eine beliebige Anzahl wilder, aggressiver oder selbst ausgehungerter Tiere dazu bringen, ihn und zwei Begleiter pro Talentrang zu verschonen (es sei denn, sie greifen ihrerseits die Tiere an).

\n

Dies ist auch bei tollwütigen oder kontrollierten Tieren möglich, sofern hier dem Charakter eine Probe gegen GEI+AU+Talentrang gelingt (zählt als ganze Aktion, ein Versuch pro Talentrang).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349508, + "modifiedTime": 1740227862727, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!IfyKb7y4YoUTssTs" +} diff --git a/packs/talents/Tod_entrinnen_9hpucJC8WArBiXUR.json b/packs/talents/Tod_entrinnen_9hpucJC8WArBiXUR.json new file mode 100644 index 00000000..196fe661 --- /dev/null +++ b/packs/talents/Tod_entrinnen_9hpucJC8WArBiXUR.json @@ -0,0 +1,32 @@ +{ + "_id": "9hpucJC8WArBiXUR", + "name": "Tod entrinnen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Sobald der Charakter weniger als 1 LK besitzt, aber immer noch lebt, heilt er automatisch nach 5 Runden (-1 Runde pro Talentrang) 1 LK pro Talentrang pro Runde.

\n

Sobald seine LK wieder im positiven Bereich sind, endet der Heileffekt und der Charakter ist augenblicklich voll einsatzfähig.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349487, + "modifiedTime": 1740227862724, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9hpucJC8WArBiXUR" +} diff --git a/packs/talents/Todeskraft_Q98LHOFZmKVoafp8.json b/packs/talents/Todeskraft_Q98LHOFZmKVoafp8.json new file mode 100644 index 00000000..6c6905b2 --- /dev/null +++ b/packs/talents/Todeskraft_Q98LHOFZmKVoafp8.json @@ -0,0 +1,32 @@ +{ + "_id": "Q98LHOFZmKVoafp8", + "name": "Todeskraft", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Immer wenn in Reichweite von 2+Talentrang in Metern ein Lebewesen, von mindestens „kleiner“ Größenkategorie (DS4 S. 104), zu Tode kommt, regeneriert der Nekromant 2 LK pro Talentrang in Todeskraft.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349534, + "modifiedTime": 1740227862731, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Q98LHOFZmKVoafp8" +} diff --git a/packs/talents/Totenrufer_rbHZFVutiQ25glBq.json b/packs/talents/Totenrufer_rbHZFVutiQ25glBq.json new file mode 100644 index 00000000..5db467c8 --- /dev/null +++ b/packs/talents/Totenrufer_rbHZFVutiQ25glBq.json @@ -0,0 +1,32 @@ +{ + "_id": "rbHZFVutiQ25glBq", + "name": "Totenrufer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Nekromant einmal alle 24 Stunden die Abklingzeit eines Zaubers zum Erwecken von Untoten ignorieren.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349639, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rbHZFVutiQ25glBq" +} diff --git a/packs/talents/Uners_ttliches_Beschw_ren_fIrcapAlXMqto18X.json b/packs/talents/Uners_ttliches_Beschw_ren_fIrcapAlXMqto18X.json new file mode 100644 index 00000000..790af2b5 --- /dev/null +++ b/packs/talents/Uners_ttliches_Beschw_ren_fIrcapAlXMqto18X.json @@ -0,0 +1,32 @@ +{ + "_id": "fIrcapAlXMqto18X", + "name": "Unersättliches Beschwören", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Dämonologe einmal alle 24 Stunden die Abklingzeit des Zauberspruchs Dämonen beschwören ignorieren.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349586, + "modifiedTime": 1740227862737, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fIrcapAlXMqto18X" +} diff --git a/packs/talents/Untote_Horden_FoY7VbBTatyHOrb8.json b/packs/talents/Untote_Horden_FoY7VbBTatyHOrb8.json new file mode 100644 index 00000000..e75f912c --- /dev/null +++ b/packs/talents/Untote_Horden_FoY7VbBTatyHOrb8.json @@ -0,0 +1,32 @@ +{ + "_id": "FoY7VbBTatyHOrb8", + "name": "Untote Horden", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang erhöht sich die Anzahl der erweckbaren und kontrollierbaren Untoten (entspricht der Stufe des Charakters) um 3.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349498, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FoY7VbBTatyHOrb8" +} diff --git a/packs/talents/Untote_zerschmettern_ml6GkLIsqDII9Mcp.json b/packs/talents/Untote_zerschmettern_ml6GkLIsqDII9Mcp.json new file mode 100644 index 00000000..a5937dea --- /dev/null +++ b/packs/talents/Untote_zerschmettern_ml6GkLIsqDII9Mcp.json @@ -0,0 +1,32 @@ +{ + "_id": "ml6GkLIsqDII9Mcp", + "name": "Untote zerschmettern", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden einen Nahkampfangriff gegen einen Untoten führen, der nicht abgewehrt werden kann.

\n

Vor dem Angriffswurf muss angesagt werden, dass das Talent zum Einsatz kommen soll, welches mit Talenten wie @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb} und/oder @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} kombiniert werden kann.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349624, + "modifiedTime": 1740227862740, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ml6GkLIsqDII9Mcp" +} diff --git a/packs/talents/Verdr_cken_inRlUNgoiaHm4pf6.json b/packs/talents/Verdr_cken_inRlUNgoiaHm4pf6.json new file mode 100644 index 00000000..6f52e489 --- /dev/null +++ b/packs/talents/Verdr_cken_inRlUNgoiaHm4pf6.json @@ -0,0 +1,32 @@ +{ + "_id": "inRlUNgoiaHm4pf6", + "name": "Verdrücken", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann sich bei den Aktionen Aufstehen und Rennen zusätzlich um einen Meter pro Talentrang bewegen.

\n

Zusätzlich kann er, gefesselt oder in Ketten gelegt, zweimal pro Talentrang versuchen, sich mit AGI+BE aus einer Fessel oder Schelle zu winden (man benötigt beispielsweise 2 erfolgreiche Proben, um beide Hände aus Handschellen zu befreien).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349610, + "modifiedTime": 1740227862738, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!inRlUNgoiaHm4pf6" +} diff --git a/packs/talents/Vergeltung_AT9Bi7Tsr8k3HujP.json b/packs/talents/Vergeltung_AT9Bi7Tsr8k3HujP.json new file mode 100644 index 00000000..00baf5d0 --- /dev/null +++ b/packs/talents/Vergeltung_AT9Bi7Tsr8k3HujP.json @@ -0,0 +1,32 @@ +{ + "_id": "AT9Bi7Tsr8k3HujP", + "name": "Vergeltung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Im Kampf kann der Charakter einmal pro Talentrang seinen Wert in Schlagen für eine Runde um seinen vierfachen Talentrang in @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} bzw. @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} erhöhen.

\n

Es ist nicht mögliche, mehrere Talentränge von Vergeltung in einer einzelnen Probe zu vereinen.

\n

Eine Kombination mit Talenten wie beispielsweise @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb} ist allerdings uneingeschränkt möglich.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349492, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!AT9Bi7Tsr8k3HujP" +} diff --git a/packs/talents/Verheerer_6oXmRM21CLfELqKv.json b/packs/talents/Verheerer_6oXmRM21CLfELqKv.json new file mode 100644 index 00000000..a1b05c4e --- /dev/null +++ b/packs/talents/Verheerer_6oXmRM21CLfELqKv.json @@ -0,0 +1,84 @@ +{ + "_id": "6oXmRM21CLfELqKv", + "name": "Verheerer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "aqgIfpGWXYeXn1y6", + "changes": [ + { + "key": "system.opponentDefense", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.allowsDefense" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Gegnerabwehr bei Zaubern/Zielzaubern -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!6oXmRM21CLfELqKv.aqgIfpGWXYeXn1y6" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter versteht es, seine Magie verheerend einzusetzen:

\n

Die Abwehr des Gegners wird gegen Schaden durch die Zauberangriffe des Charakters (mittels Zaubern oder Zielzaubern) um 1 pro Talentrang gesenkt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349474, + "modifiedTime": 1740227862722, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6oXmRM21CLfELqKv" +} diff --git a/packs/talents/Verletzen_dtynnRNkxg59Nqz4.json b/packs/talents/Verletzen_dtynnRNkxg59Nqz4.json new file mode 100644 index 00000000..f3b1b9a8 --- /dev/null +++ b/packs/talents/Verletzen_dtynnRNkxg59Nqz4.json @@ -0,0 +1,84 @@ +{ + "_id": "dtynnRNkxg59Nqz4", + "name": "Verletzen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "x1FVRsSyjHwOfYRs", + "changes": [ + { + "key": "system.opponentDefenseForAttackType.melee", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'weapon' && ('@item.system.attackType' === 'melee' || '@item.system.attackType' === 'meleeRanged')" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Gegnerabwehr bei Nahkampfangriffen -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dtynnRNkxg59Nqz4.x1FVRsSyjHwOfYRs" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Im Nahkampf zielt der Charakter auf die verletzlichen Körperpartien seines Gegenübers:

\n

Die Abwehr des Gegners wird gegen die Nahkampfangriffe des Charakters mittels Schlagen um 1 pro Talentrang gesenkt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349581, + "modifiedTime": 1740227862736, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dtynnRNkxg59Nqz4" +} diff --git a/packs/talents/Vernichtender_Schlag_tmFeIA1PSVHqGGjx.json b/packs/talents/Vernichtender_Schlag_tmFeIA1PSVHqGGjx.json new file mode 100644 index 00000000..ff0cf6be --- /dev/null +++ b/packs/talents/Vernichtender_Schlag_tmFeIA1PSVHqGGjx.json @@ -0,0 +1,84 @@ +{ + "_id": "tmFeIA1PSVHqGGjx", + "name": "Vernichtender Schlag", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "rK7expqsrPV5t8f1", + "changes": [ + { + "key": "system.checks.featOfStrength", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Kraftakt +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!tmFeIA1PSVHqGGjx.rK7expqsrPV5t8f1" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Krieger einmal alle 24 Stunden mit einem Nahkampfangriff einen vernichtenden Schlag ausführen, gegen den keine Abwehr gewürfelt wird.

\n

Der vernichtende Schlag muss vor dem Würfeln der Schlagen-Probe angekündigt werden und kann pro Talentrang mit maximal einem Talentrang eines anderen Talents (beispielsweise @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb}) kombiniert werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349652, + "modifiedTime": 1740227862744, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tmFeIA1PSVHqGGjx" +} diff --git a/packs/talents/Vertrautenband_tkLyvmSYvVslMXVE.json b/packs/talents/Vertrautenband_tkLyvmSYvVslMXVE.json new file mode 100644 index 00000000..cb3e0f49 --- /dev/null +++ b/packs/talents/Vertrautenband_tkLyvmSYvVslMXVE.json @@ -0,0 +1,32 @@ +{ + "_id": "tkLyvmSYvVslMXVE", + "name": "Vertrautenband", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Schafft ein besonderes Band zwischen dem Charakter und einem einzelnen seiner Vertrauten, wodurch beide sich telepathisch miteinander verständigen (einfache Kommunikation wie „Gefahr?“, „Flieh!“ oder „Hilf mir!“) können.

\n

Zusätzlich wird pro Talentrang ein Bonus von +3 auf die Eigenschaften des Vertrauten verteilt.

\n

Jedesmal, wenn der Charakter um eine Stufe aufsteigt, erhält dieses Tier außerdem +1 auf eine beliebige Eigenschaft. Wird das Tier getötet, erlischt das Band, wird jedoch bei Wiederbelebung des Tieres erneuert. Ist dies nicht der Fall, sind die Talentränge nicht verloren und können für ein neues Vertrautenband mit einem anderen Vertrauten eingesetzt werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349650, + "modifiedTime": 1740227862744, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tkLyvmSYvVslMXVE" +} diff --git a/packs/talents/Vertrauter_KwGcyAzyqbz7oiTl.json b/packs/talents/Vertrauter_KwGcyAzyqbz7oiTl.json new file mode 100644 index 00000000..68c8dcf0 --- /dev/null +++ b/packs/talents/Vertrauter_KwGcyAzyqbz7oiTl.json @@ -0,0 +1,32 @@ +{ + "_id": "KwGcyAzyqbz7oiTl", + "name": "Vertrauter", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang schließt sich Spähern ein Tier (Falke, Hund, Pferd, Wolf usw.), Zauberwirkern ein Kleintier (Katze, Kröte, Rabe usw.) und Paladinen ein Schlachtross an. Ein Druide kann jede Art von Tier bis Größenkategorie “groß” (DS4 S. 104) wählen.

\n

Die treuen Tiere befolgen einfache, einsilbige Befehle wie „Platz!“ und „Fass!“ und haben Verstand +1, auch wenn mit ihnen keine intelligente Kommunikation möglich ist und sie auch nicht zum heimlichen Auskundschaften etc. abgerichtet werden können. Ein Vertrauter gewährt seinem Besitzer, sofern er nicht mehr als AU x 5 (des Charakters) in Metern von ihm entfernt ist, einen Bonus von +1 auf einen von zwei Kampfwerten:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KlasseVertrautenbonus
SpäherInitiative oder Schießen
ZauberwirkerZaubern oder Zielzaubern
PaladinAbwehr oder Schlagen
\n

Der zu erhöhende Kampfwert wird bei Erhalt des Vertrauten ausgewählt.

\n

Wird ein Vertrauter getötet, erleidet der Charakter im selben Moment W20/2 nicht abwehrbaren Schaden und der Bonus auf den Kampfwert erlischt. Wird der Vertraute nicht wiederbelebt, kann für seinen Talentrang ein neuer Vertrauter gewählt werden, allerdings erst nach frühestens W20 Wochen. Bis dahin hat der Charakter temporär KÖR-1.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349514, + "modifiedTime": 1740227862728, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KwGcyAzyqbz7oiTl" +} diff --git a/packs/talents/Waffenkenner_v9ocoi91dKJahAe3.json b/packs/talents/Waffenkenner_v9ocoi91dKJahAe3.json new file mode 100644 index 00000000..8dce687b --- /dev/null +++ b/packs/talents/Waffenkenner_v9ocoi91dKJahAe3.json @@ -0,0 +1,32 @@ +{ + "_id": "v9ocoi91dKJahAe3", + "name": "Waffenkenner", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter besondere Kenntnisse im Umgang mit einer bestimmten Art von Nahkampfwaffe erlangen (beispielsweise Dolche, Langschwerter oder Streitäxte).

\n

Er erhält im Kampf mit dieser Waffenart Schlagen +1 und die Abwehr des Gegners wird um 1 gesenkt. Es ist nicht möglich, Waffenkenner mehrmals für ein und dieselbe Waffenart zu erlangen, jedoch kann der Talentrang mit Hilfe des Talents @Compendium[ds4.talents.iI1SP1214SpIzBCW]{Perfektion} weiter ausgebaut werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349654, + "modifiedTime": 1740227862745, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!v9ocoi91dKJahAe3" +} diff --git a/packs/talents/Waffenloser_Meister_1VAiKGCnqKfNC8AE.json b/packs/talents/Waffenloser_Meister_1VAiKGCnqKfNC8AE.json new file mode 100644 index 00000000..105c2318 --- /dev/null +++ b/packs/talents/Waffenloser_Meister_1VAiKGCnqKfNC8AE.json @@ -0,0 +1,32 @@ +{ + "_id": "1VAiKGCnqKfNC8AE", + "name": "Waffenloser Meister", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Kampfmönch ist ein Meister des waffenlosen Kampfes, der WB seiner unbewaffneten Angriffe beträgt +1 pro Talentrang.

\n

Der normalerweise gültige Bonus von +5 auf Abwehr gegen waffenlose Angriffe entfällt bei seinen Gegnern, deren Abwehr außerdem noch pro Talentrang um 1 gesenkt wird. Außerdem erhält ein waffenloser Meister +1 auf Abwehr und Initiative pro Talentrang, sofern er keinen Schild und keine Art von Rüstungen bis auf Stoff trägt.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349448, + "modifiedTime": 1740227862719, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1VAiKGCnqKfNC8AE" +} diff --git a/packs/talents/Wahrnehmung_aojENPok9Guo3JN1.json b/packs/talents/Wahrnehmung_aojENPok9Guo3JN1.json new file mode 100644 index 00000000..11b17c5a --- /dev/null +++ b/packs/talents/Wahrnehmung_aojENPok9Guo3JN1.json @@ -0,0 +1,108 @@ +{ + "_id": "aojENPok9Guo3JN1", + "name": "Wahrnehmung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "qxrTP7Cs4mFS7lLU", + "changes": [ + { + "key": "system.checks.perception", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.wakeUp", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.decipherScript", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.readTracks", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.search", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Wahrnehmungsproben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!aojENPok9Guo3JN1.qxrTP7Cs4mFS7lLU" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein aufmerksamer Beobachter. Auf alle Bemerken-Proben erhält er +2 pro Talentrang.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349562, + "modifiedTime": 1740227862735, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aojENPok9Guo3JN1" +} diff --git a/packs/talents/Wechsler_gwCc6niwZL45wklE.json b/packs/talents/Wechsler_gwCc6niwZL45wklE.json new file mode 100644 index 00000000..1903d92b --- /dev/null +++ b/packs/talents/Wechsler_gwCc6niwZL45wklE.json @@ -0,0 +1,84 @@ +{ + "_id": "gwCc6niwZL45wklE", + "name": "Wechsler", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "nxzOItIzbsdQSbby", + "changes": [ + { + "key": "system.checks.changeSpell", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Zauber wechseln +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gwCc6niwZL45wklE.nxzOItIzbsdQSbby" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter hat gelernt, sich auf das Auswechseln seines aktiven Zaubers zu konzentrieren: Er erhält auf Proben, um seine Zauber zu wechseln, pro Talentrang einen Bonus von +2.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349596, + "modifiedTime": 1740227862737, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gwCc6niwZL45wklE" +} diff --git a/packs/talents/Wissensegebiet_IB1OJ65TseuSw9ZI.json b/packs/talents/Wissensegebiet_IB1OJ65TseuSw9ZI.json new file mode 100644 index 00000000..fcd834ef --- /dev/null +++ b/packs/talents/Wissensegebiet_IB1OJ65TseuSw9ZI.json @@ -0,0 +1,32 @@ +{ + "_id": "IB1OJ65TseuSw9ZI", + "name": "Wissensegebiet", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird für jedes Wissensgebiet (Alte Sagen, Mathematik, Naturkunde, Sternenkunde, Zwergische Religion usw.) individuell erlernt, kann also mehrmals bis Höchstrang III erworben werden.

\n

Man beherrscht das jeweilige Wissensgebiet und erhält auf alle diesbezüglichen Proben einen Bonus von +3 pro Talentrang, den man für dieses Wissensgebiet erworben hat.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349505, + "modifiedTime": 1740227862727, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!IB1OJ65TseuSw9ZI" +} diff --git a/packs/talents/Zauber_ausl_sen_kZti1KQIbf4UPvI7.json b/packs/talents/Zauber_ausl_sen_kZti1KQIbf4UPvI7.json new file mode 100644 index 00000000..0d85ea53 --- /dev/null +++ b/packs/talents/Zauber_ausl_sen_kZti1KQIbf4UPvI7.json @@ -0,0 +1,32 @@ +{ + "_id": "kZti1KQIbf4UPvI7", + "name": "Zauber auslösen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Meisterdieb kann, wie ein Zauberwirker, Zaubersprüche von Schriftrollen oder aus Zauberbüchern ablesen und dadurch auslösen, wodurch die Schrift des Zaubers verblasst und er verschwindet.

\n

Pro Talentrang wird eine der drei Zauberklassen Heiler, Zauberer oder Schwarzmagier gewählt und fortan kann der Charakter alle Zauber, die dieser Klasse zugänglich sind, unabhängig von seiner Stufe ablesen und auslösen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349613, + "modifiedTime": 1740227862739, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kZti1KQIbf4UPvI7" +} diff --git a/packs/talents/Zaubermacht_XiwLao8lZi3JL0ku.json b/packs/talents/Zaubermacht_XiwLao8lZi3JL0ku.json new file mode 100644 index 00000000..2e93c1cb --- /dev/null +++ b/packs/talents/Zaubermacht_XiwLao8lZi3JL0ku.json @@ -0,0 +1,32 @@ +{ + "_id": "XiwLao8lZi3JL0ku", + "name": "Zaubermacht", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf seinen Wert in Zaubern oder Zielzaubern eine Runde lang um den Wert von Geist erhöhen, sofern es sich dabei um einen Zauber handelt, der andere schädigt oder heilt. Es ist möglich, mehrere Talentränge in einem einzigen Zauber zu vereinen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349554, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XiwLao8lZi3JL0ku" +} diff --git a/packs/talents/Zauberwaffe_rCRPchtSJye0K5nt.json b/packs/talents/Zauberwaffe_rCRPchtSJye0K5nt.json new file mode 100644 index 00000000..f7693395 --- /dev/null +++ b/packs/talents/Zauberwaffe_rCRPchtSJye0K5nt.json @@ -0,0 +1,32 @@ +{ + "_id": "rCRPchtSJye0K5nt", + "name": "Zauberwaffe", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird pro Talentrang an eine bestimmte Nahkampfwaffe gebunden – so kann der Charakter beispielsweise in sein Lieblingsschwert zwei Talentränge investieren und einen dritten Talentrang beispielsweise in einen Bihänder. Pro Talentrang erhält der Charakter +1 auf Zielzaubern, sofern er die jeweilige Waffe in den Händen hält.

\n

Desweiteren kann er pro gebundenen Talentrang einen seiner Zauber an die Waffe binden, um sie wie einen Zauberstab für diesen Zauber zu nutzen. Wird eine Zauberwaffe zerstört, sind die investierten Talentränge nicht verloren und können (nach Ablauf von W20 Wochen) an eine andere Waffe gebunden werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349637, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rCRPchtSJye0K5nt" +} diff --git a/packs/talents/Zehrender_Spurt_qnYeR3a3LNUJ329t.json b/packs/talents/Zehrender_Spurt_qnYeR3a3LNUJ329t.json new file mode 100644 index 00000000..8403acbc --- /dev/null +++ b/packs/talents/Zehrender_Spurt_qnYeR3a3LNUJ329t.json @@ -0,0 +1,32 @@ +{ + "_id": "qnYeR3a3LNUJ329t", + "name": "Zehrender Spurt", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Blutmagier kann für das Opfern von 1 LK (zählt als freie Aktion) seinen Wert in Laufen für W20/2 Runden um 2 m erhöhen. Pro weiterem Talentrang kann ein zusätzlicher LK geopfert werden, um Laufen um weitere 2 m zu erhöhen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349636, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!qnYeR3a3LNUJ329t" +} diff --git a/packs/talents/Zwei_Waffen_rXXw5aS0pCr5amWa.json b/packs/talents/Zwei_Waffen_rXXw5aS0pCr5amWa.json new file mode 100644 index 00000000..f65ab081 --- /dev/null +++ b/packs/talents/Zwei_Waffen_rXXw5aS0pCr5amWa.json @@ -0,0 +1,32 @@ +{ + "_id": "rXXw5aS0pCr5amWa", + "name": "Zwei Waffen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang wird der Malus von -10 auf Schlagen und Abwehr beim Kampf mit zwei Waffen um jeweils 2 Punkte gemindert.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349638, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rXXw5aS0pCr5amWa" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..86fb9412 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5332 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@commitlint/cli': + specifier: 19.7.1 + version: 19.7.1(@types/node@18.19.76)(typescript@5.7.3) + '@commitlint/config-conventional': + specifier: 19.7.1 + version: 19.7.1 + '@eslint/js': + specifier: 9.21.0 + version: 9.21.0 + '@foundryvtt/foundryvtt-cli': + specifier: 1.0.4 + version: 1.0.4 + '@guanghechen/rollup-plugin-copy': + specifier: 6.0.4 + version: 6.0.4(rollup@4.34.8) + '@swc/core': + specifier: 1.10.18 + version: 1.10.18 + '@types/fs-extra': + specifier: 11.0.4 + version: 11.0.4 + '@types/jquery': + specifier: 3.5.32 + version: 3.5.32 + '@types/node': + specifier: 18.19.76 + version: 18.19.76 + conventional-changelog-cli: + specifier: 5.0.0 + version: 5.0.0(conventional-commits-filter@5.0.0) + conventional-changelog-conventionalcommits: + specifier: 8.0.0 + version: 8.0.0 + eslint: + specifier: 9.21.0 + version: 9.21.0(jiti@2.4.2) + eslint-config-prettier: + specifier: 10.0.1 + version: 10.0.1(eslint@9.21.0(jiti@2.4.2)) + fs-extra: + specifier: 11.3.0 + version: 11.3.0 + globals: + specifier: 16.0.0 + version: 16.0.0 + handlebars: + specifier: 4.7.8 + version: 4.7.8 + npm-run-all: + specifier: 4.1.5 + version: 4.1.5 + prettier: + specifier: 3.5.2 + version: 3.5.2 + rimraf: + specifier: 6.0.1 + version: 6.0.1 + rollup: + specifier: 4.34.8 + version: 4.34.8 + rollup-plugin-styler: + specifier: 2.0.0 + version: 2.0.0(rollup@4.34.8)(typescript@5.7.3) + rollup-plugin-swc3: + specifier: 0.12.1 + version: 0.12.1(@swc/core@1.10.18)(rollup@4.34.8) + sass: + specifier: 1.85.0 + version: 1.85.0 + semver: + specifier: 7.7.1 + version: 7.7.1 + tslib: + specifier: 2.8.1 + version: 2.8.1 + typescript: + specifier: 5.7.3 + version: 5.7.3 + typescript-eslint: + specifier: 8.24.1 + version: 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + vite: + specifier: 6.1.1 + version: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + vitest: + specifier: 3.0.6 + version: 3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + yargs: + specifier: 17.7.2 + version: 17.7.2 + +packages: + + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@commitlint/cli@19.7.1': + resolution: {integrity: sha512-iObGjR1tE/PfDtDTEfd+tnRkB3/HJzpQqRTyofS2MPPkDn1mp3DBC8SoPDayokfAy+xKhF8+bwRCJO25Nea0YQ==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@19.7.1': + resolution: {integrity: sha512-fsEIF8zgiI/FIWSnykdQNj/0JE4av08MudLTyYHm4FlLWemKoQvPNUYU2M/3tktWcCEyq7aOkDDgtjrmgWFbvg==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@19.5.0': + resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==} + engines: {node: '>=v18'} + + '@commitlint/ensure@19.5.0': + resolution: {integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@19.5.0': + resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==} + engines: {node: '>=v18'} + + '@commitlint/format@19.5.0': + resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@19.7.1': + resolution: {integrity: sha512-3IaOc6HVg2hAoGleRK3r9vL9zZ3XY0rf1RsUf6jdQLuaD46ZHnXBiOPTyQ004C4IvYjSWqJwlh0/u2P73aIE3g==} + engines: {node: '>=v18'} + + '@commitlint/lint@19.7.1': + resolution: {integrity: sha512-LhcPfVjcOcOZA7LEuBBeO00o3MeZa+tWrX9Xyl1r9PMd5FWsEoZI9IgnGqTKZ0lZt5pO3ZlstgnRyY1CJJc9Xg==} + engines: {node: '>=v18'} + + '@commitlint/load@19.6.1': + resolution: {integrity: sha512-kE4mRKWWNju2QpsCWt428XBvUH55OET2N4QKQ0bF85qS/XbsRGG1MiTByDNlEVpEPceMkDr46LNH95DtRwcsfA==} + engines: {node: '>=v18'} + + '@commitlint/message@19.5.0': + resolution: {integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==} + engines: {node: '>=v18'} + + '@commitlint/parse@19.5.0': + resolution: {integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==} + engines: {node: '>=v18'} + + '@commitlint/read@19.5.0': + resolution: {integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@19.5.0': + resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==} + engines: {node: '>=v18'} + + '@commitlint/rules@19.6.0': + resolution: {integrity: sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@19.5.0': + resolution: {integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==} + engines: {node: '>=v18'} + + '@commitlint/top-level@19.5.0': + resolution: {integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==} + engines: {node: '>=v18'} + + '@commitlint/types@19.5.0': + resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} + engines: {node: '>=v18'} + + '@conventional-changelog/git-client@1.0.1': + resolution: {integrity: sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==} + engines: {node: '>=18'} + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.0.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + + '@dual-bundle/import-meta-resolve@4.1.0': + resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + + '@esbuild/aix-ppc64@0.24.2': + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.24.2': + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.24.2': + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.24.2': + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.24.2': + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.24.2': + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.24.2': + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.24.2': + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.24.2': + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.24.2': + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.24.2': + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.24.2': + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.24.2': + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.24.2': + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.24.2': + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.24.2': + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.24.2': + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.24.2': + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.24.2': + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.24.2': + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.2': + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.24.2': + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.24.2': + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.24.2': + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.24.2': + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.19.2': + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.0': + resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.21.0': + resolution: {integrity: sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.7': + resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@fastify/deepmerge@2.0.0': + resolution: {integrity: sha512-fsaybTGDyQ5KpPsplQqb9yKdCf2x/pbNpMNk8Tvp3rRz7lVcupKysH4b2ELMN2P4Hak1+UqTYdTj/u4FNV2p0g==} + + '@foundryvtt/foundryvtt-cli@1.0.4': + resolution: {integrity: sha512-iEdNP3JbGwGQ0ZgawLFNCXvcSmSl2Xv/NjY2Fj35i+m0JYi1er9qfJl/hhECIEsrXG27tboEqbFXqFLMgXM4kg==} + engines: {node: '>17.0.0'} + hasBin: true + + '@guanghechen/chalk.types@1.0.3': + resolution: {integrity: sha512-Li14uVSkz4ZopzkANVZIZRCXHZdsfqZJ1loQli6Evme333Fp2e7Eo+ZTelgDVvyvfHMBh9pJixak4y+taBOnmg==} + + '@guanghechen/chalk@1.0.3': + resolution: {integrity: sha512-hTqwg1TioJdx8RfZI8e/V50oy3VaLWzwRUVJPZlNxbDlHVrPoAwH5b60P/Gr1rwMjfQESeVBiykepR7JkHeexg==} + + '@guanghechen/globby@1.0.2': + resolution: {integrity: sha512-lNj4TEIDxhkATP1COH8cyZfnfDteZ5Mk2jPg46mc3AblD0OQ5ihePOLYryOufENjaH7r2kLaGazeBAXyRJJGbQ==} + engines: {node: '>= 18.0.0'} + + '@guanghechen/rollup-plugin-copy@6.0.4': + resolution: {integrity: sha512-ytnHdaUAs3en3id8CZ/g1NEvtmlXUGEU1py3N8bR/vFKlZEFTcvh5VpuFUGalqJP+FWKy/g6xyPT4OBnLHHw1A==} + engines: {node: '>= 18.0.0'} + peerDependencies: + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 + + '@guanghechen/std@1.0.4': + resolution: {integrity: sha512-jjFX1ud5AULLaF6koHuiIHZQMgGkwKi22D6LzkIea05zZ/I7MmR+HRzQ4+XkfcY2YvHbt9zMGyhBqJrQaiPi+w==} + engines: {node: '>= 18.0.0'} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + + '@hutson/parse-repository-url@5.0.0': + resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} + engines: {node: '>=10.13.0'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@parcel/watcher-android-arm64@2.4.1': + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.4.1': + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.4.1': + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.4.1': + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.4.1': + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.4.1': + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@rollup/pluginutils@5.1.2': + resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.34.8': + resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.34.8': + resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.34.8': + resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.34.8': + resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.34.8': + resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.34.8': + resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': + resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.34.8': + resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.34.8': + resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.34.8': + resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': + resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': + resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.34.8': + resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.34.8': + resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.34.8': + resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.34.8': + resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.34.8': + resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.34.8': + resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.34.8': + resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} + cpu: [x64] + os: [win32] + + '@seald-io/binary-search-tree@1.0.3': + resolution: {integrity: sha512-qv3jnwoakeax2razYaMsGI/luWdliBLHTdC6jU55hQt1hcFqzauH/HsBollQ7IR4ySTtYhT+xyHoijpA16C+tA==} + + '@seald-io/nedb@4.0.4': + resolution: {integrity: sha512-CUNcMio7QUHTA+sIJ/DC5JzVNNsHe743TPmC4H5Gij9zDLMbmrCT2li3eVB72/gF63BPS8pWEZrjlAMRKA8FDw==} + + '@swc/core-darwin-arm64@1.10.18': + resolution: {integrity: sha512-FdGqzAIKVQJu8ROlnHElP59XAUsUzCFSNsou+tY/9ba+lhu8R9v0OI5wXiPErrKGZpQFMmx/BPqqhx3X4SuGNg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.10.18': + resolution: {integrity: sha512-RZ73gZRituL/ZVLgrW6BYnQ5g8tuStG4cLUiPGJsUZpUm0ullSH6lHFvZTCBNFTfpQChG6eEhi2IdG6DwFp1lw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.10.18': + resolution: {integrity: sha512-8iJqI3EkxJuuq21UHoen1VS+QlS23RvynRuk95K+Q2HBjygetztCGGEc+Xelx9a0uPkDaaAtFvds4JMDqb9SAA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.10.18': + resolution: {integrity: sha512-8f1kSktWzMB6PG+r8lOlCfXz5E8Qhsmfwonn77T/OfjvGwQaWrcoASh2cdjpk3dydbf8jsKGPQE1lSc7GyjXRQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.10.18': + resolution: {integrity: sha512-4rv+E4VLdgQw6zjbTAauCAEExxChvxMpBUMCiZweTNPKbJJ2dY6BX2WGJ1ea8+RcgqR/Xysj3AFbOz1LBz6dGA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.10.18': + resolution: {integrity: sha512-vTNmyRBVP+sZca+vtwygYPGTNudTU6Gl6XhaZZ7cEUTBr8xvSTgEmYXoK/2uzyXpaTUI4Bmtp1x81cGN0mMoLQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.10.18': + resolution: {integrity: sha512-1TZPReKhFCeX776XaT6wegknfg+g3zODve+r4oslFHI+g7cInfWlxoGNDS3niPKyuafgCdOjme2g3OF+zzxfsQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.10.18': + resolution: {integrity: sha512-o/2CsaWSN3bkzVQ6DA+BiFKSVEYvhWGA1h+wnL2zWmIDs2Knag54sOEXZkCaf8YQyZesGeXJtPEy9hh/vjJgkA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.10.18': + resolution: {integrity: sha512-eTPASeJtk4mJDfWiYEiOC6OYUi/N7meHbNHcU8e+aKABonhXrIo/FmnTE8vsUtC6+jakT1TQBdiQ8fzJ1kJVwA==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.10.18': + resolution: {integrity: sha512-1Dud8CDBnc34wkBOboFBQud9YlV1bcIQtKSg7zC8LtwR3h+XAaCayZPkpGmmAlCv1DLQPvkF+s0JcaVC9mfffQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.10.18': + resolution: {integrity: sha512-IUWKD6uQYGRy8w2X9EZrtYg1O3SCijlHbCXzMaHQYc1X7yjijQh4H3IVL9ssZZyVp2ZDfQZu4bD5DWxxvpyjvg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.17': + resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@types/conventional-commits-parser@5.0.0': + resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/fs-extra@11.0.4': + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + + '@types/jquery@3.5.32': + resolution: {integrity: sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/jsonfile@6.1.1': + resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} + + '@types/node@18.19.76': + resolution: {integrity: sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/sizzle@2.3.3': + resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} + + '@typescript-eslint/eslint-plugin@8.24.1': + resolution: {integrity: sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/parser@8.24.1': + resolution: {integrity: sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/scope-manager@8.24.1': + resolution: {integrity: sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.24.1': + resolution: {integrity: sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/types@8.24.1': + resolution: {integrity: sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.24.1': + resolution: {integrity: sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/utils@8.24.1': + resolution: {integrity: sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/visitor-keys@8.24.1': + resolution: {integrity: sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitest/expect@3.0.6': + resolution: {integrity: sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==} + + '@vitest/mocker@3.0.6': + resolution: {integrity: sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.0.6': + resolution: {integrity: sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==} + + '@vitest/runner@3.0.6': + resolution: {integrity: sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==} + + '@vitest/snapshot@3.0.6': + resolution: {integrity: sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==} + + '@vitest/spy@3.0.6': + resolution: {integrity: sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==} + + '@vitest/utils@3.0.6': + resolution: {integrity: sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + abstract-level@1.0.3: + resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==} + engines: {node: '>=12'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + add-stream@1.0.0: + resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + + caniuse-lite@1.0.30001469: + resolution: {integrity: sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==} + + caniuse-lite@1.0.30001699: + resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==} + + catering@2.1.1: + resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} + engines: {node: '>=6'} + + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + classic-level@1.4.1: + resolution: {integrity: sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==} + engines: {node: '>=12'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + + conventional-changelog-angular@8.0.0: + resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} + engines: {node: '>=18'} + + conventional-changelog-atom@5.0.0: + resolution: {integrity: sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==} + engines: {node: '>=18'} + + conventional-changelog-cli@5.0.0: + resolution: {integrity: sha512-9Y8fucJe18/6ef6ZlyIlT2YQUbczvoQZZuYmDLaGvcSBP+M6h+LAvf7ON7waRxKJemcCII8Yqu5/8HEfskTxJQ==} + engines: {node: '>=18'} + hasBin: true + + conventional-changelog-codemirror@5.0.0: + resolution: {integrity: sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ==} + engines: {node: '>=18'} + + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + + conventional-changelog-conventionalcommits@8.0.0: + resolution: {integrity: sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==} + engines: {node: '>=18'} + + conventional-changelog-core@8.0.0: + resolution: {integrity: sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw==} + engines: {node: '>=18'} + + conventional-changelog-ember@5.0.0: + resolution: {integrity: sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==} + engines: {node: '>=18'} + + conventional-changelog-eslint@6.0.0: + resolution: {integrity: sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==} + engines: {node: '>=18'} + + conventional-changelog-express@5.0.0: + resolution: {integrity: sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==} + engines: {node: '>=18'} + + conventional-changelog-jquery@6.0.0: + resolution: {integrity: sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA==} + engines: {node: '>=18'} + + conventional-changelog-jshint@5.0.0: + resolution: {integrity: sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==} + engines: {node: '>=18'} + + conventional-changelog-preset-loader@5.0.0: + resolution: {integrity: sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==} + engines: {node: '>=18'} + + conventional-changelog-writer@8.0.0: + resolution: {integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==} + engines: {node: '>=18'} + hasBin: true + + conventional-changelog@6.0.0: + resolution: {integrity: sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==} + engines: {node: '>=18'} + + conventional-commits-filter@5.0.0: + resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} + engines: {node: '>=18'} + + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + + conventional-commits-parser@6.0.0: + resolution: {integrity: sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==} + engines: {node: '>=18'} + hasBin: true + + cosmiconfig-typescript-loader@6.1.0: + resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-declaration-sorter@7.2.0: + resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-default@7.0.6: + resolution: {integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano-utils@5.0.0: + resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano@7.0.6: + resolution: {integrity: sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-uri-component@0.4.1: + resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==} + engines: {node: '>=14.16'} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.101: + resolution: {integrity: sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@10.0.1: + resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.21.0: + resolution: {integrity: sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@5.1.0: + resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} + engines: {node: '>=14.16'} + + find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + + get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + + git-raw-commits@5.0.0: + resolution: {integrity: sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==} + engines: {node: '>=18'} + hasBin: true + + git-semver-tags@8.0.0: + resolution: {integrity: sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==} + engines: {node: '>=18'} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.0.0: + resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} + engines: {node: '>=18'} + + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + + has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + + has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@7.0.0: + resolution: {integrity: sha512-ICclEpTLhHj+zCuSb2/usoNXSVkxUSIopre+b1w8NDY9Dntp9LO4vLdHYI336TH8sAqwrRgnSfdkBG2/YpisHA==} + engines: {node: ^16.14.0 || >=18.0.0} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + ignore@7.0.3: + resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} + engines: {node: '>= 4'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + immutable@5.0.3: + resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + index-to-position@0.1.2: + resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} + engines: {node: '>=18'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + + is-typed-array@1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@4.0.1: + resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} + engines: {node: 20 || >=22} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + level-supports@4.0.1: + resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==} + engines: {node: '>=12'} + + level-transcoder@1.0.1: + resolution: {integrity: sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==} + engines: {node: '>=12'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + + lru-cache@10.0.1: + resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} + engines: {node: 14 || >=16.14} + + lru-cache@11.0.0: + resolution: {integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==} + engines: {node: 20 || >=22} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + meow@12.1.0: + resolution: {integrity: sha512-SvSqzS5ktjGoySdCwxQI16iO/ID1LtxM03QvJ4FF2H5cCtXLN7YbfKBCL9btqXSSuJ5TNG4UH6wvWtXZuvgvrw==} + engines: {node: '>=16.10'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + module-error@1.0.2: + resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-macros@2.2.2: + resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + nedb-promises@6.2.3: + resolution: {integrity: sha512-enq0IjNyBz9Qy9W/QPCcLGh/QORGBjXbIeZeWvIjO3OMLyAvlKT3hiJubP2BKEiFniUlR3L01o18ktqgn5jxqA==} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-gyp-build@4.6.0: + resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} + hasBin: true + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@6.0.0: + resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + engines: {node: ^16.14.0 || >=18.0.0} + + npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-queue@8.1.0: + resolution: {integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==} + engines: {node: '>=18'} + + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-json@8.1.0: + resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} + engines: {node: '>=18'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + postcss-calc@10.1.1: + resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} + engines: {node: ^18.12 || ^20.9 || >=22.0} + peerDependencies: + postcss: ^8.4.38 + + postcss-colormin@7.0.2: + resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-convert-values@7.0.4: + resolution: {integrity: sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-comments@7.0.3: + resolution: {integrity: sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-duplicates@7.0.1: + resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-empty@7.0.0: + resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-overridden@7.0.0: + resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-longhand@7.0.4: + resolution: {integrity: sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-rules@7.0.4: + resolution: {integrity: sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-font-values@7.0.0: + resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-gradients@7.0.0: + resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-params@7.0.2: + resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-selectors@7.0.4: + resolution: {integrity: sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-modules-extract-imports@3.0.0: + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.0.0: + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-normalize-charset@7.0.0: + resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-display-values@7.0.0: + resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-positions@7.0.0: + resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-repeat-style@7.0.0: + resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-string@7.0.0: + resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-timing-functions@7.0.0: + resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-unicode@7.0.2: + resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-url@7.0.0: + resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-whitespace@7.0.0: + resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-ordered-values@7.0.1: + resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-initial@7.0.2: + resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-transforms@7.0.0: + resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-selector-parser@6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-svgo@7.0.1: + resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} + engines: {node: ^18.12.0 || ^20.9.0 || >= 18} + peerDependencies: + postcss: ^8.4.31 + + postcss-unique-selectors@7.0.3: + resolution: {integrity: sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.2: + resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.5.2: + resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==} + engines: {node: '>=14'} + hasBin: true + + punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + query-string@9.1.1: + resolution: {integrity: sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg==} + engines: {node: '>=18'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + + readdirp@4.0.1: + resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} + engines: {node: '>= 14.16.0'} + + regexp.prototype.flags@1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + + resolve@1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true + + rollup-plugin-styler@2.0.0: + resolution: {integrity: sha512-u96KK3hfA5RDeZFuE1kW0mu7FKS6sDu0RlGx9vijqQbzlmrzkhkBtge5gXZ6wF0CnTgcn7CfkwKOwIcWVZU/VQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + rollup: ^2.63.0 || ^3.0.0 || ^4.0.0 + + rollup-plugin-swc3@0.12.1: + resolution: {integrity: sha512-iNV1T432XvyejZ19/41C2gLbXxEOiiJynPPAFF0WzwwFT5FHx7SstAp0yjJRLyrbZjfIhoWJVl3hX3c3Stv/GQ==} + engines: {node: '>=16'} + peerDependencies: + '@swc/core': '>=1.2.165' + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 + + rollup-preserve-directives@1.1.2: + resolution: {integrity: sha512-OOaYh4zO0Dcd/eVWGB8H69CgTiohl+jJqc2TLtjLENVIQaV2rxO3OW6RILzCQOdDvPT+/rzwRp+97OXhem895Q==} + peerDependencies: + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 + + rollup@4.34.8: + resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + + sass@1.85.0: + resolution: {integrity: sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==} + engines: {node: '>=14.0.0'} + hasBin: true + + semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.0: + resolution: {integrity: sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==} + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + + split-on-first@3.0.0: + resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} + engines: {node: '>=12'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.padend@3.1.4: + resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + + string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.0.1: + resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + stylehacks@7.0.4: + resolution: {integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + + temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + + tempfile@5.0.0: + resolution: {integrity: sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==} + engines: {node: '>=14.18'} + + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@4.20.0: + resolution: {integrity: sha512-MBh+PHUHHisjXf4tlx0CFWoMdjx8zCMLJHOjnV1prABYZFHqtFOyauCIK2/7w4oIfwkF8iNhLtnJEfVY2vn3iw==} + engines: {node: '>=16'} + + typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + + typescript-eslint@8.24.1: + resolution: {integrity: sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + engines: {node: '>=14.17'} + hasBin: true + + uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + + update-browserslist-db@1.1.2: + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vite-node@3.0.6: + resolution: {integrity: sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@6.1.1: + resolution: {integrity: sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.0.6: + resolution: {integrity: sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.0.6 + '@vitest/ui': 3.0.6 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-typed-array@1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + +snapshots: + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.1.1 + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@commitlint/cli@19.7.1(@types/node@18.19.76)(typescript@5.7.3)': + dependencies: + '@commitlint/format': 19.5.0 + '@commitlint/lint': 19.7.1 + '@commitlint/load': 19.6.1(@types/node@18.19.76)(typescript@5.7.3) + '@commitlint/read': 19.5.0 + '@commitlint/types': 19.5.0 + tinyexec: 0.3.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@19.7.1': + dependencies: + '@commitlint/types': 19.5.0 + conventional-changelog-conventionalcommits: 7.0.2 + + '@commitlint/config-validator@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + ajv: 8.12.0 + + '@commitlint/ensure@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@19.5.0': {} + + '@commitlint/format@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + chalk: 5.3.0 + + '@commitlint/is-ignored@19.7.1': + dependencies: + '@commitlint/types': 19.5.0 + semver: 7.7.1 + + '@commitlint/lint@19.7.1': + dependencies: + '@commitlint/is-ignored': 19.7.1 + '@commitlint/parse': 19.5.0 + '@commitlint/rules': 19.6.0 + '@commitlint/types': 19.5.0 + + '@commitlint/load@19.6.1(@types/node@18.19.76)(typescript@5.7.3)': + dependencies: + '@commitlint/config-validator': 19.5.0 + '@commitlint/execute-rule': 19.5.0 + '@commitlint/resolve-extends': 19.5.0 + '@commitlint/types': 19.5.0 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.7.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@18.19.76)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@19.5.0': {} + + '@commitlint/parse@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + + '@commitlint/read@19.5.0': + dependencies: + '@commitlint/top-level': 19.5.0 + '@commitlint/types': 19.5.0 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + tinyexec: 0.3.2 + + '@commitlint/resolve-extends@19.5.0': + dependencies: + '@commitlint/config-validator': 19.5.0 + '@commitlint/types': 19.5.0 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@19.6.0': + dependencies: + '@commitlint/ensure': 19.5.0 + '@commitlint/message': 19.5.0 + '@commitlint/to-lines': 19.5.0 + '@commitlint/types': 19.5.0 + + '@commitlint/to-lines@19.5.0': {} + + '@commitlint/top-level@19.5.0': + dependencies: + find-up: 7.0.0 + + '@commitlint/types@19.5.0': + dependencies: + '@types/conventional-commits-parser': 5.0.0 + chalk: 5.3.0 + + '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)': + dependencies: + '@types/semver': 7.5.8 + semver: 7.7.1 + optionalDependencies: + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.0.0 + + '@dual-bundle/import-meta-resolve@4.1.0': {} + + '@esbuild/aix-ppc64@0.24.2': + optional: true + + '@esbuild/android-arm64@0.24.2': + optional: true + + '@esbuild/android-arm@0.24.2': + optional: true + + '@esbuild/android-x64@0.24.2': + optional: true + + '@esbuild/darwin-arm64@0.24.2': + optional: true + + '@esbuild/darwin-x64@0.24.2': + optional: true + + '@esbuild/freebsd-arm64@0.24.2': + optional: true + + '@esbuild/freebsd-x64@0.24.2': + optional: true + + '@esbuild/linux-arm64@0.24.2': + optional: true + + '@esbuild/linux-arm@0.24.2': + optional: true + + '@esbuild/linux-ia32@0.24.2': + optional: true + + '@esbuild/linux-loong64@0.24.2': + optional: true + + '@esbuild/linux-mips64el@0.24.2': + optional: true + + '@esbuild/linux-ppc64@0.24.2': + optional: true + + '@esbuild/linux-riscv64@0.24.2': + optional: true + + '@esbuild/linux-s390x@0.24.2': + optional: true + + '@esbuild/linux-x64@0.24.2': + optional: true + + '@esbuild/netbsd-arm64@0.24.2': + optional: true + + '@esbuild/netbsd-x64@0.24.2': + optional: true + + '@esbuild/openbsd-arm64@0.24.2': + optional: true + + '@esbuild/openbsd-x64@0.24.2': + optional: true + + '@esbuild/sunos-x64@0.24.2': + optional: true + + '@esbuild/win32-arm64@0.24.2': + optional: true + + '@esbuild/win32-ia32@0.24.2': + optional: true + + '@esbuild/win32-x64@0.24.2': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.21.0(jiti@2.4.2))': + dependencies: + eslint: 9.21.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.19.2': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.12.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.0': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.21.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.7': + dependencies: + '@eslint/core': 0.12.0 + levn: 0.4.1 + + '@fastify/deepmerge@2.0.0': {} + + '@foundryvtt/foundryvtt-cli@1.0.4': + dependencies: + chalk: 5.4.1 + classic-level: 1.4.1 + esm: 3.2.25 + js-yaml: 4.1.0 + mkdirp: 3.0.1 + nedb-promises: 6.2.3 + yargs: 17.7.2 + + '@guanghechen/chalk.types@1.0.3': {} + + '@guanghechen/chalk@1.0.3': + dependencies: + '@guanghechen/chalk.types': 1.0.3 + + '@guanghechen/globby@1.0.2': + dependencies: + fast-glob: 3.3.3 + ignore: 7.0.3 + + '@guanghechen/rollup-plugin-copy@6.0.4(rollup@4.34.8)': + dependencies: + '@guanghechen/chalk': 1.0.3 + '@guanghechen/globby': 1.0.2 + '@guanghechen/std': 1.0.4 + chokidar: 4.0.3 + dir-glob: 3.0.1 + micromatch: 4.0.8 + rollup: 4.34.8 + + '@guanghechen/std@1.0.4': {} + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + + '@hutson/parse-repository-url@5.0.0': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.0.1 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + '@parcel/watcher-android-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-x64@2.4.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.4.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.4.1': + optional: true + + '@parcel/watcher-win32-arm64@2.4.1': + optional: true + + '@parcel/watcher-win32-ia32@2.4.1': + optional: true + + '@parcel/watcher-win32-x64@2.4.1': + optional: true + + '@parcel/watcher@2.4.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 + optional: true + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@rollup/pluginutils@5.1.2(rollup@4.34.8)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.34.8 + + '@rollup/rollup-android-arm-eabi@4.34.8': + optional: true + + '@rollup/rollup-android-arm64@4.34.8': + optional: true + + '@rollup/rollup-darwin-arm64@4.34.8': + optional: true + + '@rollup/rollup-darwin-x64@4.34.8': + optional: true + + '@rollup/rollup-freebsd-arm64@4.34.8': + optional: true + + '@rollup/rollup-freebsd-x64@4.34.8': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.34.8': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.34.8': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-x64-musl@4.34.8': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.34.8': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.34.8': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.34.8': + optional: true + + '@seald-io/binary-search-tree@1.0.3': {} + + '@seald-io/nedb@4.0.4': + dependencies: + '@seald-io/binary-search-tree': 1.0.3 + localforage: 1.10.0 + util: 0.12.5 + + '@swc/core-darwin-arm64@1.10.18': + optional: true + + '@swc/core-darwin-x64@1.10.18': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.10.18': + optional: true + + '@swc/core-linux-arm64-gnu@1.10.18': + optional: true + + '@swc/core-linux-arm64-musl@1.10.18': + optional: true + + '@swc/core-linux-x64-gnu@1.10.18': + optional: true + + '@swc/core-linux-x64-musl@1.10.18': + optional: true + + '@swc/core-win32-arm64-msvc@1.10.18': + optional: true + + '@swc/core-win32-ia32-msvc@1.10.18': + optional: true + + '@swc/core-win32-x64-msvc@1.10.18': + optional: true + + '@swc/core@1.10.18': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.17 + optionalDependencies: + '@swc/core-darwin-arm64': 1.10.18 + '@swc/core-darwin-x64': 1.10.18 + '@swc/core-linux-arm-gnueabihf': 1.10.18 + '@swc/core-linux-arm64-gnu': 1.10.18 + '@swc/core-linux-arm64-musl': 1.10.18 + '@swc/core-linux-x64-gnu': 1.10.18 + '@swc/core-linux-x64-musl': 1.10.18 + '@swc/core-win32-arm64-msvc': 1.10.18 + '@swc/core-win32-ia32-msvc': 1.10.18 + '@swc/core-win32-x64-msvc': 1.10.18 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.17': + dependencies: + '@swc/counter': 0.1.3 + + '@trysound/sax@0.2.0': {} + + '@types/conventional-commits-parser@5.0.0': + dependencies: + '@types/node': 18.19.76 + + '@types/estree@1.0.6': {} + + '@types/fs-extra@11.0.4': + dependencies: + '@types/jsonfile': 6.1.1 + '@types/node': 18.19.76 + + '@types/jquery@3.5.32': + dependencies: + '@types/sizzle': 2.3.3 + + '@types/json-schema@7.0.15': {} + + '@types/jsonfile@6.1.1': + dependencies: + '@types/node': 18.19.76 + + '@types/node@18.19.76': + dependencies: + undici-types: 5.26.5 + + '@types/normalize-package-data@2.4.4': {} + + '@types/semver@7.5.8': {} + + '@types/sizzle@2.3.3': {} + + '@typescript-eslint/eslint-plugin@8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.1 + '@typescript-eslint/type-utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.24.1 + eslint: 9.21.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.24.1 + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.24.1 + debug: 4.4.0 + eslint: 9.21.0(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.24.1': + dependencies: + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/visitor-keys': 8.24.1 + + '@typescript-eslint/type-utils@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + debug: 4.4.0 + eslint: 9.21.0(jiti@2.4.2) + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.24.1': {} + + '@typescript-eslint/typescript-estree@8.24.1(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/visitor-keys': 8.24.1 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.7.1 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.21.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.24.1 + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) + eslint: 9.21.0(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.24.1': + dependencies: + '@typescript-eslint/types': 8.24.1 + eslint-visitor-keys: 4.2.0 + + '@vitest/expect@3.0.6': + dependencies: + '@vitest/spy': 3.0.6 + '@vitest/utils': 3.0.6 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.0.6(vite@6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0))': + dependencies: + '@vitest/spy': 3.0.6 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + + '@vitest/pretty-format@3.0.6': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.0.6': + dependencies: + '@vitest/utils': 3.0.6 + pathe: 2.0.3 + + '@vitest/snapshot@3.0.6': + dependencies: + '@vitest/pretty-format': 3.0.6 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.0.6': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.0.6': + dependencies: + '@vitest/pretty-format': 3.0.6 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + abstract-level@1.0.3: + dependencies: + buffer: 6.0.3 + catering: 2.1.1 + is-buffer: 2.0.5 + level-supports: 4.0.1 + level-transcoder: 1.0.1 + module-error: 1.0.2 + queue-microtask: 1.2.3 + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + add-stream@1.0.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.12.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + argparse@2.0.1: {} + + array-buffer-byte-length@1.0.0: + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + + array-ify@1.0.0: {} + + assertion-error@2.0.1: {} + + available-typed-arrays@1.0.5: {} + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001699 + electron-to-chromium: 1.5.101 + node-releases: 2.0.19 + update-browserslist-db: 1.1.2(browserslist@4.24.4) + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + cac@6.7.14: {} + + call-bind@1.0.2: + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.0 + + callsites@3.1.0: {} + + caniuse-api@3.0.0: + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001469 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + caniuse-lite@1.0.30001469: {} + + caniuse-lite@1.0.30001699: {} + + catering@2.1.1: {} + + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + chalk@5.4.1: {} + + check-error@2.1.1: {} + + chokidar@4.0.3: + dependencies: + readdirp: 4.0.1 + + classic-level@1.4.1: + dependencies: + abstract-level: 1.0.3 + catering: 2.1.1 + module-error: 1.0.2 + napi-macros: 2.2.2 + node-gyp-build: 4.6.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colord@2.9.3: {} + + commander@7.2.0: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + concat-map@0.0.1: {} + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-angular@8.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-atom@5.0.0: {} + + conventional-changelog-cli@5.0.0(conventional-commits-filter@5.0.0): + dependencies: + add-stream: 1.0.0 + conventional-changelog: 6.0.0(conventional-commits-filter@5.0.0) + meow: 13.2.0 + tempfile: 5.0.0 + transitivePeerDependencies: + - conventional-commits-filter + + conventional-changelog-codemirror@5.0.0: {} + + conventional-changelog-conventionalcommits@7.0.2: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@8.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-core@8.0.0(conventional-commits-filter@5.0.0): + dependencies: + '@hutson/parse-repository-url': 5.0.0 + add-stream: 1.0.0 + conventional-changelog-writer: 8.0.0 + conventional-commits-parser: 6.0.0 + git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + git-semver-tags: 8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + hosted-git-info: 7.0.0 + normalize-package-data: 6.0.0 + read-package-up: 11.0.0 + read-pkg: 9.0.1 + transitivePeerDependencies: + - conventional-commits-filter + + conventional-changelog-ember@5.0.0: {} + + conventional-changelog-eslint@6.0.0: {} + + conventional-changelog-express@5.0.0: {} + + conventional-changelog-jquery@6.0.0: {} + + conventional-changelog-jshint@5.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-preset-loader@5.0.0: {} + + conventional-changelog-writer@8.0.0: + dependencies: + '@types/semver': 7.5.8 + conventional-commits-filter: 5.0.0 + handlebars: 4.7.8 + meow: 13.2.0 + semver: 7.7.1 + + conventional-changelog@6.0.0(conventional-commits-filter@5.0.0): + dependencies: + conventional-changelog-angular: 8.0.0 + conventional-changelog-atom: 5.0.0 + conventional-changelog-codemirror: 5.0.0 + conventional-changelog-conventionalcommits: 8.0.0 + conventional-changelog-core: 8.0.0(conventional-commits-filter@5.0.0) + conventional-changelog-ember: 5.0.0 + conventional-changelog-eslint: 6.0.0 + conventional-changelog-express: 5.0.0 + conventional-changelog-jquery: 6.0.0 + conventional-changelog-jshint: 5.0.0 + conventional-changelog-preset-loader: 5.0.0 + transitivePeerDependencies: + - conventional-commits-filter + + conventional-commits-filter@5.0.0: {} + + conventional-commits-parser@5.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.0 + split2: 4.2.0 + + conventional-commits-parser@6.0.0: + dependencies: + meow: 13.2.0 + + cosmiconfig-typescript-loader@6.1.0(@types/node@18.19.76)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): + dependencies: + '@types/node': 18.19.76 + cosmiconfig: 9.0.0(typescript@5.7.3) + jiti: 2.4.2 + typescript: 5.7.3 + + cosmiconfig@8.3.6(typescript@5.7.3): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.7.3 + + cosmiconfig@9.0.0(typescript@5.7.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.7.3 + + cross-spawn@6.0.5: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-declaration-sorter@7.2.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + cssnano-preset-default@7.0.6(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + css-declaration-sorter: 7.2.0(postcss@8.5.2) + cssnano-utils: 5.0.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-calc: 10.1.1(postcss@8.5.2) + postcss-colormin: 7.0.2(postcss@8.5.2) + postcss-convert-values: 7.0.4(postcss@8.5.2) + postcss-discard-comments: 7.0.3(postcss@8.5.2) + postcss-discard-duplicates: 7.0.1(postcss@8.5.2) + postcss-discard-empty: 7.0.0(postcss@8.5.2) + postcss-discard-overridden: 7.0.0(postcss@8.5.2) + postcss-merge-longhand: 7.0.4(postcss@8.5.2) + postcss-merge-rules: 7.0.4(postcss@8.5.2) + postcss-minify-font-values: 7.0.0(postcss@8.5.2) + postcss-minify-gradients: 7.0.0(postcss@8.5.2) + postcss-minify-params: 7.0.2(postcss@8.5.2) + postcss-minify-selectors: 7.0.4(postcss@8.5.2) + postcss-normalize-charset: 7.0.0(postcss@8.5.2) + postcss-normalize-display-values: 7.0.0(postcss@8.5.2) + postcss-normalize-positions: 7.0.0(postcss@8.5.2) + postcss-normalize-repeat-style: 7.0.0(postcss@8.5.2) + postcss-normalize-string: 7.0.0(postcss@8.5.2) + postcss-normalize-timing-functions: 7.0.0(postcss@8.5.2) + postcss-normalize-unicode: 7.0.2(postcss@8.5.2) + postcss-normalize-url: 7.0.0(postcss@8.5.2) + postcss-normalize-whitespace: 7.0.0(postcss@8.5.2) + postcss-ordered-values: 7.0.1(postcss@8.5.2) + postcss-reduce-initial: 7.0.2(postcss@8.5.2) + postcss-reduce-transforms: 7.0.0(postcss@8.5.2) + postcss-svgo: 7.0.1(postcss@8.5.2) + postcss-unique-selectors: 7.0.3(postcss@8.5.2) + + cssnano-utils@5.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + cssnano@7.0.6(postcss@8.5.2): + dependencies: + cssnano-preset-default: 7.0.6(postcss@8.5.2) + lilconfig: 3.1.3 + postcss: 8.5.2 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + dargs@8.1.0: {} + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decode-uri-component@0.4.1: {} + + deep-eql@5.0.2: {} + + deep-is@0.1.4: {} + + define-properties@1.2.0: + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + + detect-libc@1.0.3: + optional: true + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.101: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.21.2: + dependencies: + array-buffer-byte-length: 1.0.0 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.0 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 + + es-module-lexer@1.6.0: {} + + es-set-tostringtag@2.0.1: + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + has-tostringtag: 1.0.0 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + esbuild@0.24.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 + + escalade@3.1.1: {} + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@10.0.1(eslint@9.21.0(jiti@2.4.2)): + dependencies: + eslint: 9.21.0(jiti@2.4.2) + + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.21.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.21.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.2 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.0 + '@eslint/js': 9.21.0 + '@eslint/plugin-kit': 0.2.7 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + esm@3.2.25: {} + + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + + esquery@1.5.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + eventemitter3@5.0.1: {} + + expect-type@1.1.0: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.15.0: + dependencies: + reusify: 1.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@5.1.0: {} + + find-up-simple@1.0.0: {} + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + + flatted@3.3.2: {} + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.1.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.1: {} + + function-bind@1.1.2: {} + + function.prototype.name@1.1.5: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.2.0: + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + + get-symbol-description@1.0.0: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.0 + split2: 4.2.0 + + git-raw-commits@5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0): + dependencies: + '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + meow: 13.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser + + git-semver-tags@8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0): + dependencies: + '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + meow: 13.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@11.0.0: + dependencies: + foreground-child: 3.1.1 + jackspeak: 4.0.1 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 2.0.0 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + globals@14.0.0: {} + + globals@16.0.0: {} + + globalthis@1.0.3: + dependencies: + define-properties: 1.2.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.0 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.0: + dependencies: + get-intrinsic: 1.2.0 + + has-proto@1.0.1: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.0: + dependencies: + has-symbols: 1.0.3 + + has@1.0.3: + dependencies: + function-bind: 1.1.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hosted-git-info@2.8.9: {} + + hosted-git-info@7.0.0: + dependencies: + lru-cache: 10.0.1 + + icss-utils@5.1.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + ieee754@1.2.1: {} + + ignore@5.3.1: {} + + ignore@7.0.3: {} + + immediate@3.0.6: {} + + immutable@5.0.3: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.1.0: {} + + imurmurhash@0.1.4: {} + + index-to-position@0.1.2: {} + + inherits@2.0.4: {} + + ini@4.1.1: {} + + internal-slot@1.0.5: + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + side-channel: 1.0.4 + + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + is-array-buffer@3.0.2: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-typed-array: 1.1.10 + + is-arrayish@0.2.1: {} + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + is-buffer@2.0.5: {} + + is-callable@1.2.7: {} + + is-core-module@2.11.0: + dependencies: + has: 1.0.3 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.0 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-negative-zero@2.0.2: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.0 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + is-shared-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.2 + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.0 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-text-path@2.0.0: + dependencies: + text-extensions: 2.4.0 + + is-typed-array@1.1.10: + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.2 + + isexe@2.0.0: {} + + jackspeak@4.0.1: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@2.4.2: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + level-supports@4.0.1: {} + + level-transcoder@1.0.1: + dependencies: + buffer: 6.0.3 + module-error: 1.0.2 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lie@3.1.1: + dependencies: + immediate: 3.0.6 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + + localforage@1.10.0: + dependencies: + lie: 3.1.1 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + loupe@3.1.3: {} + + lru-cache@10.0.1: {} + + lru-cache@11.0.0: {} + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + memorystream@0.3.1: {} + + meow@12.1.0: {} + + meow@13.2.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.4: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mkdirp@3.0.1: {} + + module-error@1.0.2: {} + + ms@2.1.3: {} + + nanoid@3.3.8: {} + + napi-macros@2.2.2: {} + + natural-compare@1.4.0: {} + + nedb-promises@6.2.3: + dependencies: + '@seald-io/nedb': 4.0.4 + + neo-async@2.6.2: {} + + nice-try@1.0.5: {} + + node-addon-api@7.1.1: + optional: true + + node-gyp-build@4.6.0: {} + + node-releases@2.0.19: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.1 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + + normalize-package-data@6.0.0: + dependencies: + hosted-git-info: 7.0.0 + is-core-module: 2.11.0 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 + + npm-run-all@4.1.5: + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.0 + string.prototype.padend: 3.1.4 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-inspect@1.12.3: {} + + object-keys@1.1.1: {} + + object.assign@4.1.4: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + optionator@0.9.3: + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.0.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-queue@8.1.0: + dependencies: + eventemitter3: 5.0.1 + p-timeout: 6.1.4 + + p-timeout@6.1.4: {} + + package-json-from-dist@1.0.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-json@8.1.0: + dependencies: + '@babel/code-frame': 7.24.7 + index-to-position: 0.1.2 + type-fest: 4.20.0 + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-key@2.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.0 + minipass: 7.1.2 + + path-type@3.0.0: + dependencies: + pify: 3.0.0 + + path-type@4.0.0: {} + + pathe@2.0.3: {} + + pathval@2.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pidtree@0.3.1: {} + + pify@3.0.0: {} + + postcss-calc@10.1.1(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-colormin@7.0.2(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-convert-values@7.0.4(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@7.0.3(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-selector-parser: 6.1.2 + + postcss-discard-duplicates@7.0.1(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + postcss-discard-empty@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + postcss-discard-overridden@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + postcss-merge-longhand@7.0.4(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + stylehacks: 7.0.4(postcss@8.5.2) + + postcss-merge-rules@7.0.4(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + cssnano-utils: 5.0.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-selector-parser: 6.1.2 + + postcss-minify-font-values@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@7.0.0(postcss@8.5.2): + dependencies: + colord: 2.9.3 + cssnano-utils: 5.0.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-minify-params@7.0.2(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + cssnano-utils: 5.0.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@7.0.4(postcss@8.5.2): + dependencies: + cssesc: 3.0.0 + postcss: 8.5.2 + postcss-selector-parser: 6.1.2 + + postcss-modules-extract-imports@3.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.2): + dependencies: + icss-utils: 5.1.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-selector-parser: 6.0.11 + + postcss-modules-values@4.0.0(postcss@8.5.2): + dependencies: + icss-utils: 5.1.0(postcss@8.5.2) + postcss: 8.5.2 + + postcss-normalize-charset@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + postcss-normalize-display-values@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@7.0.2(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@7.0.1(postcss@8.5.2): + dependencies: + cssnano-utils: 5.0.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@7.0.2(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + postcss: 8.5.2 + + postcss-reduce-transforms@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-selector-parser@6.0.11: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@7.0.1(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + svgo: 3.3.2 + + postcss-unique-selectors@7.0.3(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-selector-parser: 6.1.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.2: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.5.2: {} + + punycode@2.3.0: {} + + query-string@9.1.1: + dependencies: + decode-uri-component: 0.4.1 + filter-obj: 5.1.0 + split-on-first: 3.0.0 + + queue-microtask@1.2.3: {} + + read-package-up@11.0.0: + dependencies: + find-up-simple: 1.0.0 + read-pkg: 9.0.1 + type-fest: 4.20.0 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.0 + parse-json: 8.1.0 + type-fest: 4.20.0 + unicorn-magic: 0.1.0 + + readdirp@4.0.1: {} + + regexp.prototype.flags@1.4.3: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@2.0.3: {} + + resolve@1.22.1: + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.0.4: {} + + rimraf@6.0.1: + dependencies: + glob: 11.0.0 + package-json-from-dist: 1.0.0 + + rollup-plugin-styler@2.0.0(rollup@4.34.8)(typescript@5.7.3): + dependencies: + '@rollup/pluginutils': 5.1.2(rollup@4.34.8) + cosmiconfig: 8.3.6(typescript@5.7.3) + cssnano: 7.0.6(postcss@8.5.2) + fs-extra: 11.3.0 + icss-utils: 5.1.0(postcss@8.5.2) + mime-types: 2.1.35 + p-queue: 8.1.0 + postcss: 8.5.2 + postcss-modules-extract-imports: 3.0.0(postcss@8.5.2) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.2) + postcss-modules-scope: 3.0.0(postcss@8.5.2) + postcss-modules-values: 4.0.0(postcss@8.5.2) + postcss-value-parser: 4.2.0 + query-string: 9.1.1 + resolve: 1.22.10 + resolve.exports: 2.0.3 + rollup: 4.34.8 + source-map-js: 1.2.1 + tslib: 2.8.1 + transitivePeerDependencies: + - typescript + + rollup-plugin-swc3@0.12.1(@swc/core@1.10.18)(rollup@4.34.8): + dependencies: + '@dual-bundle/import-meta-resolve': 4.1.0 + '@fastify/deepmerge': 2.0.0 + '@rollup/pluginutils': 5.1.2(rollup@4.34.8) + '@swc/core': 1.10.18 + get-tsconfig: 4.8.1 + rollup: 4.34.8 + rollup-preserve-directives: 1.1.2(rollup@4.34.8) + + rollup-preserve-directives@1.1.2(rollup@4.34.8): + dependencies: + magic-string: 0.30.17 + rollup: 4.34.8 + + rollup@4.34.8: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.34.8 + '@rollup/rollup-android-arm64': 4.34.8 + '@rollup/rollup-darwin-arm64': 4.34.8 + '@rollup/rollup-darwin-x64': 4.34.8 + '@rollup/rollup-freebsd-arm64': 4.34.8 + '@rollup/rollup-freebsd-x64': 4.34.8 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.8 + '@rollup/rollup-linux-arm-musleabihf': 4.34.8 + '@rollup/rollup-linux-arm64-gnu': 4.34.8 + '@rollup/rollup-linux-arm64-musl': 4.34.8 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.8 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8 + '@rollup/rollup-linux-riscv64-gnu': 4.34.8 + '@rollup/rollup-linux-s390x-gnu': 4.34.8 + '@rollup/rollup-linux-x64-gnu': 4.34.8 + '@rollup/rollup-linux-x64-musl': 4.34.8 + '@rollup/rollup-win32-arm64-msvc': 4.34.8 + '@rollup/rollup-win32-ia32-msvc': 4.34.8 + '@rollup/rollup-win32-x64-msvc': 4.34.8 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-regex-test@1.0.0: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-regex: 1.1.4 + + sass@1.85.0: + dependencies: + chokidar: 4.0.3 + immutable: 5.0.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.4.1 + + semver@5.7.1: {} + + semver@7.7.1: {} + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shell-quote@1.8.0: {} + + side-channel@1.0.4: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + object-inspect: 1.12.3 + + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + + source-map-js@1.2.1: {} + + source-map@0.6.1: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.13 + + spdx-exceptions@2.3.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + + spdx-license-ids@3.0.13: {} + + split-on-first@3.0.0: {} + + split2@4.2.0: {} + + stackback@0.0.2: {} + + std-env@3.8.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.0.1 + + string.prototype.padend@3.1.4: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + + string.prototype.trim@1.2.7: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + + string.prototype.trimend@1.0.6: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + + string.prototype.trimstart@1.0.6: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.0.1: + dependencies: + ansi-regex: 6.0.1 + + strip-bom@3.0.0: {} + + strip-json-comments@3.1.1: {} + + stylehacks@7.0.4(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.2 + postcss-selector-parser: 6.1.2 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.1.1 + + temp-dir@3.0.0: {} + + tempfile@5.0.0: + dependencies: + temp-dir: 3.0.0 + + text-extensions@2.4.0: {} + + through@2.3.8: {} + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@2.0.1(typescript@5.7.3): + dependencies: + typescript: 5.7.3 + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@4.20.0: {} + + typed-array-length@1.0.4: + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + + typescript-eslint@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.21.0(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + typescript@5.7.3: {} + + uglify-js@3.17.4: + optional: true + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + undici-types@5.26.5: {} + + unicorn-magic@0.1.0: {} + + universalify@2.0.0: {} + + update-browserslist-db@1.1.2(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.0 + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.10 + which-typed-array: 1.1.9 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vite-node@3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0): + dependencies: + esbuild: 0.24.2 + postcss: 8.5.2 + rollup: 4.34.8 + optionalDependencies: + '@types/node': 18.19.76 + fsevents: 2.3.3 + jiti: 2.4.2 + sass: 1.85.0 + + vitest@3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0): + dependencies: + '@vitest/expect': 3.0.6 + '@vitest/mocker': 3.0.6(vite@6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0)) + '@vitest/pretty-format': 3.0.6 + '@vitest/runner': 3.0.6 + '@vitest/snapshot': 3.0.6 + '@vitest/spy': 3.0.6 + '@vitest/utils': 3.0.6 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.1.0 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.8.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + vite-node: 3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 18.19.76 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-typed-array@1.1.9: + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wordwrap@1.0.0: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.0.1 + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + 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.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yocto-queue@1.0.0: {} diff --git a/.eslintignore.license b/pnpm-lock.yaml.license similarity index 100% rename from .eslintignore.license rename to pnpm-lock.yaml.license diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 00000000..c75da361 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +// @ts-check + +/** + * @type {import("prettier").Config} + */ +export default { + semi: true, + trailingComma: "all", + singleQuote: false, + printWidth: 120, + tabWidth: 2, +}; diff --git a/renovate.json b/renovate.json index b2fb87b6..16438b93 100644 --- a/renovate.json +++ b/renovate.json @@ -1,5 +1,15 @@ { - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:base", ":automergeAll", ":automergeBranch", ":prHourlyLimitNone", ":prConcurrentLimitNone"], - "ignoreDeps": ["typescript"] + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:base", ":automergeAll", ":automergePr", ":prHourlyLimitNone", ":prConcurrentLimitNone"], + "packageRules": [ + { + "matchPackagePatterns": ["^@pixi"], + "enabled": false + }, + { + "matchPackageNames": ["@types/node"], + "matchUpdateTypes": ["major"], + "enabled": false + } + ] } diff --git a/rollup.config.js b/rollup.config.js index 7a6a8c4a..af0c04d8 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -2,27 +2,27 @@ // // SPDX-License-Identifier: MIT -import copy from "@guanghechen/rollup-plugin-copy"; -import typescript from "@rollup/plugin-typescript"; -import styles from "rollup-plugin-styles"; -import { terser } from "rollup-plugin-terser"; +import styles from "rollup-plugin-styler"; +import { swc } from "rollup-plugin-swc3"; + +import { copy } from "@guanghechen/rollup-plugin-copy"; + import { distDirectory, name, sourceDirectory } from "./tools/const.js"; -import { convertJSONToPack } from "./tools/json-pack-tools.js"; const staticFiles = [ - ".reuse", - "assets", - "ATTRIBUTION.md", - "fonts", - "lang", - "LICENSE.md", - "LICENSES", - "README.md", - "system.json.license", - "system.json", - "template.json.license", - "template.json", - "templates", + ".reuse", + "assets", + "ATTRIBUTION.md", + "fonts", + "lang", + "LICENSE.md", + "LICENSES", + "README.md", + "system.json.license", + "system.json", + "template.json.license", + "template.json", + "templates", ]; const isProduction = process.env.NODE_ENV === "production"; @@ -30,39 +30,34 @@ const isProduction = process.env.NODE_ENV === "production"; * @type {import('rollup').RollupOptions} */ const config = { - input: { [`${name}`]: `${sourceDirectory}/${name}.ts` }, - output: { - dir: distDirectory, - format: "es", - sourcemap: true, - assetFileNames: "[name].[ext]", - }, - plugins: [ - typescript({ noEmitOnError: true }), - styles({ - mode: ["extract", `css/${name}.css`], - url: false, - sourceMap: true, - minimize: isProduction, - }), - copy({ - targets: [ - { src: staticFiles, dest: distDirectory }, - { - src: [`packs/*.json`], - dest: `${distDirectory}/packs`, - rename: (name) => `${name}.db`, - transform: convertJSONToPack, - }, - { - src: [`packs/*.json.license`], - dest: `${distDirectory}/packs`, - rename: (name, extension) => `${name.replace(".json", ".db")}.${extension}`, - }, - ], - }), - isProduction && terser({ ecma: 2020, keep_fnames: true }), - ], + input: { [name]: `${sourceDirectory}/${name}.ts` }, + output: { + dir: distDirectory, + format: "es", + sourcemap: true, + assetFileNames: "[name].[ext]", + }, + plugins: [ + swc({ + jsc: { + minify: isProduction && { + sourceMap: true, + mangle: { + keepClassNames: true, + keepFnNames: true, + }, + }, + }, + sourceMaps: true, + }), + styles({ + mode: ["extract", `css/${name}.css`], + url: false, + sourceMap: true, + minimize: isProduction, + }), + copy({ targets: [{ src: staticFiles, dest: distDirectory }] }), + ], }; export default config; diff --git a/scss/components/actor/_actor_header.scss b/scss/components/actor/_actor_header.scss index 075fc3ed..068c0f1a 100644 --- a/scss/components/actor/_actor_header.scss +++ b/scss/components/actor/_actor_header.scss @@ -7,47 +7,49 @@ @use "../../utils/mixins"; .ds4-actor-header { + display: flex; + flex-grow: 0; + flex-shrink: 0; + gap: 1em; + + &__img { + border: none; + height: 100px; + width: 100px; + &--editable { + cursor: pointer; + } + } + + &__data { display: flex; - flex-grow: 0; - flex-shrink: 0; - gap: 1em; + flex-direction: column; + } - &__img { - border: none; - cursor: pointer; - height: 100px; - width: 100px; + &__data-row { + align-content: center; + display: flex; + flex: 1; + flex-direction: row; + gap: 0.5em; + > * { + flex: 1; } + } - &__data { - display: flex; - flex-direction: column; - } + &__name { + display: flex; + align-items: center; + border-bottom: 0; + margin: 0; + } - &__data-row { - align-content: center; - display: flex; - flex: 1; - flex-direction: row; - gap: 0.5em; - > * { - flex: 1; - } - } - - &__name { - display: flex; - align-items: center; - border-bottom: 0; - margin: 0; - } - - &__name-input[type="text"] { - @include mixins.font-heading-upper; - background-color: transparent; - border: none; - flex: 1; - font-size: 1.25em; - height: auto; - } + &__name-input[type="text"] { + @include mixins.font-heading-upper; + background-color: transparent; + border: none; + flex: 1; + font-size: 1.25em; + height: auto; + } } diff --git a/scss/components/actor/_actor_progression.scss b/scss/components/actor/_actor_progression.scss index 09a3a185..15ac258c 100644 --- a/scss/components/actor/_actor_progression.scss +++ b/scss/components/actor/_actor_progression.scss @@ -10,39 +10,39 @@ @use "../../utils/variables"; .ds4-actor-progression { - @include mixins.mark-invalid-or-disabled-input; + @include mixins.mark-invalid-or-disabled-input; + display: flex; + gap: 0.5em; + + &__entry { + align-items: center; display: flex; - gap: 0.5em; + flex: 1; + gap: 0.25em; + justify-content: flex-end; + } - &__entry { - align-items: center; - display: flex; - flex: 1; - gap: 0.25em; - justify-content: flex-end; - } - - &__label { - @include mixins.font-heading-upper; - border: none; - color: colors.$c-light-grey; - margin: 0; - padding: 0; - text-align: right; - } - - &__input { - flex: 0 0 5ch; - - &--slayer-points { - &::-webkit-inner-spin-button, - &::-webkit-outer-spin-button { - -webkit-appearance: auto; - } - &:hover, - &:focus { - -moz-appearance: auto; - } - } + &__label { + @include mixins.font-heading-upper; + border: none; + color: colors.$c-light-grey; + margin: 0; + padding: 0; + text-align: right; + } + + &__input { + flex: 0 0 5ch; + + &--slayer-points { + &::-webkit-inner-spin-button, + &::-webkit-outer-spin-button { + -webkit-appearance: auto; + } + &:hover, + &:focus { + -moz-appearance: auto; + } } + } } diff --git a/scss/components/actor/_actor_properties.scss b/scss/components/actor/_actor_properties.scss index 36e473f6..78edeb28 100644 --- a/scss/components/actor/_actor_properties.scss +++ b/scss/components/actor/_actor_properties.scss @@ -10,27 +10,27 @@ @use "../../utils/variables"; .ds4-actor-properties { - @include mixins.mark-invalid-or-disabled-input; + @include mixins.mark-invalid-or-disabled-input; + display: flex; + gap: 0.25em; + + &__property { + flex: 1; + } + + &__property-label { + font-size: 0.9em; + font-weight: bold; + white-space: nowrap; + } + + &__property-select { + width: 100%; + height: var(--form-field-height); + } + + &__property-multi-input { display: flex; - gap: 0.25em; - - &__property { - flex: 1; - } - - &__property-label { - font-size: 0.9em; - font-weight: bold; - white-space: nowrap; - } - - &__property-select { - width: 100%; - height: var(--form-field-height); - } - - &__property-multi-input { - display: flex; - gap: 0.125em; - } + gap: 0.125em; + } } diff --git a/scss/components/actor/_actor_sheet.scss b/scss/components/actor/_actor_sheet.scss index a49d1934..7d21ec9c 100644 --- a/scss/components/actor/_actor_sheet.scss +++ b/scss/components/actor/_actor_sheet.scss @@ -5,6 +5,6 @@ */ .ds4-actor-sheet { - min-height: 625px; - min-width: 650px; + min-height: 645px; + min-width: 650px; } diff --git a/scss/components/actor/_biography.scss b/scss/components/actor/_biography.scss index 0cda88fa..cf033a71 100644 --- a/scss/components/actor/_biography.scss +++ b/scss/components/actor/_biography.scss @@ -5,7 +5,7 @@ */ .ds4-biography-tab-content { - display: grid; - grid-template-columns: 1fr 3fr; - column-gap: 1em; + display: grid; + grid-template-columns: 1fr 3fr; + column-gap: 1em; } diff --git a/scss/components/actor/_check.scss b/scss/components/actor/_check.scss index ade5164f..2b64328b 100644 --- a/scss/components/actor/_check.scss +++ b/scss/components/actor/_check.scss @@ -7,11 +7,29 @@ @use "../../utils/mixins"; .ds4-check { - cursor: pointer; - display: flex; - justify-content: space-between; + background: transparent; + border: none; + cursor: pointer; + display: flex; + font-family: inherit; + font-size: inherit; + justify-content: space-between; + line-height: inherit; + margin: 0; + &:focus { + box-shadow: none; + } + + &:hover { + @include mixins.foundry-highlight-text-shadow; + box-shadow: none; + } + + &[disabled] { + cursor: auto; &:hover { - @include mixins.foundry-highlight-text-shadow; + text-shadow: none; } + } } diff --git a/scss/components/actor/_checks.scss b/scss/components/actor/_checks.scss index 704a428e..47f0c77a 100644 --- a/scss/components/actor/_checks.scss +++ b/scss/components/actor/_checks.scss @@ -5,9 +5,11 @@ */ .ds4-checks { - column-gap: 2em; - display: grid; - grid-template-columns: repeat(auto-fit, minmax(11em, 1fr)); - row-gap: 0.25em; - white-space: nowrap; + column-gap: 2em; + display: grid; + grid-auto-flow: column; + grid-template-columns: 1fr 1fr 1fr; + grid-template-rows: repeat(10, 1fr); + row-gap: 0.25em; + white-space: nowrap; } diff --git a/scss/components/actor/_combat_value.scss b/scss/components/actor/_combat_value.scss index 40e30685..184aa31e 100644 --- a/scss/components/actor/_combat_value.scss +++ b/scss/components/actor/_combat_value.scss @@ -8,66 +8,66 @@ @use "../../utils/variables"; .ds4-combat-value { - $size: 3.75rem; + $size: 3.75rem; - display: grid; - place-items: center; - row-gap: 0.125em; + display: grid; + place-items: center; + row-gap: 0.125em; - &__value { - $combat-values-icons-path: "#{variables.$official-icons-path}/combat-values"; - @include mixins.centered-content; + &__value { + $combat-values-icons-path: "#{variables.$official-icons-path}/combat-values"; + @include mixins.centered-content; - background-position: center; - background-repeat: no-repeat; - background-size: contain; - font-size: 1.5em; - height: $size; - width: $size; + background-position: center; + background-repeat: no-repeat; + background-size: contain; + font-size: 1.5em; + height: $size; + width: $size; - &--hitPoints { - background-image: url("#{$combat-values-icons-path}/hit-points.png"); - } - &--defense { - background-image: url("#{$combat-values-icons-path}/defense.png"); - } - &--initiative { - background-image: url("#{$combat-values-icons-path}/initiative.png"); - } - &--movement { - background-image: url("#{$combat-values-icons-path}/movement-rate.png"); - } - &--meleeAttack { - background-image: url("#{$combat-values-icons-path}/melee-attack.png"); - } - &--rangedAttack { - background-image: url("#{$combat-values-icons-path}/ranged-attack.png"); - } - &--spellcasting { - background-image: url("#{$combat-values-icons-path}/spellcasting.png"); - } - &--targetedSpellcasting { - background-image: url("#{$combat-values-icons-path}/targeted-spellcasting.png"); - } + &--hitPoints { + background-image: url("#{$combat-values-icons-path}/hit-points.png"); } - - &__label { - @include mixins.font-heading-upper; - font-size: 1.2em; - white-space: nowrap; + &--defense { + background-image: url("#{$combat-values-icons-path}/defense.png"); } - - &__formula { - align-items: center; - justify-content: space-between; - display: flex; - gap: 0.15em; - text-align: center; - width: $size; + &--initiative { + background-image: url("#{$combat-values-icons-path}/initiative.png"); } - - &__formula-base, - &__formula-modifier { - flex: 1 1 4em; + &--movement { + background-image: url("#{$combat-values-icons-path}/movement-rate.png"); } + &--meleeAttack { + background-image: url("#{$combat-values-icons-path}/melee-attack.png"); + } + &--rangedAttack { + background-image: url("#{$combat-values-icons-path}/ranged-attack.png"); + } + &--spellcasting { + background-image: url("#{$combat-values-icons-path}/spellcasting.png"); + } + &--targetedSpellcasting { + background-image: url("#{$combat-values-icons-path}/targeted-spellcasting.png"); + } + } + + &__label { + @include mixins.font-heading-upper; + font-size: 1.2em; + white-space: nowrap; + } + + &__formula { + align-items: center; + justify-content: space-between; + display: flex; + gap: 0.15em; + text-align: center; + width: $size; + } + + &__formula-base, + &__formula-modifier { + flex: 1 1 4em; + } } diff --git a/scss/components/actor/_combat_values.scss b/scss/components/actor/_combat_values.scss index 71512390..def84140 100644 --- a/scss/components/actor/_combat_values.scss +++ b/scss/components/actor/_combat_values.scss @@ -7,9 +7,9 @@ @use "../../utils/variables"; .ds4-combat-values { - border-bottom: variables.$border-groove; - display: flex; - margin: variables.$margin-sm 0; - padding-bottom: variables.$margin-sm; - justify-content: space-between; + border-bottom: variables.$border-groove; + display: flex; + margin: variables.$margin-sm 0; + padding-bottom: variables.$margin-sm; + justify-content: space-between; } diff --git a/scss/components/actor/_core_value.scss b/scss/components/actor/_core_value.scss index 4397a348..140ca89e 100644 --- a/scss/components/actor/_core_value.scss +++ b/scss/components/actor/_core_value.scss @@ -9,34 +9,34 @@ @use "../../utils/variables"; .ds4-core-value { + align-items: center; + display: flex; + + &__label { + @include mixins.font-heading-upper; + flex: 1; + font-size: 2em; + text-align: center; + } + + &__value { align-items: center; display: flex; + flex: 1.1; + font-size: 1.2em; + gap: 0.15em; + text-align: center; + } - &__label { - @include mixins.font-heading-upper; - flex: 1; - font-size: 2em; - text-align: center; - } + &__value-input, + &__value-total { + flex: 1 1 4em; + } - &__value { - align-items: center; - display: flex; - flex: 1.1; - font-size: 1.2em; - gap: 0.15em; - text-align: center; - } - - &__value-input, - &__value-total { - flex: 1 1 4em; - } - - &--trait { - .ds4-core-value__label { - -webkit-text-stroke: 1px colors.$c-black; - color: transparent; - } + &--trait { + .ds4-core-value__label { + -webkit-text-stroke: 1px colors.$c-black; + color: transparent; } + } } diff --git a/scss/components/actor/_core_values.scss b/scss/components/actor/_core_values.scss index 13bda985..cf1dc459 100644 --- a/scss/components/actor/_core_values.scss +++ b/scss/components/actor/_core_values.scss @@ -8,8 +8,8 @@ @use "../../utils/variables"; .ds4-core-values { - column-gap: 0.5em; - display: grid; - grid-template-columns: repeat(3, 1fr); - row-gap: 0.5em; + column-gap: 0.5em; + display: grid; + grid-template-columns: repeat(3, 1fr); + row-gap: 0.5em; } diff --git a/scss/components/actor/_currency.scss b/scss/components/actor/_currency.scss index 29dc5193..2cbe3c31 100644 --- a/scss/components/actor/_currency.scss +++ b/scss/components/actor/_currency.scss @@ -7,16 +7,16 @@ @use "../../utils/variables"; .ds4-currency { - align-items: center; - display: flex; - gap: 1em; - margin: 0.5em 0; + align-items: center; + display: flex; + gap: 1em; + margin: 0.5em 0; } .ds4-currency-title { - border-bottom: variables.$border-groove; - font-weight: bold; - margin-bottom: 0; - margin-top: 1em; - padding-left: 1em; + border-bottom: variables.$border-groove; + font-weight: bold; + margin-bottom: 0; + margin-top: 1em; + padding-left: 1em; } diff --git a/scss/components/actor/_description.scss b/scss/components/actor/_description.scss new file mode 100644 index 00000000..37830530 --- /dev/null +++ b/scss/components/actor/_description.scss @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2022 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-description { + height: 100%; +} diff --git a/scss/components/actor/_profile.scss b/scss/components/actor/_profile.scss index df2b065c..cad7b14c 100644 --- a/scss/components/actor/_profile.scss +++ b/scss/components/actor/_profile.scss @@ -5,24 +5,24 @@ */ .ds4-profile { + display: flex; + flex-direction: column; + gap: 0.5em; + + &__entry { display: flex; flex-direction: column; - gap: 0.5em; + align-items: center; + } - &__entry { - display: flex; - flex-direction: column; - align-items: center; + &__entry-input { + &--multiline { + resize: none; } + } - &__entry-input { - &--multiline { - resize: none; - } - } - - &__entry-label { - font-size: 0.8em; - font-weight: bold; - } + &__entry-label { + font-size: 0.8em; + font-weight: bold; + } } diff --git a/scss/components/actor/_talent_rank_equation.scss b/scss/components/actor/_talent_rank_equation.scss deleted file mode 100644 index 5bf13a42..00000000 --- a/scss/components/actor/_talent_rank_equation.scss +++ /dev/null @@ -1,21 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * SPDX-FileCopyrightText: 2021 Gesina Schwalbe - * - * SPDX-License-Identifier: MIT - */ - -.ds4-talent-rank-equation { - display: flex; - gap: 0.5em; - - &__value { - &[type="number"] { - background-color: transparent; - border: 0; - height: auto; - padding: 0; - text-align: center; - } - } -} diff --git a/scss/components/dice/_dice_total.scss b/scss/components/dice/_dice_total.scss index 2df67ba1..5d041aef 100644 --- a/scss/components/dice/_dice_total.scss +++ b/scss/components/dice/_dice_total.scss @@ -8,19 +8,19 @@ // Needs to be nested in .dice-roll to win against foundry's style.css with respect to specificity .dice-roll .ds4-dice-total { - @mixin color-filter($rotation) { - filter: sepia(0.5) hue-rotate($rotation); - } + @mixin color-filter($rotation) { + filter: sepia(0.5) hue-rotate($rotation); + } - &--coup { - @include color-filter(60deg); - background-color: colors.$c-coup-bg; - color: colors.$c-coup; - } + &--coup { + @include color-filter(60deg); + background-color: colors.$c-coup-bg; + color: colors.$c-coup; + } - &--fumble { - @include color-filter(-60deg); - background-color: colors.$c-fumble-bg; - color: colors.$c-fumble; - } + &--fumble { + @include color-filter(-60deg); + background-color: colors.$c-fumble-bg; + color: colors.$c-fumble; + } } diff --git a/scss/components/item/_item_header.scss b/scss/components/item/_item_header.scss index bb8ded17..2e122a36 100644 --- a/scss/components/item/_item_header.scss +++ b/scss/components/item/_item_header.scss @@ -8,44 +8,44 @@ @use "../../utils/mixins"; .ds4-item-header { - align-items: center; - display: flex; - gap: 1em; + align-items: center; + display: flex; + gap: 1em; - &__img { - border: none; - cursor: pointer; - height: 100px; - width: 100px; - } + &__img { + border: none; + cursor: pointer; + height: 100px; + width: 100px; + } - &__data { - flex: 1; - } + &__data { + flex: 1; + } - &__type { - @include mixins.font-heading-upper; - border: none; - color: colors.$c-light-grey; - margin-bottom: 0; - } + &__type { + @include mixins.font-heading-upper; + border: none; + color: colors.$c-light-grey; + margin-bottom: 0; + } - &__name { - border: none; - margin: 0; - } + &__name { + border: none; + margin: 0; + } - &__name-label { - display: none; - } + &__name-label { + display: none; + } - &__name-input[type="text"] { - @include mixins.font-heading-upper; - background-color: transparent; - border: none; - font-size: 1.25em; - height: auto; - padding-left: 0; - padding-right: 0; - } + &__name-input[type="text"] { + @include mixins.font-heading-upper; + background-color: transparent; + border: none; + font-size: 1.25em; + height: auto; + padding-left: 0; + padding-right: 0; + } } diff --git a/scss/components/item/_item_properties.scss b/scss/components/item/_item_properties.scss index a62fa2b9..903fa97e 100644 --- a/scss/components/item/_item_properties.scss +++ b/scss/components/item/_item_properties.scss @@ -9,13 +9,13 @@ @use "../../utils/variables"; .ds4-item-properties { - @include mixins.mark-invalid-or-disabled-input; + @include mixins.mark-invalid-or-disabled-input; - &__title { - border-bottom: variables.$border-groove; - font-weight: bold; - margin-bottom: 0; - margin-top: 1em; - padding-left: 1em; - } + &__title { + border-bottom: variables.$border-groove; + font-weight: bold; + margin-bottom: 0; + margin-top: 1em; + padding-left: 1em; + } } diff --git a/scss/components/item/_item_sheet.scss b/scss/components/item/_item_sheet.scss index 9048fe80..eef6e821 100644 --- a/scss/components/item/_item_sheet.scss +++ b/scss/components/item/_item_sheet.scss @@ -5,6 +5,6 @@ */ .ds4-item-sheet { - min-height: 400px; - min-width: 540px; + min-height: 400px; + min-width: 540px; } diff --git a/scss/components/shared/_add_button.scss b/scss/components/shared/_add_button.scss new file mode 100644 index 00000000..0b61713d --- /dev/null +++ b/scss/components/shared/_add_button.scss @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-add-button { + padding: 0 calc(1em / 3); +} diff --git a/scss/components/shared/_checkbox_grid.scss b/scss/components/shared/_checkbox_grid.scss new file mode 100644 index 00000000..52dd9ec3 --- /dev/null +++ b/scss/components/shared/_checkbox_grid.scss @@ -0,0 +1,27 @@ +/* + * SPDX-FileCopyrightText: 2022 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-checkbox-grid { + $gap: 3px; + gap: $gap; + display: grid; + font-size: var(--font-size-12); + grid-template-columns: 1fr 1fr; + + &__item { + align-items: center; + display: flex; + gap: $gap; + justify-content: flex-start; + > * { + flex: 0 0 auto; + } + } + + &__checkbox[type="checkbox"] { + margin: 0; + } +} diff --git a/scss/components/shared/_control_button_group.scss b/scss/components/shared/_control_button_group.scss index 6fa87150..faa39058 100644 --- a/scss/components/shared/_control_button_group.scss +++ b/scss/components/shared/_control_button_group.scss @@ -5,12 +5,12 @@ */ .ds4-control-button-group { - display: flex; - text-align: center; - width: 100%; - padding: 0 calc(1em / 3); + display: flex; + text-align: center; + width: 100%; + padding: 0 calc(1em / 3); - &__button { - flex: 1; - } + &__button { + flex: 1; + } } diff --git a/scss/components/shared/_editor.scss b/scss/components/shared/_editor.scss index 1d5ac59d..dead15ce 100644 --- a/scss/components/shared/_editor.scss +++ b/scss/components/shared/_editor.scss @@ -5,14 +5,14 @@ */ .ds4-sheet-form { - .editor { - height: 100%; + .editor { + height: 100%; - .tox { - .tox-toolbar-overlord, - .tox-toolbar__primary { - background: transparent; - } - } + .tox { + .tox-toolbar-overlord, + .tox-toolbar__primary { + background: transparent; + } } + } } diff --git a/scss/components/shared/_embedded_document_list.scss b/scss/components/shared/_embedded_document_list.scss index ca4eff88..50b8d5e1 100644 --- a/scss/components/shared/_embedded_document_list.scss +++ b/scss/components/shared/_embedded_document_list.scss @@ -9,147 +9,144 @@ @use "../../utils/variables"; .ds4-embedded-document-list { - @include mixins.mark-invalid-or-disabled-input; + @include mixins.mark-invalid-or-disabled-input; - $row-height: 1.75em; + $row-height: 1.75em; - align-items: center; - display: grid; - grid-column-gap: 0.5em; - grid-row-gap: 0.2em; - margin: 0; - overflow-y: auto; - padding: 0.5em 0; + display: grid; + grid-column-gap: 0.5em; + grid-row-gap: 0.2em; + margin: 0; + padding: 0.5em 0; - &--weapon { - grid-template-columns: $row-height $row-height 3ch 3fr $row-height 1fr 3ch 5fr 5ch; - :nth-child(9n + 1), - :nth-child(9n + 5), - :nth-child(9n + 6), - :nth-child(9n + 7) { - justify-self: center; - } + &--weapon { + grid-template-columns: $row-height $row-height 3ch 3fr $row-height 1fr 3ch 5fr 5ch; + :nth-child(9n + 1), + :nth-child(9n + 5), + :nth-child(9n + 6), + :nth-child(9n + 7) { + justify-self: center; } - &--armor { - grid-template-columns: $row-height $row-height 3ch 3fr 1fr 1fr 3ch 5fr 5ch; - :nth-child(9n + 1), - :nth-child(9n + 7) { - justify-self: center; - } + } + &--armor { + grid-template-columns: $row-height $row-height 3ch 3fr 1fr 1fr 3ch 5fr 5ch; + :nth-child(9n + 1), + :nth-child(9n + 7) { + justify-self: center; } - &--shield { - grid-template-columns: $row-height $row-height 3ch 1fr 3ch 3fr 5ch; - :nth-child(7n + 1), - :nth-child(7n + 5) { - justify-self: center; - } + } + &--shield { + grid-template-columns: $row-height $row-height 3ch 1fr 3ch 3fr 5ch; + :nth-child(7n + 1), + :nth-child(7n + 5) { + justify-self: center; } - &--equipment { - grid-template-columns: $row-height $row-height 3ch 1fr 10ch 3fr 5ch; - :nth-child(7n + 1) { - justify-self: center; - } + } + &--equipment { + grid-template-columns: $row-height $row-height 3ch 1fr 10ch 3fr 5ch; + :nth-child(7n + 1) { + justify-self: center; } - &--loot { - grid-template-columns: $row-height 3ch 1fr 10ch 3fr 5ch; + } + &--loot { + grid-template-columns: $row-height 3ch 1fr 10ch 3fr 5ch; + } + &--spell { + grid-template-columns: $row-height $row-height 2fr $row-height 1fr 1fr 1fr 1fr 5ch; + :nth-child(9n + 1), + :nth-child(9n + 4) { + justify-self: center; } - &--spell { - grid-template-columns: $row-height $row-height 2fr $row-height 1fr 1fr 1fr 1fr 5ch; - :nth-child(9n + 1), - :nth-child(9n + 4), - :nth-child(9n + 6), - :nth-child(9n + 7), - :nth-child(9n + 8) { - justify-self: center; - } + } + &--talent { + grid-template-columns: $row-height 1fr 4ch 3fr 5ch; + :nth-child(9n + 3) { + justify-self: center; } - &--talent { - grid-template-columns: $row-height 1fr 21ch 3fr 5ch; - :nth-child(9n + 3) { - justify-self: center; - } + } + &--racial-ability, + &--language, + &--alphabet, + &--special-creature-ability { + grid-template-columns: $row-height 1fr 3fr 5ch; + } + + &--effect { + grid-template-columns: $row-height $row-height $row-height 3fr 2fr $row-height 5ch; + :nth-child(7n + 1), + :nth-child(7n + 2), + :nth-child(7n + 6) { + justify-self: center; } - &--racial-ability, - &--language, - &--alphabet, - &--special-creature-ability { - grid-template-columns: $row-height 1fr 3fr 5ch; + } + + &--item-effect { + grid-template-columns: $row-height 1fr 5ch; + } + + &__row { + display: contents; // TODO: Once chromium supports `grid-template-columns: subgrid` (https://bugs.chromium.org/p/chromium/issues/detail?id=618969), switch to `display: grid; grid: 1/-1; grid-template-columns: subgrid` + + &--header { + font-weight: bold; } - &--effect { - grid-template-columns: $row-height $row-height $row-height 3fr 2fr $row-height 5ch; - :nth-child(7n + 1), - :nth-child(7n + 2), - :nth-child(7n + 6) { - justify-self: center; - } + > * { + height: $row-height; + line-height: $row-height; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + } + + &__image { + border: none; + } + + &__editable { + &[type="text"], + &[type="number"] { + background-color: transparent; + border: 0; + padding: 0; + height: 100%; } - &--item-effect { - grid-template-columns: $row-height 1fr 5ch; + &--checkbox { + &[type="checkbox"] { + width: 100%; + height: 100%; + margin: 0px; + } + } + } + + &__description { + overflow: hidden; + text-overflow: ellipsis; + + :not(:first-child) { + display: none; } - &__row { - display: contents; // TODO: Once chromium supports `grid-template-columns: subgrid` (https://bugs.chromium.org/p/chromium/issues/detail?id=618969), switch to `display: grid; grid: 1/-1; grid-template-columns: subgrid` - - &--header { - font-weight: bold; - } - - > * { - height: $row-height; - line-height: $row-height; - white-space: nowrap; - text-overflow: ellipsis; - } + > * { + font-size: 0.75em; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; } + } - &__image { - border: none; - } - - &__editable { - &[type="text"], - &[type="number"] { - background-color: transparent; - border: 0; - padding: 0; - } - - &--checkbox { - &[type="checkbox"] { - width: 100%; - height: 100%; - margin: 0px; - } - } - } - - &__description { - overflow: hidden; - text-overflow: ellipsis; - - :not(:first-child) { - display: none; - } - - > * { - font-size: 0.75em; - margin: 0; - overflow: hidden; - text-overflow: ellipsis; - } - } - - &__clickable { - cursor: pointer; - } + &__clickable { + cursor: pointer; + } } .ds4-embedded-document-list-title { - border-bottom: variables.$border-groove; - font-weight: bold; - margin-bottom: 0; - margin-top: 1em; - padding-left: 1em; + border-bottom: variables.$border-groove; + font-weight: bold; + margin-bottom: 0; + margin-top: 1em; + padding-left: 1em; } diff --git a/scss/components/shared/_form_group.scss b/scss/components/shared/_form_group.scss new file mode 100644 index 00000000..12687e48 --- /dev/null +++ b/scss/components/shared/_form_group.scss @@ -0,0 +1,27 @@ +/* + * SPDX-FileCopyrightText: 2022 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-form-group { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + + &--start { + align-items: flex-start; + } + + & > * { + flex: 3; + } + + &__label { + flex: 2; + line-height: var(--form-field-height); + } +} diff --git a/scss/components/shared/_rollable_image.scss b/scss/components/shared/_rollable_image.scss index e883e310..53affbcd 100644 --- a/scss/components/shared/_rollable_image.scss +++ b/scss/components/shared/_rollable_image.scss @@ -5,35 +5,35 @@ */ .ds4-rollable-image { - position: relative; + position: relative; - &--rollable { - cursor: pointer; + &--rollable { + cursor: pointer; - &:hover { - .ds4-rollable-image__image { - opacity: 0.25; - } + &:hover { + .ds4-rollable-image__image { + opacity: 0.25; + } - .ds4-rollable-image__overlay { - opacity: 1; - } - } + .ds4-rollable-image__overlay { + opacity: 1; + } } + } - &__image { - border: none; - transition: 0.1s ease; - } + &__image { + border: none; + transition: 0.1s ease; + } - &__overlay { - border: none; - bottom: 0; - left: 0; - opacity: 0; - position: absolute; - right: 0; - top: 0; - transition: 0.1s ease; - } + &__overlay { + border: none; + bottom: 0; + left: 0; + opacity: 0; + position: absolute; + right: 0; + top: 0; + transition: 0.1s ease; + } } diff --git a/scss/components/shared/_sheet_body.scss b/scss/components/shared/_sheet_body.scss index 6a718c2c..3b19d5ca 100644 --- a/scss/components/shared/_sheet_body.scss +++ b/scss/components/shared/_sheet_body.scss @@ -5,6 +5,6 @@ */ .ds4-sheet-body { - height: 100%; - overflow-y: auto; + height: 100%; + overflow-y: auto; } diff --git a/scss/components/shared/_sheet_form.scss b/scss/components/shared/_sheet_form.scss index 7c6165ec..861de722 100644 --- a/scss/components/shared/_sheet_form.scss +++ b/scss/components/shared/_sheet_form.scss @@ -5,9 +5,9 @@ */ .ds4-sheet-form { - display: flex; - flex-direction: column; - flex-wrap: nowrap; - font-family: var(--ds4-font-primary); - height: 100%; + display: flex; + flex-direction: column; + flex-wrap: nowrap; + font-family: var(--ds4-font-primary); + height: 100%; } diff --git a/scss/components/shared/_sheet_tab.scss b/scss/components/shared/_sheet_tab.scss index ae1b3d32..ea1d13fc 100644 --- a/scss/components/shared/_sheet_tab.scss +++ b/scss/components/shared/_sheet_tab.scss @@ -5,15 +5,15 @@ */ .ds4-sheet-tab { - flex-direction: column; - flex-wrap: nowrap; - height: 100%; + flex-direction: column; + flex-wrap: nowrap; + height: 100%; - &[data-tab].active { - display: flex; - } + &[data-tab].active { + display: flex; + } - > * { - flex-shrink: 0; - } + > * { + flex-shrink: 0; + } } diff --git a/scss/components/shared/_sheet_tab_nav.scss b/scss/components/shared/_sheet_tab_nav.scss index adf767c8..676fea60 100644 --- a/scss/components/shared/_sheet_tab_nav.scss +++ b/scss/components/shared/_sheet_tab_nav.scss @@ -7,22 +7,22 @@ @use "../../utils/variables"; .ds4-sheet-tab-nav { - border-bottom: variables.$border-groove; - border-top: variables.$border-groove; - display: flex; - flex-wrap: nowrap; - height: calc(2 * var(--line-height-16)); - justify-content: space-around; - line-height: calc(2 * var(--line-height-16)); - margin: variables.$margin-sm 0; + border-bottom: variables.$border-groove; + border-top: variables.$border-groove; + display: flex; + flex-wrap: nowrap; + height: calc(2 * var(--line-height-16)); + justify-content: space-around; + line-height: calc(2 * var(--line-height-16)); + margin: variables.$margin-sm 0; - &__item { - flex: 0 1 auto !important; // necessary to override the styling from lang-de, see https://gitlab.com/henry4k/foundryvtt-lang-de/-/issues/9 - font-weight: bold; - white-space: nowrap; + &__item { + flex: 0 1 auto !important; // necessary to override the styling from lang-de, see https://gitlab.com/henry4k/foundryvtt-lang-de/-/issues/9 + font-weight: bold; + white-space: nowrap; - &.active { - text-shadow: 0 0 variables.$padding-md var(--color-shadow-primary); - } + &.active { + text-shadow: 0 0 variables.$padding-md var(--color-shadow-primary); } + } } diff --git a/scss/ds4.scss b/scss/ds4.scss index 24a1b8a5..4f533640 100644 --- a/scss/ds4.scss +++ b/scss/ds4.scss @@ -7,39 +7,43 @@ */ // global -@use "global/accessibility"; -@use "global/fonts"; +@import "global/accessibility"; +@import "global/fonts"; +@import "global/utils"; // shared -@use "components/shared/control_button_group"; -@use "components/shared/editor"; -@use "components/shared/embedded_document_list"; -@use "components/shared/rollable_image"; -@use "components/shared/sheet_body"; -@use "components/shared/sheet_form"; -@use "components/shared/sheet_tab_nav"; -@use "components/shared/sheet_tab"; +@import "components/shared/add_button"; +@import "components/shared/control_button_group"; +@import "components/shared/checkbox_grid"; +@import "components/shared/editor"; +@import "components/shared/embedded_document_list"; +@import "components/shared/form_group"; +@import "components/shared/rollable_image"; +@import "components/shared/sheet_body"; +@import "components/shared/sheet_form"; +@import "components/shared/sheet_tab_nav"; +@import "components/shared/sheet_tab"; // actor -@use "components/actor/actor_header"; -@use "components/actor/actor_progression"; -@use "components/actor/actor_properties"; -@use "components/actor/actor_sheet"; -@use "components/actor/biography"; -@use "components/actor/check"; -@use "components/actor/checks"; -@use "components/actor/combat_value"; -@use "components/actor/combat_values"; -@use "components/actor/core_value"; -@use "components/actor/core_values"; -@use "components/actor/currency"; -@use "components/actor/profile"; -@use "components/actor/talent_rank_equation"; +@import "components/actor/actor_header"; +@import "components/actor/actor_progression"; +@import "components/actor/actor_properties"; +@import "components/actor/actor_sheet"; +@import "components/actor/biography"; +@import "components/actor/check"; +@import "components/actor/checks"; +@import "components/actor/combat_value"; +@import "components/actor/combat_values"; +@import "components/actor/core_value"; +@import "components/actor/core_values"; +@import "components/actor/currency"; +@import "components/actor/description"; +@import "components/actor/profile"; // item -@use "components/item/item_header"; -@use "components/item/item_properties"; -@use "components/item/item_sheet"; +@import "components/item/item_header"; +@import "components/item/item_properties"; +@import "components/item/item_sheet"; // dice -@use "components/dice/dice_total"; +@import "components/dice/dice_total"; diff --git a/scss/global/_accessibility.scss b/scss/global/_accessibility.scss index cb2172cc..6e82b2c9 100644 --- a/scss/global/_accessibility.scss +++ b/scss/global/_accessibility.scss @@ -6,5 +6,10 @@ */ .ds4-hidden { - display: none; + display: none; +} + +// This is needed for higher specifity +form .ds4-hidden { + display: none; } diff --git a/scss/global/_fonts.scss b/scss/global/_fonts.scss index d864335d..4e79e4c0 100644 --- a/scss/global/_fonts.scss +++ b/scss/global/_fonts.scss @@ -5,46 +5,56 @@ */ @font-face { - font-display: swap; - font-family: "Lora"; - font-style: normal; - font-weight: normal; - src: local("Lora"), url("../fonts/Lora/Lora.woff") format("woff"); + font-display: swap; + font-family: "Lora"; + font-style: normal; + font-weight: normal; + src: + local("Lora"), + url("../fonts/Lora/Lora.woff") format("woff"); } @font-face { - font-display: swap; - font-family: "Lora"; - font-style: normal; - font-weight: bold; - src: local("Lora"), url("../fonts/Lora/Lora-Bold.woff") format("woff"); + font-display: swap; + font-family: "Lora"; + font-style: normal; + font-weight: bold; + src: + local("Lora"), + url("../fonts/Lora/Lora-Bold.woff") format("woff"); } @font-face { - font-display: swap; - font-family: "Lora"; - font-style: italic; - font-weight: normal; - src: local("Lora"), url("../fonts/Lora/Lora-Italic.woff") format("woff"); + font-display: swap; + font-family: "Lora"; + font-style: italic; + font-weight: normal; + src: + local("Lora"), + url("../fonts/Lora/Lora-Italic.woff") format("woff"); } @font-face { - font-display: swap; - font-family: "Lora"; - font-style: italic; - font-weight: bold; - src: local("Lora"), url("../fonts/Lora/Lora-BoldItalic.woff") format("woff"); + font-display: swap; + font-family: "Lora"; + font-style: italic; + font-weight: bold; + src: + local("Lora"), + url("../fonts/Lora/Lora-BoldItalic.woff") format("woff"); } @font-face { - font-display: swap; - font-family: "Wood Stamp"; - font-style: normal; - font-weight: normal; - src: local("Wood Stamp"), url("../fonts/Woodstamp/Woodstamp.woff") format("woff"); + font-display: swap; + font-family: "Wood Stamp"; + font-style: normal; + font-weight: normal; + src: + local("Wood Stamp"), + url("../fonts/Woodstamp/Woodstamp.woff") format("woff"); } :root { - --ds4-font-primary: Lora, serif; - --ds4-font-heading: "Wood Stamp", sans-serif; + --ds4-font-primary: Lora, serif; + --ds4-font-heading: "Wood Stamp", sans-serif; } diff --git a/scss/global/_utils.scss b/scss/global/_utils.scss new file mode 100644 index 00000000..4f982d05 --- /dev/null +++ b/scss/global/_utils.scss @@ -0,0 +1,14 @@ +/* + * SPDX-FileCopyrightText: 2022 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-code-input { + font-family: var(--font-mono); +} + +// This is needed for higher specifity +form .ds4-code-input { + font-family: var(--font-mono); +} diff --git a/scss/utils/_mixins.scss b/scss/utils/_mixins.scss index 369d35b7..edd0775f 100644 --- a/scss/utils/_mixins.scss +++ b/scss/utils/_mixins.scss @@ -8,24 +8,24 @@ @use "./colors"; @mixin centered-content { - display: grid; - place-items: center; + display: grid; + place-items: center; } @mixin mark-invalid-or-disabled-input { - input:invalid { - background-color: colors.$c-invalid-input; - } - input:disabled { - background-color: transparent; - } + input:invalid { + background-color: colors.$c-invalid-input; + } + input:disabled { + background-color: transparent; + } } @mixin foundry-highlight-text-shadow { - text-shadow: 0 0 10px var(--color-shadow-primary); + text-shadow: 0 0 10px var(--color-shadow-primary); } @mixin font-heading-upper { - font-family: var(--ds4-font-heading); - text-transform: uppercase; + font-family: var(--ds4-font-heading); + text-transform: uppercase; } diff --git a/spec/dice/check-evaluation.spec.ts b/spec/dice/check-evaluation.spec.ts new file mode 100644 index 00000000..f905426f --- /dev/null +++ b/spec/dice/check-evaluation.spec.ts @@ -0,0 +1,374 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// +// SPDX-License-Identifier: MIT + +import { describe, expect, it } from "vitest"; + +import { evaluateCheck } from "../../src/dice/check-evaluation"; + +describe("evaluateCheck with no dice", () => { + it("should throw an error.", () => { + expect(() => evaluateCheck([], 10)).toThrow("Invalid number of dice."); + }); +}); + +describe("evaluateCheck with more dice than required by the checkTargetNumber", () => { + it("should throw an error.", () => { + expect(() => evaluateCheck([10, 10], 10)).toThrow("Invalid number of dice."); + }); +}); + +describe("evaluateCheck with less dice than required by the checkTargetNumber", () => { + it("should throw an error.", () => { + expect(() => evaluateCheck([10], 21)).toThrow("Invalid number of dice."); + }); +}); + +describe("evaluateCheck with a single die", () => { + it("should assign the checkTargetNumber to the single die and be successful.", () => { + expect(evaluateCheck([4], 12)).toEqual([{ result: 4, checkTargetNumber: 12, active: true, discarded: false }]); + }); + + it("should assign the checkTargetNumber to the single die on upper edge case and be successful.", () => { + expect(evaluateCheck([4], 4)).toEqual([{ result: 4, checkTargetNumber: 4, active: true, discarded: false }]); + }); + + it("should assign the checkTargetNumber to the single die on lower edge case not be successful.", () => { + expect(evaluateCheck([5], 4)).toEqual([{ result: 5, checkTargetNumber: 4, active: false, discarded: true }]); + }); + + it("should assign the checkTargetNumber to the single die and not be successful on upper edge case '19'", () => { + expect(evaluateCheck([19], 4)).toEqual([{ result: 19, checkTargetNumber: 4, active: false, discarded: true }]); + }); + + it("should assign the checkTargetNumber to the single die and coup on '1'", () => { + expect(evaluateCheck([1], 4)).toEqual([ + { result: 1, checkTargetNumber: 4, active: true, discarded: false, success: true, count: 4 }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and fumble on '20'", () => { + expect(evaluateCheck([20], 4)).toEqual([ + { result: 20, checkTargetNumber: 4, active: false, discarded: true, failure: true }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is 0 and coup on 1", () => { + expect(evaluateCheck([1], 0)).toEqual([ + { result: 1, checkTargetNumber: 0, active: true, discarded: false, success: true, count: 0 }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is 0 and fail on values > 1 and < 20", () => { + for (let i = 2; i < 20; i++) { + expect(evaluateCheck([i], 0)).toEqual([{ result: i, checkTargetNumber: 0, active: false, discarded: true }]); + } + }); + + it("should roll a die even when the checkTargetNumber is 0 and fumble on 20", () => { + expect(evaluateCheck([20], 0)).toEqual([ + { result: 20, checkTargetNumber: 0, active: false, discarded: true, failure: true }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is < 0 and coup on 1", () => { + expect(evaluateCheck([1], -1)).toEqual([ + { result: 1, checkTargetNumber: -1, active: true, discarded: false, success: true, count: -1 }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is < 0 and fail on values > 1 and < 20", () => { + for (let i = 2; i < 20; i++) { + expect(evaluateCheck([i], -1)).toEqual([{ result: i, checkTargetNumber: -1, active: false, discarded: true }]); + } + }); + + it("should roll a die even when the checkTargetNumber is < 0 and fumble on 20", () => { + expect(evaluateCheck([20], -1)).toEqual([ + { result: 20, checkTargetNumber: -1, active: false, discarded: true, failure: true }, + ]); + }); +}); + +describe("evaluateCheck with a single die and coup / fumble modification", () => { + const maximumCoupResult = 2; + const minimumFumbleResult = 19; + + it("should assign the checkTargetNumber to the single die and coup on 'maximumCoupResult'", () => { + expect(evaluateCheck([maximumCoupResult], 4, { maximumCoupResult })).toEqual([ + { + result: maximumCoupResult, + checkTargetNumber: 4, + active: true, + discarded: false, + success: true, + count: 4, + }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and not coup on lower edge case 'maximumCoupResult + 1'", () => { + expect(evaluateCheck([maximumCoupResult + 1], 4, { maximumCoupResult })).toEqual([ + { result: maximumCoupResult + 1, checkTargetNumber: 4, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and fumble on 'minimumFumbleResultResult'", () => { + expect(evaluateCheck([minimumFumbleResult], 20, { minimumFumbleResult })).toEqual([ + { result: minimumFumbleResult, checkTargetNumber: 20, active: true, discarded: false, failure: true }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and not fumble on upper edge case 'minimumFumbleResult - 1'", () => { + expect(evaluateCheck([minimumFumbleResult - 1], 20, { minimumFumbleResult })).toEqual([ + { result: minimumFumbleResult - 1, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is 0 and coup on 'maximumCoupResult'", () => { + expect(evaluateCheck([maximumCoupResult], 0, { maximumCoupResult })).toEqual([ + { + result: maximumCoupResult, + checkTargetNumber: 0, + active: true, + discarded: false, + success: true, + count: 0, + }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is 0 and fail on '> maximumCoupResult and < minimumFumbleResult", () => { + for (let i = maximumCoupResult + 1; i < minimumFumbleResult; i++) { + expect(evaluateCheck([i], 0, { maximumCoupResult, minimumFumbleResult })).toEqual([ + { result: i, checkTargetNumber: 0, active: false, discarded: true }, + ]); + } + }); + + it("should roll a die even when the checkTargetNumber is 0 and fumble on 'minimumFumbleResult'", () => { + expect(evaluateCheck([minimumFumbleResult], 0, { minimumFumbleResult })).toEqual([ + { result: minimumFumbleResult, checkTargetNumber: 0, active: false, discarded: true, failure: true }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is < 0 and coup on 'maximumCoupResult'", () => { + expect(evaluateCheck([maximumCoupResult], -1, { maximumCoupResult })).toEqual([ + { + result: maximumCoupResult, + checkTargetNumber: -1, + active: true, + discarded: false, + success: true, + count: -1, + }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is < 0 and fail on '> maximumCoupResult and < minimumFumbleResult", () => { + for (let i = maximumCoupResult + 1; i < minimumFumbleResult; i++) { + expect(evaluateCheck([i], -1, { maximumCoupResult, minimumFumbleResult })).toEqual([ + { result: i, checkTargetNumber: -1, active: false, discarded: true }, + ]); + } + }); + + it("should roll a die even when the checkTargetNumber is < 0 and fumble on 'minimumFumbleResult'", () => { + expect(evaluateCheck([minimumFumbleResult], -1, { minimumFumbleResult })).toEqual([ + { result: minimumFumbleResult, checkTargetNumber: -1, active: false, discarded: true, failure: true }, + ]); + }); +}); + +describe("evaluateCheck with multiple dice", () => { + it("should assign the checkTargetNumber for the last sub check to the lowest non coup, even if the first is '20'.", () => { + expect(evaluateCheck([20, 6, 15], 48)).toEqual([ + { result: 20, checkTargetNumber: 20, active: true, discarded: false, failure: true }, + { result: 6, checkTargetNumber: 8, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if there are only coups.", () => { + expect(evaluateCheck([1, 1, 1], 48)).toEqual([ + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first lowest die, even if it is higher than that value.", () => { + expect(evaluateCheck([15, 15, 15], 48)).toEqual([ + { result: 15, checkTargetNumber: 8, active: false, discarded: true }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if its sum with the lowest non coup is high enough.", () => { + expect(evaluateCheck([15, 15, 1], 48)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if its sum with the lowest non coup is high enough, even if the last die is '20'.", () => { + expect(evaluateCheck([15, 1, 20], 48)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 20, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when all dice are successes.", () => { + expect(evaluateCheck([15, 4, 12], 46)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 4, checkTargetNumber: 6, active: true, discarded: false }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when one dice is a failure.", () => { + expect(evaluateCheck([15, 8, 12], 46)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 'lowest dice higher than last check target number and coups thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([15, 1, 8], 46)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([1, 8], 24)).toEqual([ + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 4, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups thrown'-edge case, coup used for last sub CTN.", () => { + expect(evaluateCheck([1, 19], 38)).toEqual([ + { result: 1, checkTargetNumber: 18, active: true, discarded: false, success: true, count: 18 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when there is more than one coup and a coup is used for the last sub CTN", () => { + expect(evaluateCheck([1, 1, 15], 48)).toEqual([ + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); +}); + +describe("evaluateCheck with multiple dice and coup / fumble modification", () => { + it("should assign the checkTargetNumber for the last sub check to the lowest non coup and fumble if the first is '19'.", () => { + expect(evaluateCheck([19, 15, 6], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 19, checkTargetNumber: 20, active: true, discarded: false, failure: true }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 6, checkTargetNumber: 8, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if there are only coups ('1' and '2').", () => { + expect(evaluateCheck([2, 1, 2], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first lowest die, even if it is higher than that value.", () => { + expect(evaluateCheck([15, 15, 15], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 8, active: false, discarded: true }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough.", () => { + expect(evaluateCheck([15, 15, 2], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough, even if the last die is '20'.", () => { + expect(evaluateCheck([15, 2, 20], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 20, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough, even if the last die is '19'.", () => { + expect(evaluateCheck([15, 2, 19], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when all dice are successes.", () => { + expect(evaluateCheck([15, 4, 12], 46, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 4, checkTargetNumber: 6, active: true, discarded: false }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when one dice is a failure.", () => { + expect(evaluateCheck([15, 8, 12], 46, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([15, 2, 8], 46, { maximumCoupResult: 2 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([2, 8], 24, { maximumCoupResult: 2 })).toEqual([ + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 4, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup used for last sub CTN.", () => { + expect(evaluateCheck([2, 19], 38, { maximumCoupResult: 2 })).toEqual([ + { result: 2, checkTargetNumber: 18, active: true, discarded: false, success: true, count: 18 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when there is more than one coup ('1' and '2') and a coup is used for the last sub CTN", () => { + expect(evaluateCheck([1, 2, 15], 48, { maximumCoupResult: 2 })).toEqual([ + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should use all the dice if they are coups, even if they are higher than the checkTargetNumber", () => { + expect(evaluateCheck([18, 19, 17], 48, { maximumCoupResult: 19 })).toEqual([ + { result: 18, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 17, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + ]); + }); +}); diff --git a/spec/documents/item/spell/calculate-spell-price.spec.ts b/spec/documents/item/spell/calculate-spell-price.spec.ts new file mode 100644 index 00000000..4f97de6c --- /dev/null +++ b/spec/documents/item/spell/calculate-spell-price.spec.ts @@ -0,0 +1,234 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { describe, expect, it } from "vitest"; + +import { calculateSpellPrice } from "../../../../src/documents/item/spell/calculate-spell-price"; + +import type { CooldownDuration, DS4SpellDataSourceData } from "../../../../src/documents/item/spell/spell-data-source"; + +const defaultData: DS4SpellDataSourceData = { + description: "", + equipped: false, + spellType: "spellcasting", + spellModifier: { + numerical: 0, + complex: "", + }, + allowsDefense: false, + spellGroups: { + lightning: false, + earth: false, + water: false, + ice: false, + fire: false, + healing: false, + light: false, + air: false, + transport: false, + damage: false, + shadow: false, + protection: false, + mindAffecting: false, + demonology: false, + necromancy: false, + transmutation: false, + area: false, + }, + maxDistance: { + value: "", + unit: "meter", + }, + effectRadius: { + value: "", + unit: "meter", + }, + duration: { + value: "", + unit: "custom", + }, + cooldownDuration: "0r", + minimumLevels: { + healer: null, + wizard: null, + sorcerer: null, + }, +}; + +type TestCase = { + minimumLevel: number | null; + expected: number | null; +}; + +type CombinedTestCase = { + minimumLevels: DS4SpellDataSourceData["minimumLevels"]; + expected: number | null; + description: string; +}; + +const testCases: Record = { + healer: [ + { minimumLevel: null, expected: null }, + { minimumLevel: 1, expected: 10 }, + { minimumLevel: 2, expected: 45 }, + { minimumLevel: 3, expected: 80 }, + { minimumLevel: 4, expected: 115 }, + { minimumLevel: 5, expected: 150 }, + { minimumLevel: 6, expected: 185 }, + { minimumLevel: 7, expected: 220 }, + { minimumLevel: 8, expected: 255 }, + { minimumLevel: 9, expected: 290 }, + { minimumLevel: 10, expected: 325 }, + { minimumLevel: 11, expected: 360 }, + { minimumLevel: 12, expected: 395 }, + { minimumLevel: 13, expected: 430 }, + { minimumLevel: 14, expected: 465 }, + { minimumLevel: 15, expected: 500 }, + { minimumLevel: 16, expected: 535 }, + { minimumLevel: 17, expected: 570 }, + { minimumLevel: 18, expected: 605 }, + { minimumLevel: 19, expected: 640 }, + { minimumLevel: 20, expected: 675 }, + ], + sorcerer: [ + { minimumLevel: null, expected: null }, + { minimumLevel: 1, expected: 10 }, + { minimumLevel: 2, expected: 75 }, + { minimumLevel: 3, expected: 140 }, + { minimumLevel: 4, expected: 205 }, + { minimumLevel: 5, expected: 270 }, + { minimumLevel: 6, expected: 335 }, + { minimumLevel: 7, expected: 400 }, + { minimumLevel: 8, expected: 465 }, + { minimumLevel: 9, expected: 530 }, + { minimumLevel: 10, expected: 595 }, + { minimumLevel: 11, expected: 660 }, + { minimumLevel: 12, expected: 725 }, + { minimumLevel: 13, expected: 790 }, + { minimumLevel: 14, expected: 855 }, + { minimumLevel: 15, expected: 920 }, + { minimumLevel: 16, expected: 985 }, + { minimumLevel: 17, expected: 1050 }, + { minimumLevel: 18, expected: 1115 }, + { minimumLevel: 19, expected: 1180 }, + { minimumLevel: 20, expected: 1245 }, + ], + wizard: [ + { minimumLevel: null, expected: null }, + { minimumLevel: 1, expected: 10 }, + { minimumLevel: 2, expected: 60 }, + { minimumLevel: 3, expected: 110 }, + { minimumLevel: 4, expected: 160 }, + { minimumLevel: 5, expected: 210 }, + { minimumLevel: 6, expected: 260 }, + { minimumLevel: 7, expected: 310 }, + { minimumLevel: 8, expected: 360 }, + { minimumLevel: 9, expected: 410 }, + { minimumLevel: 10, expected: 460 }, + { minimumLevel: 11, expected: 510 }, + { minimumLevel: 12, expected: 560 }, + { minimumLevel: 13, expected: 610 }, + { minimumLevel: 14, expected: 660 }, + { minimumLevel: 15, expected: 710 }, + { minimumLevel: 16, expected: 760 }, + { minimumLevel: 17, expected: 810 }, + { minimumLevel: 18, expected: 860 }, + { minimumLevel: 19, expected: 910 }, + { minimumLevel: 20, expected: 960 }, + ], +}; + +function buildCombinedTestCases(): CombinedTestCase[] { + const combinedTestCases: CombinedTestCase[] = []; + + // permutation test cases + const isRelevantPermutationTestCase = (t: TestCase) => + ([null, 1, 10, 20] as (number | null)[]).includes(t.minimumLevel); + + for (const healerTestCase of testCases.healer.filter(isRelevantPermutationTestCase)) { + for (const sorcererTestCase of testCases.sorcerer.filter(isRelevantPermutationTestCase)) { + for (const wizardTestCase of testCases.wizard.filter(isRelevantPermutationTestCase)) { + const expected = + healerTestCase.expected !== null || sorcererTestCase.expected !== null || wizardTestCase.expected !== null + ? Math.min( + healerTestCase.expected ?? Infinity, + sorcererTestCase.expected ?? Infinity, + wizardTestCase.expected ?? Infinity, + ) + : null; + const minimumLevels = { + healer: healerTestCase.minimumLevel, + sorcerer: sorcererTestCase.minimumLevel, + wizard: wizardTestCase.minimumLevel, + }; + const description = JSON.stringify(minimumLevels); + combinedTestCases.push({ + minimumLevels, + expected, + description, + }); + } + } + } + + // single test cases + const isRelevantSingleTestCase = (t: TestCase) => t.minimumLevel !== null; + + for (const spellCasterClass of ["healer", "sorcerer", "wizard"] as const) { + for (const testCase of testCases[spellCasterClass].filter(isRelevantSingleTestCase)) { + const minimumLevels = { + ...defaultData.minimumLevels, + [spellCasterClass]: testCase.minimumLevel, + }; + const description = JSON.stringify(minimumLevels); + combinedTestCases.push({ + minimumLevels, + expected: testCase.expected, + description, + }); + } + } + + return combinedTestCases; +} + +describe("calculateSpellPrice", () => { + const cooldownDurations: { cooldownDuration: CooldownDuration; factor: number }[] = [ + { cooldownDuration: "0r", factor: 1 }, + { cooldownDuration: "1r", factor: 1 }, + { cooldownDuration: "2r", factor: 1 }, + { cooldownDuration: "5r", factor: 1 }, + { cooldownDuration: "10r", factor: 1 }, + { cooldownDuration: "100r", factor: 1 }, + { cooldownDuration: "1d", factor: 2 }, + { cooldownDuration: "d20d", factor: 3 }, + ]; + + describe.each(cooldownDurations)( + "with cooldown duration set to $cooldownDuration", + ({ cooldownDuration, factor }) => { + const dataWithCooldownDuration = { + ...defaultData, + cooldownDuration, + }; + + it.each(buildCombinedTestCases())( + `returns ${factor} × $expected if the minimum leves are $description`, + ({ minimumLevels, expected }) => { + // given + const data: DS4SpellDataSourceData = { + ...dataWithCooldownDuration, + minimumLevels, + }; + + // when + const spellPrice = calculateSpellPrice(data); + + // then + expect(spellPrice).toBe(expected !== null ? expected * factor : expected); + }, + ); + }, + ); +}); diff --git a/spec/expression-evaluation/evaluator.spec.ts b/spec/expression-evaluation/evaluator.spec.ts new file mode 100644 index 00000000..57b32abc --- /dev/null +++ b/spec/expression-evaluation/evaluator.spec.ts @@ -0,0 +1,90 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { describe, expect, it } from "vitest"; + +import { defaultEvaluator, Evaluator, mathEvaluator } from "../../src/expression-evaluation/evaluator"; + +describe("Evaluator", () => { + it("evaluates expressions that only use identifiers according to the given predicate", () => { + // given + const expression = "typeof 'foo' === 'string' ? 42 : null"; + + // when + const result = defaultEvaluator.evaluate(expression); + + // then + expect(result).toEqual(42); + }); + + it("fails to evaluate expressions that contain identifiers that are not allowed by the predicate", () => { + // given + const expression = "typeof 'foo' === 'string' ? 42 : function (){}"; + + // when + const evaluate = () => defaultEvaluator.evaluate(expression); + + // then + expect(evaluate).toThrowError("'function' is not an allowed identifier."); + }); + + it("fails to evaluate expressions that contain invalid tokens", () => { + // given + const expression = "1;"; + + // when + const evaluate = () => defaultEvaluator.evaluate(expression); + + // then + expect(evaluate).toThrowError("Invalid or unexpected token (1)"); + }); + + it("fails to evaluate expressions that contain arrow functions", () => { + // given + const expression = "(() => 1)()"; + + // when + const evaluate = () => defaultEvaluator.evaluate(expression); + + // then + expect(evaluate).toThrowError("Invalid or unexpected token (4)"); + }); + + it("makes the given context available", () => { + // given + const context = { floor: Math.floor }; + const evaluator = new Evaluator({ context }); + const expression = "floor(0.5)"; + + // when + const result = evaluator.evaluate(expression); + + // then + expect(result).toEqual(0); + }); + + describe("mathEvaluator", () => { + it("makes the given context available", () => { + // given + const expression = "sqrt(sin(PI))"; + + // when + const result = mathEvaluator.evaluate(expression); + + // then + expect(result).toEqual(Math.sqrt(Math.sin(Math.PI))); + }); + + it("does not give acces to the function constructor", () => { + // given + const expression = "sqrt.constructor"; + + // when + const evaluate = () => mathEvaluator.evaluate(expression); + + // then + expect(evaluate).toThrowError("'constructor' is not an allowed identifier."); + }); + }); +}); diff --git a/spec/expression-evaluation/lexer.spec.ts b/spec/expression-evaluation/lexer.spec.ts new file mode 100644 index 00000000..ffb9a2b2 --- /dev/null +++ b/spec/expression-evaluation/lexer.spec.ts @@ -0,0 +1,602 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { describe, expect, it } from "vitest"; + +import { Lexer } from "../../src/expression-evaluation/lexer"; + +import type { Token } from "../../src/expression-evaluation/grammar"; + +describe("Lexer", () => { + const singleOperatorTestCases: { input: string; expected: Token[] }[] = [ + { + input: "+", + expected: [ + { type: "+", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "-", + expected: [ + { type: "-", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "*", + expected: [ + { type: "*", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "**", + expected: [ + { type: "**", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "/", + expected: [ + { type: "/", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "%", + expected: [ + { type: "%", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "===", + expected: [ + { type: "===", pos: 0 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "!==", + expected: [ + { type: "!==", pos: 0 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "==", + expected: [ + { type: "==", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "<", + expected: [ + { type: "<", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "<=", + expected: [ + { type: "<=", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: ">", + expected: [ + { type: ">", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: ">=", + expected: [ + { type: ">=", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "&&", + expected: [ + { type: "&&", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "||", + expected: [ + { type: "||", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "&", + expected: [ + { type: "&", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "|", + expected: [ + { type: "|", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "<<", + expected: [ + { type: "<<", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: ">>>", + expected: [ + { type: ">>>", pos: 0 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: ".", + expected: [ + { type: ".", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "?.", + expected: [ + { type: "?.", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "??", + expected: [ + { type: "??", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "?", + expected: [ + { type: "?", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: ":", + expected: [ + { type: ":", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "(", + expected: [ + { type: "(", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: ")", + expected: [ + { type: ")", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "[", + expected: [ + { type: "[", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "]", + expected: [ + { type: "]", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: ",", + expected: [ + { type: ",", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "{", + expected: [ + { type: "{", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "}", + expected: [ + { type: "}", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + ]; + + const singleNumberTestCases: { input: string; expected: Token[] }[] = [ + { + input: "1", + expected: [ + { type: "number", symbol: "1", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "42", + expected: [ + { type: "number", symbol: "42", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "42.9", + expected: [ + { type: "number", symbol: "42.9", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: ".9", + expected: [ + { type: "number", symbol: ".9", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "1_1", + expected: [ + { type: "number", symbol: "1_1", pos: 0 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "10_1", + expected: [ + { type: "number", symbol: "10_1", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "1_1_1", + expected: [ + { type: "number", symbol: "1_1_1", pos: 0 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: ".1_1", + expected: [ + { type: "number", symbol: ".1_1", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + ]; + + const invalidNumberTestCases: { input: string; expected: Token[] }[] = [ + { input: "1.1.1", expected: [{ type: "invalid", pos: 0 }] }, + { input: "1__1", expected: [{ type: "invalid", pos: 0 }] }, + { input: "1_", expected: [{ type: "invalid", pos: 0 }] }, + { input: "1._1", expected: [{ type: "invalid", pos: 0 }] }, + { input: "0_1", expected: [{ type: "invalid", pos: 0 }] }, + { input: "00_1", expected: [{ type: "invalid", pos: 0 }] }, + ]; + + const singleIdentifierTestCases: { input: string; expected: Token[] }[] = [ + { + input: "foo", + expected: [ + { type: "iden", symbol: "foo", pos: 0 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "_foo", + expected: [ + { type: "iden", symbol: "_foo", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "$foo", + expected: [ + { type: "iden", symbol: "$foo", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "foo1", + expected: [ + { type: "iden", symbol: "foo1", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "_foo1_", + expected: [ + { type: "iden", symbol: "_foo1_", pos: 0 }, + { type: "eof", pos: 6 }, + ], + }, + { + input: "μ", + expected: [ + { type: "iden", symbol: "μ", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "._1", + expected: [ + { type: ".", pos: 0 }, + { type: "iden", symbol: "_1", pos: 1 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "true", + expected: [ + { type: "iden", symbol: "true", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "false", + expected: [ + { type: "iden", symbol: "false", pos: 0 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: "null", + expected: [ + { type: "iden", symbol: "null", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "undefined", + expected: [ + { type: "iden", symbol: "undefined", pos: 0 }, + { type: "eof", pos: 9 }, + ], + }, + ]; + + const invalidIdentifierTestCases: { input: string; expected: Token[] }[] = [ + { + input: "1foo", + expected: [ + { type: "number", symbol: "1", pos: 0 }, + { type: "iden", symbol: "foo", pos: 1 }, + { type: "eof", pos: 4 }, + ], + }, + { input: "↓", expected: [{ type: "invalid", pos: 0 }] }, + { input: '"', expected: [{ type: "invalid", pos: 0 }] }, + ]; + + const singleStringTestCases: { input: string; expected: Token[] }[] = [ + { + input: '""', + expected: [ + { type: "string", symbol: '""', pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: '"foo"', + expected: [ + { type: "string", symbol: '"foo"', pos: 0 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: '"\\""', + expected: [ + { type: "string", symbol: '"\\""', pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: '"\\\'"', + expected: [ + { type: "string", symbol: '"\\\'"', pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "''", + expected: [ + { type: "string", symbol: "''", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "'foo'", + expected: [ + { type: "string", symbol: "'foo'", pos: 0 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: "'\\''", + expected: [ + { type: "string", symbol: "'\\''", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "'\\\"'", + expected: [ + { type: "string", symbol: "'\\\"'", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "``", + expected: [ + { type: "string", symbol: "``", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "`foo`", + expected: [ + { type: "string", symbol: "`foo`", pos: 0 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: "`\\``", + expected: [ + { type: "string", symbol: "`\\``", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: '`\\"`', + expected: [ + { type: "string", symbol: '`\\"`', pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + ]; + + const invalidStringTestCases: { input: string; expected: Token[] }[] = [ + { input: '"', expected: [{ type: "invalid", pos: 0 }] }, + { input: '"\\"', expected: [{ type: "invalid", pos: 0 }] }, + { input: "'", expected: [{ type: "invalid", pos: 0 }] }, + { input: "'\\'", expected: [{ type: "invalid", pos: 0 }] }, + ]; + + const whiteSpaceTestCases: { input: string; expected: Token[] }[] = [ + { input: " ", expected: [{ type: "eof", pos: 1 }] }, + { input: " ", expected: [{ type: "eof", pos: 3 }] }, + { input: "\n", expected: [{ type: "eof", pos: 1 }] }, + { input: " \n", expected: [{ type: "eof", pos: 2 }] }, + { input: " ", expected: [{ type: "eof", pos: 1 }] }, + ]; + + const complicatedTermTestCases: { input: string; expected: Token[] }[] = [ + { + input: "5x", + expected: [ + { type: "number", symbol: "5", pos: 0 }, + { type: "iden", symbol: "x", pos: 1 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "5*x", + expected: [ + { type: "number", symbol: "5", pos: 0 }, + { type: "*", pos: 1 }, + { type: "iden", symbol: "x", pos: 2 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "5 * x", + expected: [ + { type: "number", symbol: "5", pos: 0 }, + { type: "*", pos: 2 }, + { type: "iden", symbol: "x", pos: 4 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: "(5 * 5 + 2) / 1.2 === 'foo'", + expected: [ + { type: "(", pos: 0 }, + { type: "number", symbol: "5", pos: 1 }, + { type: "*", pos: 3 }, + { type: "number", symbol: "5", pos: 5 }, + { type: "+", pos: 7 }, + { type: "number", symbol: "2", pos: 9 }, + { type: ")", pos: 10 }, + { type: "/", pos: 12 }, + { type: "number", symbol: "1.2", pos: 14 }, + { type: "===", pos: 18 }, + { type: "string", symbol: "'foo'", pos: 22 }, + { type: "eof", pos: 27 }, + ], + }, + { + input: "(() => {console.log('foo'); return 1;})()", + expected: [ + { type: "(", pos: 0 }, + { type: "(", pos: 1 }, + { type: ")", pos: 2 }, + { type: "invalid", pos: 4 }, + ], + }, + { + input: "(function() {console.log('foo'); return 1;})()", + expected: [ + { type: "(", pos: 0 }, + { type: "iden", symbol: "function", pos: 1 }, + { type: "(", pos: 9 }, + { type: ")", pos: 10 }, + { type: "{", pos: 12 }, + { type: "iden", symbol: "console", pos: 13 }, + { type: ".", pos: 20 }, + { type: "iden", symbol: "log", pos: 21 }, + { type: "(", pos: 24 }, + { type: "string", symbol: "'foo'", pos: 25 }, + { type: ")", pos: 30 }, + { type: "invalid", pos: 31 }, + ], + }, + { + input: "'ranged' === 'ranged'", + expected: [ + { type: "string", symbol: "'ranged'", pos: 0 }, + { type: "===", pos: 9 }, + { type: "string", symbol: "'ranged'", pos: 13 }, + { type: "eof", pos: 21 }, + ], + }, + ]; + + it.each([ + ...singleOperatorTestCases, + ...singleNumberTestCases, + ...invalidNumberTestCases, + ...singleIdentifierTestCases, + ...invalidIdentifierTestCases, + ...singleStringTestCases, + ...invalidStringTestCases, + ...whiteSpaceTestCases, + ...complicatedTermTestCases, + ])("lexes $input correctly", ({ input, expected }) => { + // when + const result = consume(new Lexer(input)); + + // then + expect(result).toEqual(expected); + }); +}); + +function consume(iterable: Iterable): T[] { + const result: T[] = []; + for (const value of iterable) { + result.push(value); + } + return result; +} diff --git a/spec/expression-evaluation/validator.spec.ts b/spec/expression-evaluation/validator.spec.ts new file mode 100644 index 00000000..52d556d7 --- /dev/null +++ b/spec/expression-evaluation/validator.spec.ts @@ -0,0 +1,125 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { describe, expect, it } from "vitest"; + +import { literals, safeOperators } from "../../src/expression-evaluation/grammar"; +import { Validator } from "../../src/expression-evaluation/validator"; + +describe("Validator", () => { + it("allows identifier according to the given predicate", () => { + // given + const predicate = (identifier: string) => identifier === "true"; + const validator = new Validator(predicate); + const input = "true"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).not.toThrow(); + }); + + it("disallows identifier according to the given predicate", () => { + // given + const predicate = (identifier: string) => identifier === "false"; + const validator = new Validator(predicate); + const input = "true"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).toThrowError("'true' is not an allowed identifier"); + }); + + it("allows multiple identifiers according to the given predicate", () => { + // given + const predicate = (identifier: string) => identifier === "true" || identifier === "null"; + const validator = new Validator(predicate); + const input = "true null"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).not.toThrow(); + }); + + it("allows multiple identifiers in a more complex expression according to the given rule", () => { + // given + const predicate = (identifier: string) => identifier === "true" || identifier === "null"; + const validator = new Validator(predicate); + const input = "true === null"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).not.toThrow(); + }); + + it("mentions the first not allowed identifier in the thrown errror", () => { + // given + const predicate = (identifier: string) => identifier === "true" || identifier === "null"; + const validator = new Validator(predicate); + const input = "true === null && undefined === false"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).toThrowError("'undefined' is not an allowed identifier."); + }); + + it("disallows invalid invalid tokens", () => { + // given + const validator = new Validator(); + const input = ";"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).toThrowError("Invalid or unexpected token (0)"); + }); + + it("allows a complicated valid expression", () => { + // given + const predicate = (identifier: string) => [...safeOperators, ...literals, "floor", "random"].includes(identifier); + const validator = new Validator(predicate); + const input = "typeof (floor(random() * 5) / 2) === 'number' ? 42 : 'foo'"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).not.toThrow(); + }); + + it("disallows a complicated expression if it contains a disallowed identifier", () => { + // given + const predicate = (identifier: string) => [...safeOperators, ...literals, "ceil"].includes(identifier); + const validator = new Validator(predicate); + const input = "ceil.constructor('alert(1); return 1;')()"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).toThrowError("'constructor' is not an allowed identifier."); + }); + + it("disallows arrow functions", () => { + // given + const validator = new Validator(); + const input = "() => {}"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).toThrowError("Invalid or unexpected token (3)"); + }); +}); diff --git a/spec/localization/localization.spec.ts b/spec/localization/localization.spec.ts index 4c62e45a..dd733db1 100644 --- a/spec/localization/localization.spec.ts +++ b/spec/localization/localization.spec.ts @@ -2,17 +2,15 @@ // // SPDX-License-Identifier: MIT -import * as fs from "fs-extra"; -import * as path from "path"; +import { describe, expect, it } from "vitest"; + +import de from "../../lang/de.json"; +import en from "../../lang/en.json"; describe("English and german localization files", () => { - const localizationPath = "./lang/"; - const en: Record = fs.readJSONSync(path.join(localizationPath, "en.json")); - const de: Record = fs.readJSONSync(path.join(localizationPath, "de.json")); - - it("should have the same keys.", () => { - const deKeys = Object.keys(de); - const enKeys = Object.keys(en); - expect(deKeys).toEqual(enKeys); - }); + it("should have the same keys.", () => { + const deKeys = Object.keys(de); + const enKeys = Object.keys(en); + expect(deKeys).toEqual(enKeys); + }); }); diff --git a/spec/rolls/check-evaluation.spec.ts b/spec/rolls/check-evaluation.spec.ts deleted file mode 100644 index bde1ddbf..00000000 --- a/spec/rolls/check-evaluation.spec.ts +++ /dev/null @@ -1,394 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// -// SPDX-License-Identifier: MIT - -import evaluateCheck from "../../src/rolls/check-evaluation"; - -class StubGame { - constructor() { - this.i18n = { - localize: (key: string) => key, - }; - } - i18n: { - localize: (key: string) => string; - }; -} - -const game = new StubGame(); - -Object.defineProperties(globalThis, { - game: { value: game }, - Game: { value: StubGame }, -}); - -describe("evaluateCheck with no dice", () => { - it("should throw an error.", () => { - expect(() => evaluateCheck([], 10)).toThrow("DS4.ErrorInvalidNumberOfDice"); - }); -}); - -describe("evaluateCheck with more dice than required by the checkTargetNumber", () => { - it("should throw an error.", () => { - expect(() => evaluateCheck([10, 10], 10)).toThrow("DS4.ErrorInvalidNumberOfDice"); - }); -}); - -describe("evaluateCheck with less dice than required by the checkTargetNumber", () => { - it("should throw an error.", () => { - expect(() => evaluateCheck([10], 21)).toThrow("DS4.ErrorInvalidNumberOfDice"); - }); -}); - -describe("evaluateCheck with a single die", () => { - it("should assign the checkTargetNumber to the single die and be successful.", () => { - expect(evaluateCheck([4], 12)).toEqual([{ result: 4, checkTargetNumber: 12, active: true, discarded: false }]); - }); - - it("should assign the checkTargetNumber to the single die on upper edge case and be successful.", () => { - expect(evaluateCheck([4], 4)).toEqual([{ result: 4, checkTargetNumber: 4, active: true, discarded: false }]); - }); - - it("should assign the checkTargetNumber to the single die on lower edge case not be successful.", () => { - expect(evaluateCheck([5], 4)).toEqual([{ result: 5, checkTargetNumber: 4, active: false, discarded: true }]); - }); - - it("should assign the checkTargetNumber to the single die and not be successful on upper edge case '19'", () => { - expect(evaluateCheck([19], 4)).toEqual([{ result: 19, checkTargetNumber: 4, active: false, discarded: true }]); - }); - - it("should assign the checkTargetNumber to the single die and coup on '1'", () => { - expect(evaluateCheck([1], 4)).toEqual([ - { result: 1, checkTargetNumber: 4, active: true, discarded: false, success: true, count: 4 }, - ]); - }); - - it("should assign the checkTargetNumber to the single die and fumble on '20'", () => { - expect(evaluateCheck([20], 4)).toEqual([ - { result: 20, checkTargetNumber: 4, active: false, discarded: true, failure: true }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is 0 and coup on 1", () => { - expect(evaluateCheck([1], 0)).toEqual([ - { result: 1, checkTargetNumber: 0, active: true, discarded: false, success: true, count: 0 }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is 0 and fail on values > 1 and < 20", () => { - for (let i = 2; i < 20; i++) { - expect(evaluateCheck([i], 0)).toEqual([ - { result: i, checkTargetNumber: 0, active: false, discarded: true }, - ]); - } - }); - - it("should roll a die even when the checkTargetNumber is 0 and fumble on 20", () => { - expect(evaluateCheck([20], 0)).toEqual([ - { result: 20, checkTargetNumber: 0, active: false, discarded: true, failure: true }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is < 0 and coup on 1", () => { - expect(evaluateCheck([1], -1)).toEqual([ - { result: 1, checkTargetNumber: -1, active: true, discarded: false, success: true, count: -1 }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is < 0 and fail on values > 1 and < 20", () => { - for (let i = 2; i < 20; i++) { - expect(evaluateCheck([i], -1)).toEqual([ - { result: i, checkTargetNumber: -1, active: false, discarded: true }, - ]); - } - }); - - it("should roll a die even when the checkTargetNumber is < 0 and fumble on 20", () => { - expect(evaluateCheck([20], -1)).toEqual([ - { result: 20, checkTargetNumber: -1, active: false, discarded: true, failure: true }, - ]); - }); -}); - -describe("evaluateCheck with a single die and coup / fumble modification", () => { - const maximumCoupResult = 2; - const minimumFumbleResult = 19; - - it("should assign the checkTargetNumber to the single die and coup on 'maximumCoupResult'", () => { - expect(evaluateCheck([maximumCoupResult], 4, { maximumCoupResult })).toEqual([ - { - result: maximumCoupResult, - checkTargetNumber: 4, - active: true, - discarded: false, - success: true, - count: 4, - }, - ]); - }); - - it("should assign the checkTargetNumber to the single die and not coup on lower edge case 'maximumCoupResult + 1'", () => { - expect(evaluateCheck([maximumCoupResult + 1], 4, { maximumCoupResult })).toEqual([ - { result: maximumCoupResult + 1, checkTargetNumber: 4, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber to the single die and fumble on 'minimumFumbleResultResult'", () => { - expect(evaluateCheck([minimumFumbleResult], 20, { minimumFumbleResult })).toEqual([ - { result: minimumFumbleResult, checkTargetNumber: 20, active: true, discarded: false, failure: true }, - ]); - }); - - it("should assign the checkTargetNumber to the single die and not fumble on upper edge case 'minimumFumbleResult - 1'", () => { - expect(evaluateCheck([minimumFumbleResult - 1], 20, { minimumFumbleResult })).toEqual([ - { result: minimumFumbleResult - 1, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is 0 and coup on 'maximumCoupResult'", () => { - expect(evaluateCheck([maximumCoupResult], 0, { maximumCoupResult })).toEqual([ - { - result: maximumCoupResult, - checkTargetNumber: 0, - active: true, - discarded: false, - success: true, - count: 0, - }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is 0 and fail on '> maximumCoupResult and < minimumFumbleResult", () => { - for (let i = maximumCoupResult + 1; i < minimumFumbleResult; i++) { - expect(evaluateCheck([i], 0, { maximumCoupResult, minimumFumbleResult })).toEqual([ - { result: i, checkTargetNumber: 0, active: false, discarded: true }, - ]); - } - }); - - it("should roll a die even when the checkTargetNumber is 0 and fumble on 'minimumFumbleResult'", () => { - expect(evaluateCheck([minimumFumbleResult], 0, { minimumFumbleResult })).toEqual([ - { result: minimumFumbleResult, checkTargetNumber: 0, active: false, discarded: true, failure: true }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is < 0 and coup on 'maximumCoupResult'", () => { - expect(evaluateCheck([maximumCoupResult], -1, { maximumCoupResult })).toEqual([ - { - result: maximumCoupResult, - checkTargetNumber: -1, - active: true, - discarded: false, - success: true, - count: -1, - }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is < 0 and fail on '> maximumCoupResult and < minimumFumbleResult", () => { - for (let i = maximumCoupResult + 1; i < minimumFumbleResult; i++) { - expect(evaluateCheck([i], -1, { maximumCoupResult, minimumFumbleResult })).toEqual([ - { result: i, checkTargetNumber: -1, active: false, discarded: true }, - ]); - } - }); - - it("should roll a die even when the checkTargetNumber is < 0 and fumble on 'minimumFumbleResult'", () => { - expect(evaluateCheck([minimumFumbleResult], -1, { minimumFumbleResult })).toEqual([ - { result: minimumFumbleResult, checkTargetNumber: -1, active: false, discarded: true, failure: true }, - ]); - }); -}); - -describe("evaluateCheck with multiple dice", () => { - it("should assign the checkTargetNumber for the last sub check to the lowest non coup, even if the first is '20'.", () => { - expect(evaluateCheck([20, 6, 15], 48)).toEqual([ - { result: 20, checkTargetNumber: 20, active: true, discarded: false, failure: true }, - { result: 6, checkTargetNumber: 8, active: true, discarded: false }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup if there are only coups.", () => { - expect(evaluateCheck([1, 1, 1], 48)).toEqual([ - { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first lowest die, even if it is higher than that value.", () => { - expect(evaluateCheck([15, 15, 15], 48)).toEqual([ - { result: 15, checkTargetNumber: 8, active: false, discarded: true }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup if its sum with the lowest non coup is high enough.", () => { - expect(evaluateCheck([15, 15, 1], 48)).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup if its sum with the lowest non coup is high enough, even if the last die is '20'.", () => { - expect(evaluateCheck([15, 1, 20], 48)).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 20, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when all dice are successes.", () => { - expect(evaluateCheck([15, 4, 12], 46)).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 4, checkTargetNumber: 6, active: true, discarded: false }, - { result: 12, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when one dice is a failure.", () => { - expect(evaluateCheck([15, 8, 12], 46)).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 8, checkTargetNumber: 6, active: false, discarded: true }, - { result: 12, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 'lowest dice higher than last check target number and coups thrown'-edge case, coup not used for last sub CTN.", () => { - expect(evaluateCheck([15, 1, 8], 46)).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 8, checkTargetNumber: 6, active: false, discarded: true }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups thrown'-edge case, coup not used for last sub CTN.", () => { - expect(evaluateCheck([1, 8], 24)).toEqual([ - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 8, checkTargetNumber: 4, active: false, discarded: true }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups thrown'-edge case, coup used for last sub CTN.", () => { - expect(evaluateCheck([1, 19], 38)).toEqual([ - { result: 1, checkTargetNumber: 18, active: true, discarded: false, success: true, count: 18 }, - { result: 19, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when there is more than one coup and a coup is used for the last sub CTN", () => { - expect(evaluateCheck([1, 1, 15], 48)).toEqual([ - { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); -}); - -describe("evaluateCheck with multiple dice and coup / fumble modification", () => { - it("should assign the checkTargetNumber for the last sub check to the lowest non coup and fumble if the first is '19'.", () => { - expect(evaluateCheck([19, 15, 6], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 19, checkTargetNumber: 20, active: true, discarded: false, failure: true }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 6, checkTargetNumber: 8, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup if there are only coups ('1' and '2').", () => { - expect(evaluateCheck([2, 1, 2], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first lowest die, even if it is higher than that value.", () => { - expect(evaluateCheck([15, 15, 15], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 8, active: false, discarded: true }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough.", () => { - expect(evaluateCheck([15, 15, 2], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough, even if the last die is '20'.", () => { - expect(evaluateCheck([15, 2, 20], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 20, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough, even if the last die is '19'.", () => { - expect(evaluateCheck([15, 2, 19], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 19, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when all dice are successes.", () => { - expect(evaluateCheck([15, 4, 12], 46, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 4, checkTargetNumber: 6, active: true, discarded: false }, - { result: 12, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when one dice is a failure.", () => { - expect(evaluateCheck([15, 8, 12], 46, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 8, checkTargetNumber: 6, active: false, discarded: true }, - { result: 12, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup not used for last sub CTN.", () => { - expect(evaluateCheck([15, 2, 8], 46, { maximumCoupResult: 2 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 8, checkTargetNumber: 6, active: false, discarded: true }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup not used for last sub CTN.", () => { - expect(evaluateCheck([2, 8], 24, { maximumCoupResult: 2 })).toEqual([ - { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 8, checkTargetNumber: 4, active: false, discarded: true }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup used for last sub CTN.", () => { - expect(evaluateCheck([2, 19], 38, { maximumCoupResult: 2 })).toEqual([ - { result: 2, checkTargetNumber: 18, active: true, discarded: false, success: true, count: 18 }, - { result: 19, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when there is more than one coup ('1' and '2') and a coup is used for the last sub CTN", () => { - expect(evaluateCheck([1, 2, 15], 48, { maximumCoupResult: 2 })).toEqual([ - { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should use all the dice if they are coups, even if they are higher than the checkTargetNumber", () => { - expect(evaluateCheck([18, 19, 17], 48, { maximumCoupResult: 19 })).toEqual([ - { result: 18, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 19, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 17, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - ]); - }); -}); diff --git a/spec/setup.ts b/spec/setup.ts new file mode 100644 index 00000000..5bb4e4bb --- /dev/null +++ b/spec/setup.ts @@ -0,0 +1,57 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import en from "../lang/en.json"; + +function setupPrimitives() { + Object.defineProperties(Number, { + isNumeric: { + value: function (n: unknown) { + if (n instanceof Array) return false; + else if (([null, ""] as unknown[]).includes(n)) return false; + // @ts-expect-error Abusing JavaScript a bit here, but it's the implementation from foundry + return +n === +n; + }, + }, + fromString: { + value: function (str: unknown) { + if (typeof str !== "string" || !str.length) return NaN; + // Remove whitespace. + str = str.replace(/\s+/g, ""); + return Number(str); + }, + }, + }); + + Object.defineProperties(Math, { + clamped: { + value: function (num: number, min: number, max: number) { + return Math.min(max, Math.max(num, min)); + }, + }, + }); +} + +function setupStubs() { + class StubGame { + constructor() { + this.i18n = { + localize: (key: string) => (key in en ? en[key as keyof typeof en] : key), + }; + } + i18n: { + localize: (key: string) => string; + }; + } + + const game = new StubGame(); + + Object.defineProperties(globalThis, { + game: { value: game }, + Game: { value: StubGame }, + }); +} + +setupPrimitives(); +setupStubs(); diff --git a/spec/tsconfig.json b/spec/tsconfig.json new file mode 100644 index 00000000..9e7018a5 --- /dev/null +++ b/spec/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../tsconfig.json", + "include": ["../src", "./"] +} diff --git a/.husky/.gitignore.license b/spec/tsconfig.json.license similarity index 100% rename from .husky/.gitignore.license rename to spec/tsconfig.json.license diff --git a/spec/tsconfig.spec.json b/spec/tsconfig.spec.json deleted file mode 100644 index e8d5b37c..00000000 --- a/spec/tsconfig.spec.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "types": ["@league-of-foundry-developers/foundry-vtt-types", "jest"] - }, - "include": ["../src", "./"] -} diff --git a/spec/tsconfig.spec.json.license b/spec/tsconfig.spec.json.license deleted file mode 100644 index 31803f36..00000000 --- a/spec/tsconfig.spec.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/src/active-effect.ts b/src/active-effect.ts deleted file mode 100644 index 81689bfb..00000000 --- a/src/active-effect.ts +++ /dev/null @@ -1,107 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Actor } from "./actor/actor"; -import { getGame } from "./helpers"; -import { DS4Item } from "./item/item"; - -declare global { - interface DocumentClassConfig { - ActiveEffect: typeof DS4ActiveEffect; - } -} - -type PromisedType = T extends Promise ? U : T; - -export class DS4ActiveEffect extends ActiveEffect { - /** - * A fallback icon that can be used if no icon is defined for the effect. - */ - static FALLBACK_ICON = "icons/svg/aura.svg"; - - /** - * A cached reference to the source document to avoid recurring database lookups - */ - protected source: PromisedType> | undefined = undefined; - - /** - * Whether or not this effect is currently surpressed. - */ - get isSurpressed(): boolean { - const originatingItem = this.originatingItem; - if (!originatingItem) { - return false; - } - return originatingItem.isNonEquippedEuipable(); - } - - /** - * The item which this effect originates from if it has been transferred from an item to an actor. - */ - get originatingItem(): DS4Item | undefined { - if (!(this.parent instanceof DS4Actor)) { - return; - } - const itemIdRegex = /Item\.([a-zA-Z0-9]+)/; - const itemId = this.data.origin?.match(itemIdRegex)?.[1]; - if (!itemId) { - return; - } - return this.parent.items.get(itemId); - } - - /** - * The number of times this effect should be applied. - */ - get factor(): number { - return this.originatingItem?.activeEffectFactor ?? 1; - } - - /** @override */ - apply(actor: DS4Actor, change: foundry.data.ActiveEffectData["changes"][number]): unknown { - change.value = Roll.replaceFormulaData(change.value, actor.data); - try { - change.value = Roll.safeEval(change.value).toString(); - } catch (e) { - // this is a valid case, e.g., if the effect change simply is a string - } - return super.apply(actor, change); - } - - /** - * Gets the current source name based on the cached source object. - */ - async getCurrentSourceName(): Promise { - const game = getGame(); - const origin = await this.getSource(); - if (origin === null) return game.i18n.localize("None"); - return origin.name ?? game.i18n.localize("Unknown"); - } - - /** - * Gets the source document for this effect. Uses the cached {@link DS4ActiveEffect#source} if it has already been - * set. - */ - protected async getSource(): ReturnType { - if (this.source === undefined) { - this.source = this.data.origin !== undefined ? await fromUuid(this.data.origin) : null; - } - return this.source; - } - - /** - * Create a new {@link DS4ActiveEffect} using default data. - * - * @param parent The parent {@link DS4Actor} or {@link DS4Item} of the effect. - * @returns A promise that resolved to the created effect or udifined of the creation was prevented. - */ - static async createDefault(parent: DS4Actor | DS4Item): Promise { - const createData = { - label: getGame().i18n.localize(`DS4.NewEffectLabel`), - icon: this.FALLBACK_ICON, - }; - - return this.create(createData, { parent, pack: parent.pack ?? undefined }); - } -} diff --git a/src/actor/actor-data-properties.ts b/src/actor/actor-data-properties.ts deleted file mode 100644 index 828fad18..00000000 --- a/src/actor/actor-data-properties.ts +++ /dev/null @@ -1,87 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { ModifiableDataBaseTotal, ResourceDataBaseTotalMax } from "../common/common-data"; -import { DS4 } from "../config"; -import { - DS4CharacterDataSourceDataBaseInfo, - DS4CharacterDataSourceDataCurrency, - DS4CharacterDataSourceDataProfile, - DS4CharacterDataSourceDataProgression, - DS4CharacterDataSourceDataSlayerPoints, - DS4CreatureDataSourceDataBaseInfo, -} from "./actor-data-source"; - -declare global { - interface DataConfig { - Actor: DS4ActorDataProperties; - } -} - -export type DS4ActorDataProperties = DS4CharacterDataProperties | DS4CreatureDataProperties; - -interface DS4CharacterDataProperties { - type: "character"; - data: DS4CharacterDataPropertiesData; -} - -interface DS4CreatureDataProperties { - type: "creature"; - data: DS4CreatureDataPropertiesData; -} - -// templates - -interface DS4ActorDataPropertiesDataBase { - attributes: DS4ActorDataPropertiesDataAttributes; - traits: DS4ActorDataPropertiesDataTraits; - combatValues: DS4ActorDataPropertiesDataCombatValues; - rolling: DS4ActorDataPropertiesDataRolling; - checks: DS4ActorDataPropertiesDataChecks; -} - -type DS4ActorDataPropertiesDataAttributes = { - [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBaseTotal; -}; - -type DS4ActorDataPropertiesDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBaseTotal }; - -type DS4ActorDataPropertiesDataCombatValues = { - [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" - ? ResourceDataBaseTotalMax - : ModifiableDataBaseTotal; -}; - -interface DS4ActorDataPropertiesDataRolling { - maximumCoupResult: number; - minimumFumbleResult: number; -} - -type DS4ActorDataPropertiesDataChecks = { - [key in Check]: number; -}; - -export type Check = keyof typeof DS4.i18n.checks; - -export function isCheck(value: string): value is Check { - return Object.keys(DS4.i18n.checks).includes(value); -} - -// types - -interface DS4CreatureDataPropertiesData extends DS4ActorDataPropertiesDataBase { - baseInfo: DS4CreatureDataSourceDataBaseInfo; -} - -interface DS4CharacterDataPropertiesData extends DS4ActorDataPropertiesDataBase { - baseInfo: DS4CharacterDataSourceDataBaseInfo; - progression: DS4CharacterDataSourceDataProgression; - profile: DS4CharacterDataSourceDataProfile; - currency: DS4CharacterDataSourceDataCurrency; - slayerPoints: DS4CharacterDataPropertiesDataSlayerPoints; -} - -export interface DS4CharacterDataPropertiesDataSlayerPoints extends DS4CharacterDataSourceDataSlayerPoints { - max: number; -} diff --git a/src/actor/actor-data-source.ts b/src/actor/actor-data-source.ts deleted file mode 100644 index 6fd6cabd..00000000 --- a/src/actor/actor-data-source.ts +++ /dev/null @@ -1,125 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// SPDX-FileCopyrightText: 2021 Siegfried Krug -// -// SPDX-License-Identifier: MIT - -import { ModifiableData, ModifiableDataBase, ResourceData, UsableResource } from "../common/common-data"; -import { DS4 } from "../config"; - -declare global { - interface SourceConfig { - Actor: DS4ActorDataSource; - } -} - -export type DS4ActorDataSource = DS4CharacterDataSource | DS4CreatureDataSource; - -interface DS4CharacterDataSource { - type: "character"; - data: DS4CharacterDataSourceData; -} - -interface DS4CreatureDataSource { - type: "creature"; - data: DS4CreatureDataSourceData; -} - -// templates - -interface DS4ActorDataSourceDataBase { - attributes: DS4ActorDataSourceDataAttributes; - traits: DS4ActorDataSourceDataTraits; - combatValues: DS4ActorDataSourceDataCombatValues; -} - -type DS4ActorDataSourceDataAttributes = { [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBase }; - -type Attribute = keyof DS4ActorDataSourceDataAttributes; - -export function isAttribute(value: unknown): value is Attribute { - return (Object.keys(DS4.i18n.attributes) as Array).includes(value); -} - -type DS4ActorDataSourceDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBase }; - -type Trait = keyof DS4ActorDataSourceDataTraits; - -export function isTrait(value: unknown): value is Trait { - return (Object.keys(DS4.i18n.traits) as Array).includes(value); -} - -type DS4ActorDataSourceDataCombatValues = { - [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" - ? ResourceData - : ModifiableData; -}; - -type CombatValue = keyof DS4ActorDataSourceDataCombatValues; - -export function isCombatValue(value: string): value is CombatValue { - return (Object.keys(DS4.i18n.combatValues) as Array).includes(value); -} - -// types - -interface DS4CreatureDataSourceData extends DS4ActorDataSourceDataBase { - baseInfo: DS4CreatureDataSourceDataBaseInfo; -} - -export interface DS4CreatureDataSourceDataBaseInfo { - loot: string; - foeFactor: number; - creatureType: CreatureType; - sizeCategory: SizeCategory; - experiencePoints: number; - description: string; -} - -type CreatureType = keyof typeof DS4.i18n.creatureTypes; - -type SizeCategory = keyof typeof DS4.i18n.creatureSizeCategories; - -interface DS4CharacterDataSourceData extends DS4ActorDataSourceDataBase { - baseInfo: DS4CharacterDataSourceDataBaseInfo; - progression: DS4CharacterDataSourceDataProgression; - profile: DS4CharacterDataSourceDataProfile; - currency: DS4CharacterDataSourceDataCurrency; - slayerPoints: DS4CharacterDataSourceDataSlayerPoints; -} -export interface DS4CharacterDataSourceDataBaseInfo { - race: string; - class: string; - heroClass: string; - culture: string; -} -export interface DS4CharacterDataSourceDataProgression { - level: number; - experiencePoints: number; - talentPoints: UsableResource; - progressPoints: UsableResource; -} - -export interface DS4CharacterDataSourceDataProfile { - biography: string; - gender: string; - birthday: string; - birthplace: string; - age: number; - height: number; - hairColor: string; - weight: number; - eyeColor: string; - specialCharacteristics: string; -} - -export interface DS4CharacterDataSourceDataCurrency { - gold: number; - silver: number; - copper: number; -} - -export interface DS4CharacterDataSourceDataSlayerPoints { - value: number; -} diff --git a/src/actor/actor.ts b/src/actor/actor.ts deleted file mode 100644 index 9ed12857..00000000 --- a/src/actor/actor.ts +++ /dev/null @@ -1,443 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver RÜmpelein -// -// SPDX-License-Identifier: MIT - -import { ModifiableDataBaseTotal } from "../common/common-data"; -import { DS4 } from "../config"; -import { getGame } from "../helpers"; -import { DS4Item } from "../item/item"; -import { DS4ArmorDataProperties, DS4ShieldDataProperties } from "../item/item-data-properties"; -import { ItemType } from "../item/item-data-source"; -import { createCheckRoll } from "../rolls/check-factory"; -import { Check } from "./actor-data-properties"; -import { isAttribute, isTrait } from "./actor-data-source"; - -declare global { - interface DocumentClassConfig { - Actor: typeof DS4Actor; - } -} - -/** - * The Actor class for DS4 - */ -export class DS4Actor extends Actor { - /** @override */ - prepareData(): void { - this.data.reset(); - this.prepareBaseData(); - this.prepareEmbeddedDocuments(); - this.applyActiveEffectsToBaseData(); - this.prepareDerivedData(); - this.applyActiveEffectsToDerivedData(); - this.prepareFinalDerivedData(); - } - - /** @override */ - prepareBaseData(): void { - const data = this.data; - - data.data.rolling = { - minimumFumbleResult: 20, - maximumCoupResult: 1, - }; - - const attributes = data.data.attributes; - Object.values(attributes).forEach( - (attribute: ModifiableDataBaseTotal) => (attribute.total = attribute.base + attribute.mod), - ); - - const traits = data.data.traits; - Object.values(traits).forEach( - (trait: ModifiableDataBaseTotal) => (trait.total = trait.base + trait.mod), - ); - } - - /** - * @override - * We override this with an empty implementation because we have our own custom way of applying - * {@link ActiveEffect}s and {@link Actor#prepareEmbeddedDocuments} calls this. - */ - applyActiveEffects(): void { - return; - } - - applyActiveEffectsToBaseData(): void { - // reset overrides because our variant of applying active effects does not set them, it only adds overrides - this.overrides = {}; - this.applyActiveEffectsFiltered( - (change) => - !this.derivedDataProperties.includes(change.key) && - !this.finalDerivedDataProperties.includes(change.key), - ); - } - - applyActiveEffectsToDerivedData(): void { - this.applyActiveEffectsFiltered((change) => this.derivedDataProperties.includes(change.key)); - } - - /** - * Apply ActiveEffectChanges to the Actor data which are caused by ActiveEffects and satisfy the given predicate. - * - * @param predicate - The predicate that ActiveEffectChanges need to satisfy in order to be applied - */ - applyActiveEffectsFiltered(predicate: (change: foundry.data.ActiveEffectData["changes"][number]) => boolean): void { - const overrides: Record = {}; - - // Organize non-disabled and -surpressed effects by their application priority - const changes: (foundry.data.ActiveEffectData["changes"][number] & { effect: ActiveEffect })[] = - this.effects.reduce( - (changes: (foundry.data.ActiveEffectData["changes"][number] & { effect: ActiveEffect })[], e) => { - if (e.data.disabled || e.isSurpressed) return changes; - - const newChanges = e.data.changes.filter(predicate).flatMap((c) => { - const changeSource = c.toObject(); - changeSource.priority = changeSource.priority ?? changeSource.mode * 10; - return Array(e.factor).fill({ ...changeSource, effect: e }); - }); - - return changes.concat(newChanges); - }, - [], - ); - changes.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0)); - - // Apply all changes - for (const change of changes) { - const result = change.effect.apply(this, change); - if (result !== null) overrides[change.key] = result; - } - - // Expand the set of final overrides - this.overrides = foundry.utils.expandObject({ ...foundry.utils.flattenObject(this.overrides), ...overrides }); - } - - /** - * Apply transformations to the Actor data after effects have been applied to the base data. - * @override - */ - prepareDerivedData(): void { - this.prepareCombatValues(); - this.prepareChecks(); - } - - /** - * The list of properties that are derived from others, given in dot notation. - */ - get derivedDataProperties(): Array { - const combatValueProperties = Object.keys(DS4.i18n.combatValues).map( - (combatValue) => `data.combatValues.${combatValue}.total`, - ); - const checkProperties = Object.keys(DS4.i18n.checks) - .filter((check) => check !== "defend") - .map((check) => `data.checks.${check}`); - return combatValueProperties.concat(checkProperties); - } - - /** - * Apply final transformations to the Actor data after all effects have been applied. - */ - prepareFinalDerivedData(): void { - Object.values(this.data.data.attributes).forEach( - (attribute: ModifiableDataBaseTotal) => (attribute.total = Math.ceil(attribute.total)), - ); - Object.values(this.data.data.traits).forEach( - (trait: ModifiableDataBaseTotal) => (trait.total = Math.ceil(trait.total)), - ); - Object.entries(this.data.data.combatValues) - .filter(([key]) => key !== "movement") - .map(([, value]) => value) - .forEach( - (combatValue: ModifiableDataBaseTotal) => (combatValue.total = Math.ceil(combatValue.total)), - ); - (Object.keys(this.data.data.checks) as (keyof typeof this.data.data.checks)[]).forEach((key) => { - this.data.data.checks[key] = Math.ceil(this.data.data.checks[key]); - }); - - this.data.data.combatValues.hitPoints.max = this.data.data.combatValues.hitPoints.total; - this.data.data.checks.defend = this.data.data.combatValues.defense.total; - if (this.data.type === "character") { - this.data.data.slayerPoints.max = 3; - } - } - - /** - * The list of properties that are completely derived (i.e. {@link ActiveEffect}s cannot be applied to them), - * given in dot notation. - */ - get finalDerivedDataProperties(): string[] { - return ["data.combatValues.hitPoints.max", "data.checks.defend"].concat( - this.data.type === "character" ? ["data.slayerPoints.max"] : [], - ); - } - - /** - * The list of item types that can be owned by this actor. - */ - get ownableItemTypes(): Array { - switch (this.data.type) { - case "character": - return [ - "weapon", - "armor", - "shield", - "equipment", - "loot", - "spell", - "talent", - "racialAbility", - "language", - "alphabet", - ]; - case "creature": - return ["weapon", "armor", "shield", "equipment", "loot", "spell", "specialCreatureAbility"]; - } - } - - /** - * Checks whether or not the given item type can be owned by the actor. - * @param itemType - The item type to check - */ - canOwnItemType(itemType: ItemType): boolean { - return this.ownableItemTypes.includes(itemType); - } - - /** - * Prepares the combat values of the actor. - */ - protected prepareCombatValues(): void { - const data = this.data.data; - const armorValueOfEquippedItems = this.calculateArmorValueOfEquippedItems(); - const spellMalusOfEquippedItems = this.calculateSpellMaluesOfEquippedItems(); - - data.combatValues.hitPoints.base = data.attributes.body.total + data.traits.constitution.total + 10; - data.combatValues.defense.base = - data.attributes.body.total + data.traits.constitution.total + armorValueOfEquippedItems; - data.combatValues.initiative.base = data.attributes.mobility.total + data.traits.agility.total; - data.combatValues.movement.base = data.attributes.mobility.total / 2 + 1; - data.combatValues.meleeAttack.base = data.attributes.body.total + data.traits.strength.total; - data.combatValues.rangedAttack.base = data.attributes.mobility.total + data.traits.dexterity.total; - data.combatValues.spellcasting.base = - data.attributes.mind.total + data.traits.aura.total - spellMalusOfEquippedItems; - data.combatValues.targetedSpellcasting.base = - data.attributes.mind.total + data.traits.dexterity.total - spellMalusOfEquippedItems; - - Object.values(data.combatValues).forEach( - (combatValue: ModifiableDataBaseTotal) => (combatValue.total = combatValue.base + combatValue.mod), - ); - } - - /** - * Calculates the total armor value of the equipped items. - */ - protected calculateArmorValueOfEquippedItems(): number { - return this.getEquippedItemsWithArmor() - .map((item) => item.data.data.armorValue) - .reduce((a, b) => a + b, 0); - } - - /** - * Calculates the spell malus from equipped items. - */ - protected calculateSpellMaluesOfEquippedItems(): number { - return this.getEquippedItemsWithArmor() - .filter( - (item) => - !(item.data.type === "armor" && ["cloth", "natural"].includes(item.data.data.armorMaterialType)), - ) - .map((item) => item.data.data.armorValue) - .reduce((a, b) => a + b, 0); - } - - private getEquippedItemsWithArmor() { - return this.items - .filter( - (item): item is DS4Item & { data: DS4ArmorDataProperties | DS4ShieldDataProperties } => - item.data.type === "armor" || item.data.type === "shield", - ) - .filter((item) => item.data.data.equipped); - } - - /** - * Prepares the check target numbers of checks for the actor. - */ - protected prepareChecks(): void { - const data = this.data.data; - data.checks = { - appraise: data.attributes.mind.total + data.traits.intellect.total, - changeSpell: data.attributes.mind.total + data.traits.intellect.total, - climb: data.attributes.mobility.total + data.traits.strength.total, - communicate: data.attributes.mind.total + data.traits.dexterity.total, - decipherScript: data.attributes.mind.total + data.traits.intellect.total, - defend: 0, // assigned in prepareFinalDerivedData as it must always match data.combatValues.defense.total and is not changeable by effects - defyPoison: data.attributes.body.total + data.traits.constitution.total, - disableTraps: data.attributes.mind.total + data.traits.dexterity.total, - featOfStrength: data.attributes.body.total + data.traits.strength.total, - flirt: data.attributes.mind.total + data.traits.aura.total, - haggle: data.attributes.mind.total + Math.max(data.traits.intellect.total, data.traits.intellect.total), - hide: data.attributes.mobility.total + data.traits.agility.total, - identifyMagic: data.attributes.mind.total + data.traits.intellect.total, - jump: data.attributes.mobility.total + data.traits.agility.total, - knowledge: data.attributes.mind.total + data.traits.intellect.total, - openLock: data.attributes.mind.total + data.traits.dexterity.total, - perception: Math.max(data.attributes.mind.total + data.traits.intellect.total, 8), - pickPocket: data.attributes.mobility.total + data.traits.dexterity.total, - readTracks: data.attributes.mind.total + data.traits.intellect.total, - resistDisease: data.attributes.body.total + data.traits.constitution.total, - ride: data.attributes.mobility.total + Math.max(data.traits.agility.total, data.traits.aura.total), - search: Math.max(data.attributes.mind.total + data.traits.intellect.total, 8), - senseMagic: data.attributes.mind.total + data.traits.aura.total, - sneak: data.attributes.mobility.total + data.traits.agility.total, - startFire: data.attributes.mind.total + data.traits.dexterity.total, - swim: data.attributes.mobility.total + data.traits.strength.total, - wakeUp: data.attributes.mind.total + data.traits.intellect.total, - workMechanism: - data.attributes.mind.total + Math.max(data.traits.dexterity.total, data.traits.intellect.total), - }; - } - - /** - * Handle how changes to a Token attribute bar are applied to the Actor. - * This only differs from the base implementation by also allowing negative values. - * @override - */ - async modifyTokenAttribute( - attribute: string, - value: number, - isDelta = false, - isBar = true, - ): Promise { - const current = foundry.utils.getProperty(this.data.data, attribute); - - // Determine the updates to make to the actor data - let updates: Record; - if (isBar) { - if (isDelta) value = Math.min(Number(current.value) + value, current.max); - updates = { [`data.${attribute}.value`]: value }; - } else { - if (isDelta) value = Number(current) + value; - updates = { [`data.${attribute}`]: value }; - } - - // Call a hook to handle token resource bar updates - const allowed = Hooks.call("modifyTokenAttribute", { attribute, value, isDelta, isBar }, updates); - return allowed !== false ? this.update(updates) : this; - } - - /** - * Roll for a given check. - * @param check - The check to perform - * @param options - Additional options to customize the roll - */ - async rollCheck( - check: Check, - options: { speaker?: { token?: TokenDocument; alias?: string } } = {}, - ): Promise { - const speaker = ChatMessage.getSpeaker({ actor: this, ...options.speaker }); - await createCheckRoll(this.data.data.checks[check], { - rollMode: getGame().settings.get("core", "rollMode"), - maximumCoupResult: this.data.data.rolling.maximumCoupResult, - minimumFumbleResult: this.data.data.rolling.minimumFumbleResult, - flavor: "DS4.ActorCheckFlavor", - flavorData: { actor: speaker.alias ?? this.name, check: DS4.i18nKeys.checks[check] }, - speaker, - }); - } - - /** - * Roll a generic check. A dialog is presented to select the combination of - * Attribute and Trait to perform the check against. - * @param options - Additional options to customize the roll - */ - async rollGenericCheck(options: { speaker?: { token?: TokenDocument; alias?: string } } = {}): Promise { - const attributeAndTrait = await this.selectAttributeAndTrait(); - if (!attributeAndTrait) { - return; - } - const { attribute, trait } = attributeAndTrait; - const checkTargetNumber = this.data.data.attributes[attribute].total + this.data.data.traits[trait].total; - const speaker = ChatMessage.getSpeaker({ actor: this, ...options.speaker }); - await createCheckRoll(checkTargetNumber, { - rollMode: getGame().settings.get("core", "rollMode"), - maximumCoupResult: this.data.data.rolling.maximumCoupResult, - minimumFumbleResult: this.data.data.rolling.minimumFumbleResult, - flavor: "DS4.ActorGenericCheckFlavor", - flavorData: { - actor: speaker.alias ?? this.name, - attribute: DS4.i18n.attributes[attribute], - trait: DS4.i18n.traits[trait], - }, - speaker, - }); - } - - protected async selectAttributeAndTrait(): Promise<{ - attribute: keyof typeof DS4.i18n.attributes; - trait: keyof typeof DS4.i18n.traits; - } | null> { - const attributeIdentifier = "attribute-trait-selection-attribute"; - const traitIdentifier = "attribute-trait-selection-trait"; - return Dialog.prompt({ - title: getGame().i18n.localize("DS4.DialogAttributeTraitSelection"), - content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { - selects: [ - { - label: getGame().i18n.localize("DS4.Attribute"), - identifier: attributeIdentifier, - options: Object.fromEntries( - (Object.entries(DS4.i18n.attributes) as [keyof typeof DS4.i18n.attributes, string][]).map( - ([attribute, translation]) => [ - attribute, - `${translation} (${this.data.data.attributes[attribute].total})`, - ], - ), - ), - }, - { - label: getGame().i18n.localize("DS4.Trait"), - identifier: traitIdentifier, - options: Object.fromEntries( - (Object.entries(DS4.i18n.traits) as [keyof typeof DS4.i18n.traits, string][]).map( - ([trait, translation]) => [ - trait, - `${translation} (${this.data.data.traits[trait].total})`, - ], - ), - ), - }, - ], - }), - label: getGame().i18n.localize("DS4.GenericOkButton"), - callback: (html) => { - const selectedAttribute = html.find(`#${attributeIdentifier}`).val(); - if (!isAttribute(selectedAttribute)) { - throw new Error( - getGame().i18n.format("DS4.ErrorUnexpectedAttribute", { - actualAttribute: selectedAttribute, - expectedTypes: Object.keys(DS4.i18n.attributes) - .map((attribute) => `'${attribute}'`) - .join(", "), - }), - ); - } - const selectedTrait = html.find(`#${traitIdentifier}`).val(); - if (!isTrait(selectedTrait)) { - throw new Error( - getGame().i18n.format("DS4.ErrorUnexpectedTrait", { - actualTrait: selectedTrait, - expectedTypes: Object.keys(DS4.i18n.traits) - .map((attribute) => `'${attribute}'`) - .join(", "), - }), - ); - } - return { - attribute: selectedAttribute, - trait: selectedTrait, - }; - }, - rejectClose: false, - }); - } -} diff --git a/src/actor/sheets/actor-sheet.ts b/src/actor/sheets/actor-sheet.ts deleted file mode 100644 index f4a56713..00000000 --- a/src/actor/sheets/actor-sheet.ts +++ /dev/null @@ -1,435 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// SPDX-FileCopyrightText: 2021 Siegfried Krug -// -// SPDX-License-Identifier: MIT - -import { DS4ActiveEffect } from "../../active-effect"; -import { ModifiableDataBaseTotal } from "../../common/common-data"; -import { DS4 } from "../../config"; -import { getCanvas, getGame } from "../../helpers"; -import type { DS4Item } from "../../item/item"; -import { DS4Settings, getDS4Settings } from "../../settings"; -import notifications from "../../ui/notifications"; -import { enforce } from "../../utils"; -import { isCheck } from "../actor-data-properties"; - -/** - * The base sheet class for all {@link DS4Actor}s. - */ -export class DS4ActorSheet extends ActorSheet { - /** @override */ - static get defaultOptions(): ActorSheet.Options { - return foundry.utils.mergeObject(super.defaultOptions, { - classes: ["sheet", "ds4-actor-sheet"], - height: 625, - scrollY: [".ds4-sheet-body"], - tabs: [{ navSelector: ".ds4-sheet-tab-nav", contentSelector: ".ds4-sheet-body", initial: "values" }], - dragDrop: [ - { dragSelector: ".item-list .item", dropSelector: null }, - { dragSelector: ".effect-list .effect", dropSelector: null }, - { dragSelector: ".ds4-check", dropSelector: null }, - ], - width: 650, - }); - } - - /** @override */ - get template(): string { - const basePath = "systems/ds4/templates/sheets/actor"; - return `${basePath}/${this.actor.data.type}-sheet.hbs`; - } - - /** @override */ - async getData(): Promise { - const itemsByType = Object.fromEntries( - Object.entries(this.actor.itemTypes).map(([itemType, items]) => { - return [itemType, items.map((item) => item.data).sort((a, b) => (a.sort || 0) - (b.sort || 0))]; - }), - ); - - const enrichedEffectPromises = this.actor.effects.map(async (effect) => { - return { - ...effect.toObject(), - sourceName: await effect.getCurrentSourceName(), - factor: effect.factor, - isEffectivelyEnabled: !effect.data.disabled && !effect.isSurpressed, - }; - }); - const enrichedEffects = await Promise.all(enrichedEffectPromises); - - const data = { - ...this.addTooltipsToData(await super.getData()), - config: DS4, - itemsByType, - enrichedEffects, - settings: getDS4Settings(), - }; - return data; - } - - /** - * Adds tooltips to the attributes, traits, and combatValues of the actor data of the given {@link ActorSheet.Data}. - */ - protected addTooltipsToData(data: ActorSheet.Data): ActorSheet.Data { - const valueGroups = [data.data.data.attributes, data.data.data.traits, data.data.data.combatValues]; - - valueGroups.forEach((valueGroup) => { - Object.values(valueGroup).forEach((attribute: ModifiableDataBaseTotal & { tooltip?: string }) => { - attribute.tooltip = this.getTooltipForValue(attribute); - }); - }); - return data; - } - - /** - * Generates a tooltip for a given attribute, trait, or combatValue. - */ - protected getTooltipForValue(value: ModifiableDataBaseTotal): string { - return `${value.base} (${getGame().i18n.localize("DS4.TooltipBaseValue")}) + ${ - value.mod - } (${getGame().i18n.localize("DS4.TooltipModifier")}) ➞ ${getGame().i18n.localize("DS4.TooltipEffects")} ➞ ${ - value.total - }`; - } - - /** @override */ - activateListeners(html: JQuery): void { - super.activateListeners(html); - - if (!this.options.editable) return; - - html.find(".control-item").on("click", this.onControlItem.bind(this)); - html.find(".change-item").on("change", this.onChangeItem.bind(this)); - - html.find(".control-effect").on("click", this.onControlEffect.bind(this)); - html.find(".change-effect").on("change", this.onChangeEffect.bind(this)); - - html.find(".rollable-item").on("click", this.onRollItem.bind(this)); - html.find(".rollable-check").on("click", this.onRollCheck.bind(this)); - - html.find(".sort-items").on("click", this.onSortItems.bind(this)); - } - - /** - * Handles a click on an element of this sheet to control an embedded item of the actor corresponding to this sheet. - * - * @param event - The originating click event - */ - protected onControlItem(event: JQuery.ClickEvent): void { - event.preventDefault(); - const a = event.currentTarget; - switch (a.dataset["action"]) { - case "create": - return this.onCreateItem(event); - case "edit": - return this.onEditItem(event); - case "delete": - return this.onDeleteItem(event); - } - } - - /** - * Creates a new embedded item using the initial data defined in the HTML dataset of the clicked element. - * - * @param event - The originating click event - */ - protected onCreateItem(event: JQuery.ClickEvent): void { - const { type, ...data } = foundry.utils.deepClone(event.currentTarget.dataset); - const name = getGame().i18n.localize(`DS4.New${type.capitalize()}Name`); - const itemData = { - name: name, - type: type, - data: data, - }; - Item.create(itemData, { parent: this.actor, pack: this.actor.pack ?? undefined }); - } - - /** - * Opens the sheet of the embedded item corresponding to the clicked element. - * - * @param event - The originating click event - */ - protected onEditItem(event: JQuery.ClickEvent): void { - const id = $(event.currentTarget) - .parents(embeddedDocumentListEntryProperties.Item.selector) - .data(embeddedDocumentListEntryProperties.Item.idDataAttribute); - const item = this.actor.items.get(id); - enforce(item, getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { id, actor: this.actor.name })); - enforce(item.sheet); - item.sheet.render(true); - } - - /** - * Deletes the embedded item corresponding to the clicked element. - * - * @param event - The originating click event - */ - protected onDeleteItem(event: JQuery.ClickEvent): void { - const li = $(event.currentTarget).parents(embeddedDocumentListEntryProperties.Item.selector); - this.actor.deleteEmbeddedDocuments("Item", [li.data(embeddedDocumentListEntryProperties.Item.idDataAttribute)]); - li.slideUp(200, () => this.render(false)); - } - - /** - * Applies a change to a property of an embedded item depending on the `data-property` attribute of the - * {@link HTMLInputElement} that has been changed and its new value. - * - * @param event - The originating change event - */ - protected onChangeItem(event: JQuery.ChangeEvent): void { - return this.onChangeEmbeddedDocument(event, "Item"); - } - - /** - * Handles a click on an element of this sheet to control an embedded effect of the actor corresponding to this - * sheet. - * - * @param event - The originating click event - */ - protected onControlEffect(event: JQuery.ClickEvent): void { - event.preventDefault(); - const a = event.currentTarget; - switch (a.dataset["action"]) { - case "create": - return this.onCreateEffect(); - case "edit": - return this.onEditEffect(event); - case "delete": - return this.onDeleteEffect(event); - } - } - - /** - * Creates a new embedded effect. - * - * @param event - The originating click event - */ - protected onCreateEffect(): void { - DS4ActiveEffect.createDefault(this.actor); - } - - /** - * Opens the sheet of the embedded effect corresponding to the clicked element. - * - * @param event - The originating click event - */ - protected onEditEffect(event: JQuery.ClickEvent): void { - const id = $(event.currentTarget) - .parents(embeddedDocumentListEntryProperties.ActiveEffect.selector) - .data(embeddedDocumentListEntryProperties.ActiveEffect.idDataAttribute); - const effect = this.actor.effects.get(id); - enforce(effect, getGame().i18n.format("DS4.ErrorActorDoesNotHaveEffect", { id, actor: this.actor.name })); - effect.sheet.render(true); - } - - /** - * Deletes the embedded item corresponding to the clicked element. - * - * @param event - The originating click event - */ - protected onDeleteEffect(event: JQuery.ClickEvent): void { - const li = $(event.currentTarget).parents(embeddedDocumentListEntryProperties.ActiveEffect.selector); - const id = li.data(embeddedDocumentListEntryProperties.ActiveEffect.idDataAttribute); - this.actor.deleteEmbeddedDocuments("ActiveEffect", [id]); - li.slideUp(200, () => this.render(false)); - } - - /** - * Applies a change to a property of an embedded effect depending on the `data-property` attribute of the - * {@link HTMLInputElement} that has been changed and its new value. - * - * @param event - The originating change event - */ - protected onChangeEffect(event: JQuery.ChangeEvent): void { - return this.onChangeEmbeddedDocument(event, "ActiveEffect"); - } - - /** - * Applies a change to a property of an embedded document of the actor belonging to this sheet. The change depends - * on the `data-property` attribute of the {@link HTMLInputElement} that has been changed and its new value. - * - * @param event - The originating change event - * @param documentName - The name of the embedded document to be changed. - */ - protected onChangeEmbeddedDocument(event: JQuery.ChangeEvent, documentName: "Item" | "ActiveEffect"): void { - event.preventDefault(); - const element = $(event.currentTarget).get(0); - enforce(element instanceof HTMLInputElement); - if (element.disabled) return; - - const documentElement = element.closest(embeddedDocumentListEntryProperties[documentName].selector); - enforce(documentElement instanceof HTMLElement); - const id = documentElement.dataset[embeddedDocumentListEntryProperties[documentName].idDataAttribute]; - const property = element.dataset["property"]; - enforce(property !== undefined, TypeError("HTML element does not provide 'data-property' attribute")); - - const newValue = this.parseValue(element); - this.actor.updateEmbeddedDocuments(documentName, [{ _id: id, [property]: newValue }]); - } - - /** - * Parses the value of the given {@link HTMLInputElement} depending on the element's type - * The value is parsed to: - * - checkbox: `boolean`, if the attribute `data-inverted` is set to a truthy value, the parsed value is inverted - * - text input: `string` - * - number: `number` - * - * @param element - The input element to parse the value from - */ - protected parseValue(element: HTMLInputElement): boolean | string | number { - switch (element.type) { - case "checkbox": { - const inverted = Boolean(element.dataset["inverted"]); - const value: boolean = element.checked; - return inverted ? !value : value; - } - case "text": { - const value: string = element.value; - return value; - } - case "number": { - const value = Number(element.value.trim()); - return value; - } - default: { - throw new TypeError( - "Binding of item property to this type of HTML element not supported; given: " + element, - ); - } - } - } - - /** - * Handle clickable item rolls. - * @param event - The originating click event - */ - protected onRollItem(event: JQuery.ClickEvent): void { - event.preventDefault(); - const id = $(event.currentTarget) - .parents(embeddedDocumentListEntryProperties.Item.selector) - .data(embeddedDocumentListEntryProperties.Item.idDataAttribute); - const item = this.actor.items.get(id); - enforce(item, getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { id, actor: this.actor.name })); - item.roll().catch((e) => notifications.error(e, { log: true })); - } - - /** - * Handle clickable check rolls. - * @param event - The originating click event - */ - protected onRollCheck(event: JQuery.ClickEvent): void { - event.preventDefault(); - const check = event.currentTarget.dataset["check"]; - this.actor.rollCheck(check).catch((e) => notifications.error(e, { log: true })); - } - - /** @override */ - _onDragStart(event: DragEvent): void { - const target = event.currentTarget as HTMLElement; - if (!(target instanceof HTMLElement)) return super._onDragStart(event); - - const check = target.dataset.check; - if (!check) return super._onDragStart(event); - - enforce(isCheck(check), getGame().i18n.format("DS4.ErrorCannotDragMissingCheck", { check })); - - const dragData = { - actorId: this.actor.id, - sceneId: this.actor.isToken ? getCanvas().scene?.id : null, - tokenId: this.actor.isToken ? this.actor.token?.id : null, - type: "Check", - data: check, - }; - - event.dataTransfer?.setData("text/plain", JSON.stringify(dragData)); - } - - /** - * Sort items according to the item list header that has been clicked. - * @param event - The originating click event - */ - protected onSortItems(event: JQuery.ClickEvent): void { - event.preventDefault(); - const target = event.currentTarget; - const type = target.parentElement?.dataset["type"]; - enforce(type !== undefined, `Could not find property 'type' in the dataset of the parent of ${target}`); - const dataPath = target.dataset["dataPath"]; - enforce(dataPath !== undefined, `Could not find property 'dataPath' in the dataset of ${target}`); - const items = this.actor.items.filter((item) => item.type === type); - items.sort((a, b) => a.data.sort - b.data.sort); - - const sortFunction = - (invert: boolean) => - (a: DS4Item, b: DS4Item): number => { - const propertyA = getProperty(a.data, dataPath); - const propertyB = getProperty(b.data, dataPath); - if (typeof propertyA === "string" || typeof propertyB === "string") { - return invert - ? (propertyB ?? "").localeCompare(propertyA ?? "") - : (propertyA ?? "").localeCompare(propertyB ?? ""); - } else { - return invert ? propertyB - propertyA : propertyA - propertyB; - } - }; - - const sortedItems = [...items].sort(sortFunction(false)); - const wasSortedAlready = !sortedItems.find((item, index) => item !== items[index]); - - if (wasSortedAlready) { - sortedItems.sort(sortFunction(true)); - } - - const updates = sortedItems.map((item, i) => ({ - _id: item.id, - sort: (i + 1) * CONST.SORT_INTEGER_DENSITY, - })); - - this.actor.updateEmbeddedDocuments("Item", updates); - } - - /** @override */ - protected async _onDropItem(event: DragEvent, data: ActorSheet.DropData.Item): Promise { - const item = await Item.fromDropData(data); - if (item && !this.actor.canOwnItemType(item.data.type)) { - notifications.warn( - getGame().i18n.format("DS4.WarningActorCannotOwnItem", { - actorName: this.actor.name, - actorType: this.actor.data.type, - itemName: item.name, - itemType: item.data.type, - }), - ); - return false; - } - return super._onDropItem(event, data); - } -} - -interface DS4ActorSheetData extends ActorSheet.Data { - config: typeof DS4; - itemsByType: Record; - enrichedEffects: EnrichedActiveEffectDataSource[]; - settings: DS4Settings; -} - -type ActiveEffectDataSource = foundry.data.ActiveEffectData["_source"]; - -interface EnrichedActiveEffectDataSource extends ActiveEffectDataSource { - sourceName: string; -} - -/** - * This object contains information about specific properties embedded document list entries for each different type. - */ -const embeddedDocumentListEntryProperties = Object.freeze({ - ActiveEffect: { - selector: ".effect", - idDataAttribute: "effectId", - }, - Item: { - selector: ".item", - idDataAttribute: "itemId", - }, -}); diff --git a/src/actor/sheets/character-sheet.ts b/src/actor/sheets/character-sheet.ts deleted file mode 100644 index fe7f6bba..00000000 --- a/src/actor/sheets/character-sheet.ts +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4ActorSheet } from "./actor-sheet"; - -/** - * The Sheet class for DS4 Character Actors - */ -export class DS4CharacterActorSheet extends DS4ActorSheet { - /** @override */ - static get defaultOptions(): ActorSheet.Options { - return foundry.utils.mergeObject(super.defaultOptions, { - classes: ["sheet", "ds4-actor-sheet", "ds4-character-sheet"], - }); - } -} diff --git a/src/actor/sheets/creature-sheet.ts b/src/actor/sheets/creature-sheet.ts deleted file mode 100644 index 323d8377..00000000 --- a/src/actor/sheets/creature-sheet.ts +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4ActorSheet } from "./actor-sheet"; - -/** - * The Sheet class for DS4 Creature Actors - */ -export class DS4CreatureActorSheet extends DS4ActorSheet { - /** @override */ - static get defaultOptions(): ActorSheet.Options { - return foundry.utils.mergeObject(super.defaultOptions, { - classes: ["sheet", "ds4-actor-sheet", "ds4-creature-sheet"], - }); - } -} diff --git a/src/apps/active-effect-config.js b/src/apps/active-effect-config.js new file mode 100644 index 00000000..e0acae02 --- /dev/null +++ b/src/apps/active-effect-config.js @@ -0,0 +1,38 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +export class DS4ActiveEffectConfig extends ActiveEffectConfig { + /** @override */ + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + template: "systems/ds4/templates/sheets/active-effect/active-effect-config.hbs", + }); + } + + /** + * @override + * @param {JQuery} html + */ + activateListeners(html) { + super.activateListeners(html); + const checkbox = html[0]?.querySelector('input[name="flags.ds4.itemEffectConfig.applyToItems"]'); + checkbox?.addEventListener("change", () => this.#toggleItemEffectConfig(checkbox.checked)); + } + + /** + * Toggle the visibility of the item effect config section + * @param {boolean} active The target state + */ + #toggleItemEffectConfig(active) { + const elements = this.element[0]?.querySelectorAll(".ds4-item-effect-config"); + elements?.forEach((element) => { + if (active) { + element.classList.remove("ds4-hidden"); + } else { + element.classList.add("ds4-hidden"); + } + }); + this.setPosition({ height: "auto" }); + } +} diff --git a/src/apps/actor/base-sheet.js b/src/apps/actor/base-sheet.js new file mode 100644 index 00000000..75a74b11 --- /dev/null +++ b/src/apps/actor/base-sheet.js @@ -0,0 +1,496 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// SPDX-FileCopyrightText: 2021 Siegfried Krug +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../../config"; +import { DS4ActiveEffect } from "../../documents/active-effect"; +import { isCheck } from "../../documents/actor/actor-data-properties-base"; +import { getDS4Settings } from "../../settings"; +import { notifications } from "../../ui/notifications"; +import { enforce, getCanvas, getGame } from "../../utils/utils"; +import { disableOverriddenFields } from "../sheet-helpers"; + +/** + * The base sheet class for all {@link DS4Actor}s. + */ +export class DS4ActorSheet extends ActorSheet { + /** @override */ + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + classes: ["sheet", "ds4-actor-sheet"], + height: 645, + scrollY: [".ds4-sheet-body"], + tabs: [{ navSelector: ".ds4-sheet-tab-nav", contentSelector: ".ds4-sheet-body", initial: "values" }], + dragDrop: [ + { dragSelector: ".item-list .item", dropSelector: null }, + { dragSelector: ".effect-list .effect", dropSelector: null }, + { dragSelector: ".ds4-check", dropSelector: null }, + ], + width: 650, + }); + } + + /** @override */ + get template() { + const basePath = "systems/ds4/templates/sheets/actor"; + if (!getGame().user?.isGM && this.actor.limited) return `${basePath}/limited-sheet.hbs`; + return `${basePath}/${this.actor.type}-sheet.hbs`; + } + + /** @override */ + async getData(options = {}) { + const itemsByType = Object.fromEntries( + Object.entries(this.actor.itemTypes).map(([itemType, items]) => { + return [itemType, [...items].sort((a, b) => (a.sort || 0) - (b.sort || 0))]; + }), + ); + + const enrichedEffects = [...this.actor.allApplicableEffects()].map((effect) => { + return { + ...effect.toObject(), + sourceName: effect.parent instanceof Item ? effect.parent.name : effect.sourceName, + factor: effect.factor, + active: effect.active, + uuid: effect.uuid, + }; + }); + + const context = { + ...this.addTooltipsToData(await super.getData(options)), + config: DS4, + itemsByType, + enrichedEffects, + settings: getDS4Settings(), + }; + return context; + } + + /** + * Adds tooltips to the attributes, traits, and combatValues of the given context object. + * @param {object} context + * @protected + */ + addTooltipsToData(context) { + const valueGroups = [context.data.system.attributes, context.data.system.traits, context.data.system.combatValues]; + + valueGroups.forEach((valueGroup) => { + Object.values(valueGroup).forEach((attribute) => { + attribute.tooltip = this.getTooltipForValue(attribute); + }); + }); + return context; + } + + /** + * Generates a tooltip for a given attribute, trait, or combatValue. + * @param {import("../../documents/common/common-data").ModifiableDataBaseTotal} value The value to get a tooltip for + * @returns {string} The tooltip + * @protected + */ + getTooltipForValue(value) { + return `${value.base} (${getGame().i18n.localize("DS4.TooltipBaseValue")}) + ${ + value.mod + } (${getGame().i18n.localize("DS4.TooltipModifier")}) ➞ ${getGame().i18n.localize("DS4.TooltipEffects")} ➞ ${ + value.total + }`; + } + + /** + * @param {JQuery} html + * @override + */ + activateListeners(html) { + super.activateListeners(html); + + if (!this.options.editable) return; + + html.find(".control-item").on("click", this.onControlItem.bind(this)); + html.find(".change-item").on("change", this.onChangeItem.bind(this)); + + html.find(".control-effect").on("click", this.onControlEffect.bind(this)); + html.find(".change-effect").on("change", this.onChangeEffect.bind(this)); + + html.find(".rollable-item").on("click", this.onRollItem.bind(this)); + html.find(".rollable-check").on("click", this.onRollCheck.bind(this)); + + html.find(".sort-items").on("click", this.onSortItems.bind(this)); + + disableOverriddenFields(this.form, this.actor.overrides, (key) => `[name="${key}"]`); + for (const item of this.actor.items) { + disableOverriddenFields( + this.form, + item.overrides, + (key) => `[data-item-uuid="${item.uuid}"] .change-item[data-property="${key}"]`, + ); + } + } + + /** + * Handles a click on an element of this sheet to control an embedded item of the actor corresponding to this sheet. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onControlItem(event) { + event.preventDefault(); + const a = event.currentTarget; + switch (a.dataset["action"]) { + case "create": + return this.onCreateItem(event); + case "edit": + return this.onEditItem(event); + case "delete": + return this.onDeleteItem(event); + } + } + + /** + * Creates a new embedded item using the initial data defined in the HTML dataset of the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onCreateItem(event) { + const { type } = foundry.utils.deepClone(event.currentTarget.dataset); + const name = getGame().i18n.localize(`DS4.New${type.capitalize()}Name`); + const itemData = { name, type }; + Item.create(itemData, { parent: this.actor }); + } + + /** + * Opens the sheet of the embedded item corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + async onEditItem(event) { + const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.Item.selector); + const uuid = li.dataset[embeddedDocumentListEntryProperties.Item.uuidDataAttribute]; + const item = await fromUuid(uuid); + enforce( + item && item.parent === this.actor, + getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), + ); + item.sheet?.render(true); + } + + /** + * Deletes the embedded item corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + async onDeleteItem(event) { + const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.Item.selector); + const uuid = li.dataset[embeddedDocumentListEntryProperties.Item.uuidDataAttribute]; + const item = await fromUuid(uuid); + enforce( + item && item.parent === this.actor, + getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), + ); + item.delete(); + $(li).slideUp(200, () => this.render(false)); + } + + /** + * Applies a change to a property of an embedded item depending on the `data-property` attribute of the + * {@link HTMLInputElement} that has been changed and its new value. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onChangeItem(event) { + return this.onChangeEmbeddedDocument(event, "Item"); + } + + /** + * Handles a click on an element of this sheet to control an embedded effect of the actor corresponding to this + * sheet. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onControlEffect(event) { + event.preventDefault(); + const a = event.currentTarget; + switch (a.dataset["action"]) { + case "create": + return this.onCreateEffect(); + case "edit": + return this.onEditEffect(event); + case "delete": + return this.onDeleteEffect(event); + } + } + + /** + * Creates a new embedded effect. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onCreateEffect() { + DS4ActiveEffect.createDefault(this.actor); + } + + /** + * Opens the sheet of the embedded effect corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + async onEditEffect(event) { + const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.ActiveEffect.selector); + const uuid = li.dataset[embeddedDocumentListEntryProperties.ActiveEffect.uuidDataAttribute]; + const effect = await fromUuid(uuid); + enforce( + effect && (effect.parent === this.actor || effect.parent.parent === this.actor), + getGame().i18n.format("DS4.ErrorActorDoesNotHaveEffect", { uuid, actor: this.actor.name }), + ); + effect.sheet?.render(true); + } + + /** + * Deletes the embedded item corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + async onDeleteEffect(event) { + const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.ActiveEffect.selector); + const uuid = li.dataset[embeddedDocumentListEntryProperties.ActiveEffect.uuidDataAttribute]; + const effect = await fromUuid(uuid); + enforce( + effect && (effect.parent === this.actor || effect.parent.parent === this.actor), + getGame().i18n.format("DS4.ErrorActorDoesNotHaveEffect", { uuid, actor: this.actor.name }), + ); + effect.delete(); + $(li).slideUp(200, () => this.render(false)); + } + + /** + * Applies a change to a property of an embedded effect depending on the `data-property` attribute of the + * {@link HTMLInputElement} that has been changed and its new value. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onChangeEffect(event) { + return this.onChangeEmbeddedDocument(event, "ActiveEffect"); + } + + /** + * Applies a change to a property of an embedded document of the actor belonging to this sheet. The change depends + * on the `data-property` attribute of the {@link HTMLInputElement} that has been changed and its new value. + * + * @param {JQuery.ChangeEvent} event The originating click event + * @param {"Item" | "ActiveEffect"} documentName The name of the embedded document to be changed. + * @protected + */ + async onChangeEmbeddedDocument(event, documentName) { + event.preventDefault(); + const element = $(event.currentTarget).get(0); + if (element.disabled) return; + + const documentElement = element.closest(embeddedDocumentListEntryProperties[documentName].selector); + const uuid = documentElement.dataset[embeddedDocumentListEntryProperties[documentName].uuidDataAttribute]; + const property = element.dataset["property"]; + enforce(property !== undefined, TypeError("HTML element does not provide 'data-property' attribute")); + + const newValue = this.parseValue(element); + + const document = await fromUuid(uuid); + + if (documentName === "Item") { + enforce( + document && document.parent === this.actor, + getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), + ); + } else { + enforce( + document && (document.parent === this.actor || document.parent.parent === this.actor), + getGame().i18n.format("DS4.ErrorActorDoesNotHaveEffect", { uuid, actor: this.actor.name }), + ); + } + document.update({ [property]: newValue }); + } + + /** + * Parses the value of the given {@link HTMLInputElement} depending on the element's type + * The value is parsed to: + * - checkbox: `boolean`, if the attribute `data-inverted` is set to a truthy value, the parsed value is inverted + * - text input: `string` + * - number: `number` + * + * @param {HTMLInputElement} element The input element to parse the value from + * @returns {boolean | string | number} The parsed data + * @protected + */ + parseValue(element) { + switch (element.type) { + case "checkbox": { + const inverted = Boolean(element.dataset["inverted"]); + const value = element.checked; + return inverted ? !value : value; + } + case "text": { + const value = element.value; + return value; + } + case "number": { + const value = Number(element.value.trim()); + return value; + } + default: { + throw new TypeError("Binding of item property to this type of HTML element not supported; given: " + element); + } + } + } + + /** + * Handle clickable item rolls. + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + async onRollItem(event) { + event.preventDefault(); + const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.Item.selector); + const uuid = li.dataset[embeddedDocumentListEntryProperties.Item.uuidDataAttribute]; + const item = await fromUuid(uuid); + enforce( + item && item.parent === this.actor, + getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), + ); + item.roll().catch((e) => notifications.error(e, { log: true })); + } + + /** + * Handle clickable check rolls. + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onRollCheck(event) { + event.preventDefault(); + event.currentTarget.blur(); + const check = event.currentTarget.dataset["check"]; + this.actor.rollCheck(check).catch((e) => notifications.error(e, { log: true })); + } + + /** + * @param {DragEvent} event + * @override + */ + _onDragStart(event) { + const target = event.currentTarget; + if (!(target instanceof HTMLElement)) return super._onDragStart(event); + + const check = target.dataset.check; + if (!check) return super._onDragStart(event); + + enforce(isCheck(check), getGame().i18n.format("DS4.ErrorCannotDragMissingCheck", { check })); + + const dragData = { + actorId: this.actor.id, + sceneId: this.actor.isToken ? getCanvas().scene?.id : null, + tokenId: this.actor.isToken ? this.actor.token?.id : null, + type: "Check", + data: check, + }; + + event.dataTransfer?.setData("text/plain", JSON.stringify(dragData)); + } + + /** + * Sort items according to the item list header that has been clicked. + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onSortItems(event) { + event.preventDefault(); + const target = event.currentTarget; + const type = target.parentElement?.dataset["type"]; + enforce(type !== undefined, `Could not find property 'type' in the dataset of the parent of ${target}`); + const dataPath = target.dataset["dataPath"]; + enforce(dataPath !== undefined, `Could not find property 'dataPath' in the dataset of ${target}`); + const dataPath2 = target.dataset["dataPath2"]; + /** @type {import("../../documents/item/item").DS4Item[]}*/ + const items = this.actor.items.filter((item) => item.type === type); + items.sort((a, b) => a.sort - b.sort); + + /** + * @param {boolean} invert Whether or not to inverse the sort order + * @returns {(a: import("../../documents/item/item").DS4Item, b: import("../../documents/item/item").DS4Item) => number} A function for sorting items + */ + const sortFunction = (invert) => (a, b) => { + const propertyA = getProperty(a, dataPath); + const propertyB = getProperty(b, dataPath); + const comparison = + typeof propertyA === "string" || typeof propertyB === "string" + ? compareAsStrings(propertyA, propertyB, invert) + : compareAsNumbers(propertyA, propertyB, invert); + + if (comparison === 0 && dataPath2 !== undefined) { + const propertyA = getProperty(a, dataPath); + const propertyB = getProperty(b, dataPath); + return typeof propertyA === "string" || typeof propertyB === "string" + ? compareAsStrings(propertyA, propertyB, invert) + : compareAsNumbers(propertyA, propertyB, invert); + } + + return comparison; + }; + + const sortedItems = [...items].sort(sortFunction(false)); + const wasSortedAlready = !sortedItems.find((item, index) => item !== items[index]); + + if (wasSortedAlready) { + sortedItems.sort(sortFunction(true)); + } + + const updates = sortedItems.map((item, i) => ({ + _id: item.id, + sort: (i + 1) * CONST.SORT_INTEGER_DENSITY, + })); + + this.actor.updateEmbeddedDocuments("Item", updates); + } +} + +/** + * This object contains information about specific properties embedded document list entries for each different type. + */ +const embeddedDocumentListEntryProperties = Object.freeze({ + ActiveEffect: { + selector: ".effect", + uuidDataAttribute: "effectUuid", + }, + Item: { + selector: ".item", + uuidDataAttribute: "itemUuid", + }, +}); + +/** + * Compare two stringifiables as strings. + * @param {{ toString(): string }} a The thing to compare with + * @param {{ toString(): string }} b The thing to compare + * @param {boolean} invert Should the comparison be inverted? + * @return {number} A number that indicates the result of the comparison + */ +const compareAsStrings = (a, b, invert) => { + return invert ? b.toString().localeCompare(a.toString()) : a.toString().localeCompare(b.toString()); +}; + +/** + * Compare two number. + * @param {number} a The number to compare with + * @param {number} b The number to compare + * @param {boolean} invert Should the comparison be inverted? + * @return {number} A number that indicates the result of the comparison + */ +const compareAsNumbers = (a, b, invert) => { + return invert ? b - a : a - b; +}; diff --git a/src/apps/actor/character-sheet.js b/src/apps/actor/character-sheet.js new file mode 100644 index 00000000..368fe176 --- /dev/null +++ b/src/apps/actor/character-sheet.js @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4ActorSheet } from "./base-sheet"; + +/** + * The Sheet class for DS4 Character Actors + */ +export class DS4CharacterActorSheet extends DS4ActorSheet { + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + classes: ["sheet", "ds4-actor-sheet", "ds4-character-sheet"], + }); + } + + /** @override */ + async getData(options = {}) { + const context = await super.getData(options); + context.data.system.profile.biography = await TextEditor.enrichHTML(context.data.system.profile.biography, { + async: true, + }); + return context; + } +} diff --git a/src/apps/actor/creature-sheet.js b/src/apps/actor/creature-sheet.js new file mode 100644 index 00000000..fe89dec0 --- /dev/null +++ b/src/apps/actor/creature-sheet.js @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4ActorSheet } from "./base-sheet"; + +/** + * The Sheet class for DS4 Creature Actors + */ +export class DS4CreatureActorSheet extends DS4ActorSheet { + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + classes: ["sheet", "ds4-actor-sheet", "ds4-creature-sheet"], + }); + } + + /** @override */ + async getData(options = {}) { + const context = await super.getData(options); + context.data.system.baseInfo.description = await TextEditor.enrichHTML(context.data.system.baseInfo.description, { + async: true, + }); + return context; + } +} diff --git a/src/apps/dialog-with-listeners.js b/src/apps/dialog-with-listeners.js new file mode 100644 index 00000000..c9a3f2a2 --- /dev/null +++ b/src/apps/dialog-with-listeners.js @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +/** + * @typedef {DialogOptions} DialogWithListenersOptions + * @property {(html: JQuery, app: DialogWithListeners) => void} [activateAdditionalListeners] An optional function to attach additional listeners to the dialog + */ + +/** + * A simple extension to the {@link Dialog} class that allows attaching additional listeners. + */ +export class DialogWithListeners extends Dialog { + /** @override */ + activateListeners(html) { + super.activateListeners(html); + if (this.options.activateAdditionalListeners !== undefined) { + this.options.activateAdditionalListeners(html, this); + } + } +} diff --git a/src/apps/item-sheet.js b/src/apps/item-sheet.js new file mode 100644 index 00000000..1fc6f0aa --- /dev/null +++ b/src/apps/item-sheet.js @@ -0,0 +1,150 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../config"; +import { DS4ActiveEffect } from "../documents/active-effect"; +import { enforce, getGame } from "../utils/utils"; +import { disableOverriddenFields } from "./sheet-helpers"; + +/** + * The Sheet class for DS4 Items + */ +export class DS4ItemSheet extends ItemSheet { + /** @override */ + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + classes: ["sheet", "ds4-item-sheet"], + height: 400, + scrollY: [".ds4-sheet-body"], + tabs: [{ navSelector: ".ds4-sheet-tab-nav", contentSelector: ".ds4-sheet-body", initial: "description" }], + width: 540, + }); + } + + /** @override */ + get template() { + const basePath = "systems/ds4/templates/sheets/item"; + return `${basePath}/${this.item.type}-sheet.hbs`; + } + + /** @override */ + async getData(options = {}) { + const superContext = await super.getData(options); + superContext.data.system.description = await TextEditor.enrichHTML(superContext.data.system.description, { + async: true, + }); + const context = { + ...superContext, + config: DS4, + isOwned: this.item.isOwned, + actor: this.item.actor, + }; + return context; + } + + /** @override */ + _getSubmitData(updateData = {}) { + const data = super._getSubmitData(updateData); + // Prevent submitting overridden values + const overrides = foundry.utils.flattenObject(this.item.overrides); + for (const k of Object.keys(overrides)) { + delete data[k]; + } + return data; + } + + /** @override */ + setPosition(options = {}) { + const position = super.setPosition(options); + if (position) { + const sheetBody = this.element.find(".sheet-body"); + const bodyHeight = position.height - 192; + sheetBody.css("height", bodyHeight); + } + + return position; + } + + /** + * @override + * @param {JQuery} html + */ + activateListeners(html) { + super.activateListeners(html); + + if (!this.options.editable) return; + + html.find(".control-effect").on("click", this.onControlEffect.bind(this)); + + disableOverriddenFields(this.form, this.item.overrides, (key) => `[name="${key}"]`); + } + + /** + * Handles a click on an element of this sheet to control an embedded effect of the item corresponding to this + * sheet. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onControlEffect(event) { + event.preventDefault(); + const a = event.currentTarget; + switch (a.dataset["action"]) { + case "create": + return this.onCreateEffect(); + case "edit": + return this.onEditEffect(event); + case "delete": + return this.onDeleteEffect(event); + } + } + + /** + * Creates a new embedded effect. + * @protected + */ + onCreateEffect() { + DS4ActiveEffect.createDefault(this.item); + } + + /** + * Opens the sheet of the embedded effect corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @porotected + */ + onEditEffect(event) { + const id = $(event.currentTarget) + .parents(embeddedDocumentListEntryProperties.ActiveEffect.selector) + .data(embeddedDocumentListEntryProperties.ActiveEffect.idDataAttribute); + const effect = this.item.effects.get(id); + enforce(effect, getGame().i18n.format("DS4.ErrorItemDoesNotHaveEffect", { id, item: this.item.name })); + effect.sheet?.render(true); + } + + /** + * Deletes the embedded item corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onDeleteEffect(event) { + const li = $(event.currentTarget).parents(embeddedDocumentListEntryProperties.ActiveEffect.selector); + const id = li.data(embeddedDocumentListEntryProperties.ActiveEffect.idDataAttribute); + this.item.deleteEmbeddedDocuments("ActiveEffect", [id]); + li.slideUp(200, () => this.render(false)); + } +} + +/** + * This object contains information about specific properties embedded document list entries for each different type. + */ +const embeddedDocumentListEntryProperties = Object.freeze({ + ActiveEffect: { + selector: ".effect", + idDataAttribute: "effectId", + }, +}); diff --git a/src/apps/sheet-helpers.js b/src/apps/sheet-helpers.js new file mode 100644 index 00000000..0a4ef162 --- /dev/null +++ b/src/apps/sheet-helpers.js @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; + +/** + * Disable elements in the given form that match the selector returned for overridden properties. + * @param {HTMLElement | null} form The form in which to disable fields + * @param {Record} overrides The set of overrides of the underlying document + * @param {(key: string) => string} selector A function that generates a selector, based on a property key + */ +export function disableOverriddenFields(form, overrides, selector) { + const inputs = ["INPUT", "SELECT", "TEXTAREA", "BUTTON"]; + const titleAddition = `(${getGame().i18n.localize("DS4.TooltipNotEditableDueToEffects")})`; + + for (const key of Object.keys(foundry.utils.flattenObject(overrides))) { + const elements = form?.querySelectorAll(selector(key)); + elements?.forEach((element) => { + if (inputs.includes(element.tagName) && !element.hasAttribute("disabled")) { + element.setAttribute("disabled", ""); + const title = element.getAttribute("title"); + const newTitle = title === null ? titleAddition : `${title} ${titleAddition}`; + element.setAttribute("title", newTitle); + } + }); + } +} diff --git a/src/chat-message.ts b/src/chat-message.ts deleted file mode 100644 index 999e8d33..00000000 --- a/src/chat-message.ts +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "./helpers"; - -declare global { - interface FlagConfig { - ChatMessage: { - ds4?: { - flavorData?: Record; - }; - }; - } -} - -export class DS4ChatMessage extends ChatMessage { - /** @override */ - prepareData(): void { - super.prepareData(); - if (this.data.flavor) { - const game = getGame(); - const flavorData = Object.fromEntries( - Object.entries(this.data.flags.ds4?.flavorData ?? {}).map(([key, value]) => [ - key, - typeof value === "string" ? game.i18n.localize(value) : value, - ]), - ); - this.data.flavor = game.i18n.format(this.data.flavor, flavorData); - } - } -} diff --git a/src/common/time-helpers.ts b/src/common/time-helpers.ts deleted file mode 100644 index fb32ae6f..00000000 --- a/src/common/time-helpers.ts +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -export const secondsPerRound = 5; -export const secondsPerMinute = 60; -export const minutesPerHour = 60; -export const hoursPerDay = 24; diff --git a/src/config.ts b/src/config.ts index 2c79cf54..ab6981df 100644 --- a/src/config.ts +++ b/src/config.ts @@ -6,345 +6,358 @@ // SPDX-License-Identifier: MIT const i18nKeys = { - /** - * Define the set of acttack types that can be performed with weapon items - */ - attackTypes: { - melee: "DS4.AttackTypeMelee", - ranged: "DS4.AttackTypeRanged", - meleeRanged: "DS4.AttackTypeMeleeRanged", - }, + /** + * Define the set of acttack types that can be performed with weapon items + */ + attackTypes: { + melee: "DS4.AttackTypeMelee", + ranged: "DS4.AttackTypeRanged", + meleeRanged: "DS4.AttackTypeMeleeRanged", + }, - /** - * Define the set of item availabilties - */ - itemAvailabilities: { - unset: "DS4.ItemAvailabilityUnset", - hamlet: "DS4.ItemAvailabilityHamlet", - village: "DS4.ItemAvailabilityVilage", - city: "DS4.ItemAvailabilityCity", - elves: "DS4.ItemAvailabilityElves", - dwarves: "DS4.ItemAvailabilityDwarves", - nowhere: "DS4.ItemAvailabilityNowhere", - }, + /** + * Define the set of item availabilties + */ + itemAvailabilities: { + unset: "DS4.ItemAvailabilityUnset", + hamlet: "DS4.ItemAvailabilityHamlet", + village: "DS4.ItemAvailabilityVilage", + city: "DS4.ItemAvailabilityCity", + elves: "DS4.ItemAvailabilityElves", + dwarves: "DS4.ItemAvailabilityDwarves", + nowhere: "DS4.ItemAvailabilityNowhere", + }, - /** - * Define the set of item types - */ - itemTypes: { - weapon: "DS4.ItemTypeWeapon", - armor: "DS4.ItemTypeArmor", - shield: "DS4.ItemTypeShield", - spell: "DS4.ItemTypeSpell", - equipment: "DS4.ItemTypeEquipment", - loot: "DS4.ItemTypeLoot", - talent: "DS4.ItemTypeTalent", - racialAbility: "DS4.ItemTypeRacialAbility", - language: "DS4.ItemTypeLanguage", - alphabet: "DS4.ItemTypeAlphabet", - specialCreatureAbility: "DS4.ItemTypeSpecialCreatureAbility", - }, + /** + * Define the set of item types + */ + itemTypes: { + weapon: "DS4.ItemTypeWeapon", + armor: "DS4.ItemTypeArmor", + shield: "DS4.ItemTypeShield", + spell: "DS4.ItemTypeSpell", + equipment: "DS4.ItemTypeEquipment", + loot: "DS4.ItemTypeLoot", + talent: "DS4.ItemTypeTalent", + racialAbility: "DS4.ItemTypeRacialAbility", + language: "DS4.ItemTypeLanguage", + alphabet: "DS4.ItemTypeAlphabet", + specialCreatureAbility: "DS4.ItemTypeSpecialCreatureAbility", + }, - /** - * Define the set of armor types, a character may only wear one item of each at any given time - */ - armorTypes: { - body: "DS4.ArmorTypeBody", - helmet: "DS4.ArmorTypeHelmet", - vambrace: "DS4.ArmorTypeVambrace", - greaves: "DS4.ArmorTypeGreaves", - vambraceGreaves: "DS4.ArmorTypeVambraceGreaves", - }, + /** + * Define the set of armor types, a character may only wear one item of each at any given time + */ + armorTypes: { + body: "DS4.ArmorTypeBody", + helmet: "DS4.ArmorTypeHelmet", + vambrace: "DS4.ArmorTypeVambrace", + greaves: "DS4.ArmorTypeGreaves", + vambraceGreaves: "DS4.ArmorTypeVambraceGreaves", + }, - /** - * Define abbreviations for the armor types - */ - armorTypesAbbr: { - body: "DS4.ArmorTypeBodyAbbr", - helmet: "DS4.ArmorTypeHelmetAbbr", - vambrace: "DS4.ArmorTypeVambraceAbbr", - greaves: "DS4.ArmorTypeGreavesAbbr", - vambraceGreaves: "DS4.ArmorTypeVambraceGreavesAbbr", - }, + /** + * Define abbreviations for the armor types + */ + armorTypesAbbr: { + body: "DS4.ArmorTypeBodyAbbr", + helmet: "DS4.ArmorTypeHelmetAbbr", + vambrace: "DS4.ArmorTypeVambraceAbbr", + greaves: "DS4.ArmorTypeGreavesAbbr", + vambraceGreaves: "DS4.ArmorTypeVambraceGreavesAbbr", + }, - /** - * Define the set of armor materials, used to determine if a character may wear the armor without additional penalties - */ - armorMaterialTypes: { - cloth: "DS4.ArmorMaterialTypeCloth", - leather: "DS4.ArmorMaterialTypeLeather", - chain: "DS4.ArmorMaterialTypeChain", - plate: "DS4.ArmorMaterialTypePlate", - natural: "DS4.ArmorMaterialTypeNatural", - }, + /** + * Define the set of armor materials, used to determine if a character may wear the armor without additional penalties + */ + armorMaterialTypes: { + cloth: "DS4.ArmorMaterialTypeCloth", + leather: "DS4.ArmorMaterialTypeLeather", + chain: "DS4.ArmorMaterialTypeChain", + plate: "DS4.ArmorMaterialTypePlate", + natural: "DS4.ArmorMaterialTypeNatural", + }, - /** - * Define the abbreviations of armor materials - */ - armorMaterialTypesAbbr: { - cloth: "DS4.ArmorMaterialTypeClothAbbr", - leather: "DS4.ArmorMaterialTypeLeatherAbbr", - chain: "DS4.ArmorMaterialTypeChainAbbr", - plate: "DS4.ArmorMaterialTypePlateAbbr", - natural: "DS4.ArmorMaterialTypeNaturalAbbr", - }, + /** + * Define the abbreviations of armor materials + */ + armorMaterialTypesAbbr: { + cloth: "DS4.ArmorMaterialTypeClothAbbr", + leather: "DS4.ArmorMaterialTypeLeatherAbbr", + chain: "DS4.ArmorMaterialTypeChainAbbr", + plate: "DS4.ArmorMaterialTypePlateAbbr", + natural: "DS4.ArmorMaterialTypeNaturalAbbr", + }, - spellTypes: { - spellcasting: "DS4.SpellTypeSpellcasting", - targetedSpellcasting: "DS4.SpellTypeTargetedSpellcasting", - }, + spellTypes: { + spellcasting: "DS4.SpellTypeSpellcasting", + targetedSpellcasting: "DS4.SpellTypeTargetedSpellcasting", + }, - spellCategories: { - healing: "DS4.SpellCategoryHealing", - fire: "DS4.SpellCategoryFire", - ice: "DS4.SpellCategoryIce", - light: "DS4.SpellCategoryLight", - darkness: "DS4.SpellCategoryDarkness", - mindAffecting: "DS4.SpellCategoryMindAffecting", - electricity: "DS4.SpellCategoryElectricity", - none: "DS4.SpellCategoryNone", - unset: "DS4.SpellCategoryUnset", - }, + spellGroups: { + lightning: "DS4.SpellGroupLightning", + earth: "DS4.SpellGroupEarth", + water: "DS4.SpellGroupWater", + ice: "DS4.SpellGroupIce", + fire: "DS4.SpellGroupFire", + healing: "DS4.SpellGroupHealing", + light: "DS4.SpellGroupLight", + air: "DS4.SpellGroupAir", + transport: "DS4.SpellGroupTransport", + damage: "DS4.SpellGroupDamage", + shadow: "DS4.SpellGroupShadow", + protection: "DS4.SpellGroupProtection", + mindAffecting: "DS4.SpellGroupMindAffecting", + demonology: "DS4.SpellGroupDemonology", + necromancy: "DS4.SpellGroupNecromancy", + transmutation: "DS4.SpellGroupTransmutation", + area: "DS4.SpellGroupArea", + }, - /** - * Define the set of actor types - */ - actorTypes: { - character: "DS4.ActorTypeCharacter", - creature: "DS4.ActorTypeCreature", - }, + cooldownDurations: { + "0r": "DS4.CooldownDuration0R", + "1r": "DS4.CooldownDuration1R", + "2r": "DS4.CooldownDuration2R", + "5r": "DS4.CooldownDuration5R", + "10r": "DS4.CooldownDuration10R", + "100r": "DS4.CooldownDuration100R", + "1d": "DS4.CooldownDuration1D", + d20d: "DS4.CooldownDurationD20D", + }, - /** - * Define the set of attributes an actor has - */ - attributes: { - body: "DS4.AttributeBody", - mobility: "DS4.AttributeMobility", - mind: "DS4.AttributeMind", - }, + /** + * Define the set of actor types + */ + actorTypes: { + character: "DS4.ActorTypeCharacter", + creature: "DS4.ActorTypeCreature", + }, - /** - * Define the set of traits an actor has - */ - traits: { - strength: "DS4.TraitStrength", - agility: "DS4.TraitAgility", - intellect: "DS4.TraitIntellect", - constitution: "DS4.TraitConstitution", - dexterity: "DS4.TraitDexterity", - aura: "DS4.TraitAura", - }, + /** + * Define the set of attributes an actor has + */ + attributes: { + body: "DS4.AttributeBody", + mobility: "DS4.AttributeMobility", + mind: "DS4.AttributeMind", + }, - /** - * Define the set of combat values an actor has - */ - combatValues: { - hitPoints: "DS4.CombatValuesHitPoints", - defense: "DS4.CombatValuesDefense", - initiative: "DS4.CombatValuesInitiative", - movement: "DS4.CombatValuesMovement", - meleeAttack: "DS4.CombatValuesMeleeAttack", - rangedAttack: "DS4.CombatValuesRangedAttack", - spellcasting: "DS4.CombatValuesSpellcasting", - targetedSpellcasting: "DS4.CombatValuesTargetedSpellcasting", - }, + /** + * Define the set of traits an actor has + */ + traits: { + strength: "DS4.TraitStrength", + agility: "DS4.TraitAgility", + intellect: "DS4.TraitIntellect", + constitution: "DS4.TraitConstitution", + dexterity: "DS4.TraitDexterity", + aura: "DS4.TraitAura", + }, - /** - * The what do display in the actor sheets for the combat value text (in some languages, abbreviations are necessary) - */ - combatValuesSheet: { - hitPoints: "DS4.CombatValuesHitPointsSheet", - defense: "DS4.CombatValuesDefenseSheet", - initiative: "DS4.CombatValuesInitiativeSheet", - movement: "DS4.CombatValuesMovementSheet", - meleeAttack: "DS4.CombatValuesMeleeAttackSheet", - rangedAttack: "DS4.CombatValuesRangedAttackSheet", - spellcasting: "DS4.CombatValuesSpellcastingSheet", - targetedSpellcasting: "DS4.CombatValuesTargetedSpellcastingSheet", - }, + /** + * Define the set of combat values an actor has + */ + combatValues: { + hitPoints: "DS4.CombatValuesHitPoints", + defense: "DS4.CombatValuesDefense", + initiative: "DS4.CombatValuesInitiative", + movement: "DS4.CombatValuesMovement", + meleeAttack: "DS4.CombatValuesMeleeAttack", + rangedAttack: "DS4.CombatValuesRangedAttack", + spellcasting: "DS4.CombatValuesSpellcasting", + targetedSpellcasting: "DS4.CombatValuesTargetedSpellcasting", + }, - /** - * Define the base info of a character - */ - characterBaseInfo: { - race: "DS4.CharacterBaseInfoRace", - class: "DS4.CharacterBaseInfoClass", - heroClass: "DS4.CharacterBaseInfoHeroClass", - culture: "DS4.CharacterBaseInfoCulture", - }, + /** + * The what do display in the actor sheets for the combat value text (in some languages, abbreviations are necessary) + */ + combatValuesSheet: { + hitPoints: "DS4.CombatValuesHitPointsSheet", + defense: "DS4.CombatValuesDefenseSheet", + initiative: "DS4.CombatValuesInitiativeSheet", + movement: "DS4.CombatValuesMovementSheet", + meleeAttack: "DS4.CombatValuesMeleeAttackSheet", + rangedAttack: "DS4.CombatValuesRangedAttackSheet", + spellcasting: "DS4.CombatValuesSpellcastingSheet", + targetedSpellcasting: "DS4.CombatValuesTargetedSpellcastingSheet", + }, - /** - * Define the progression info of a character - */ - characterProgression: { - level: "DS4.CharacterProgressionLevel", - experiencePoints: "DS4.CharacterProgressionExperiencePoints", - talentPoints: "DS4.CharacterProgressionTalentPoints", - progressPoints: "DS4.CharacterProgressionProgressPoints", - }, + /** + * Define the base info of a character + */ + characterBaseInfo: { + race: "DS4.CharacterBaseInfoRace", + class: "DS4.CharacterBaseInfoClass", + heroClass: "DS4.CharacterBaseInfoHeroClass", + culture: "DS4.CharacterBaseInfoCulture", + }, - /** - * Define the language info of a character - */ - characterLanguage: { - languages: "DS4.CharacterLanguageLanguages", - alphabets: "DS4.CharacterLanguageAlphabets", - }, + /** + * Define the progression info of a character + */ + characterProgression: { + level: "DS4.CharacterProgressionLevel", + experiencePoints: "DS4.CharacterProgressionExperiencePoints", + talentPoints: "DS4.CharacterProgressionTalentPoints", + progressPoints: "DS4.CharacterProgressionProgressPoints", + }, - /** - * Define the profile info of a character - */ - characterProfile: { - biography: "DS4.CharacterProfileBiography", - gender: "DS4.CharacterProfileGender", - birthday: "DS4.CharacterProfileBirthday", - birthplace: "DS4.CharacterProfileBirthplace", - age: "DS4.CharacterProfileAge", - height: "DS4.CharacterProfileHeight", - hairColor: "DS4.CharacterProfileHairColor", - weight: "DS4.CharacterProfileWeight", - eyeColor: "DS4.CharacterProfileEyeColor", - specialCharacteristics: "DS4.CharacterProfileSpecialCharacteristics", - }, - /** - * Define currency elements of a character - */ - characterCurrency: { - gold: "DS4.CharacterCurrencyGold", - silver: "DS4.CharacterCurrencySilver", - copper: "DS4.CharacterCurrencyCopper", - }, + /** + * Define the language info of a character + */ + characterLanguage: { + languages: "DS4.CharacterLanguageLanguages", + alphabets: "DS4.CharacterLanguageAlphabets", + }, - /** - * Define the different creature types a creature can be - */ - creatureTypes: { - animal: "DS4.CreatureTypeAnimal", - construct: "DS4.CreatureTypeConstruct", - humanoid: "DS4.CreatureTypeHumanoid", - magicalEntity: "DS4.CreatureTypeMagicalEntity", - plantBeing: "DS4.CreatureTypePlantBeing", - undead: "DS4.CreatureTypeUndead", - }, + /** + * Define the profile info of a character + */ + characterProfile: { + biography: "DS4.CharacterProfileBiography", + gender: "DS4.CharacterProfileGender", + birthday: "DS4.CharacterProfileBirthday", + birthplace: "DS4.CharacterProfileBirthplace", + age: "DS4.CharacterProfileAge", + height: "DS4.CharacterProfileHeight", + hairColor: "DS4.CharacterProfileHairColor", + weight: "DS4.CharacterProfileWeight", + eyeColor: "DS4.CharacterProfileEyeColor", + specialCharacteristics: "DS4.CharacterProfileSpecialCharacteristics", + }, + /** + * Define currency elements of a character + */ + characterCurrency: { + gold: "DS4.CharacterCurrencyGold", + silver: "DS4.CharacterCurrencySilver", + copper: "DS4.CharacterCurrencyCopper", + }, - /** - * Define the different size categories creatures fall into - */ - creatureSizeCategories: { - tiny: "DS4.CreatureSizeCategoryTiny", - small: "DS4.CreatureSizeCategorySmall", - normal: "DS4.CreatureSizeCategoryNormal", - large: "DS4.CreatureSizeCategoryLarge", - huge: "DS4.CreatureSizeCategoryHuge", - colossal: "DS4.CreatureSizeCategoryColossal", - }, + /** + * Define the different creature types a creature can be + */ + creatureTypes: { + animal: "DS4.CreatureTypeAnimal", + construct: "DS4.CreatureTypeConstruct", + humanoid: "DS4.CreatureTypeHumanoid", + magicalEntity: "DS4.CreatureTypeMagicalEntity", + plantBeing: "DS4.CreatureTypePlantBeing", + undead: "DS4.CreatureTypeUndead", + }, - /** - * Define the base info of a creature - */ - creatureBaseInfo: { - loot: "DS4.CreatureBaseInfoLoot", - foeFactor: "DS4.CreatureBaseInfoFoeFactor", - creatureType: "DS4.CreatureBaseInfoCreatureType", - sizeCategory: "DS4.CreatureBaseInfoSizeCategory", - experiencePoints: "DS4.CreatureBaseInfoExperiencePoints", - description: "DS4.CreatureBaseInfoDescription", - }, + /** + * Define the different size categories creatures fall into + */ + creatureSizeCategories: { + tiny: "DS4.CreatureSizeCategoryTiny", + small: "DS4.CreatureSizeCategorySmall", + normal: "DS4.CreatureSizeCategoryNormal", + large: "DS4.CreatureSizeCategoryLarge", + huge: "DS4.CreatureSizeCategoryHuge", + colossal: "DS4.CreatureSizeCategoryColossal", + }, - /** - * Define translations for available distance units - */ - distanceUnits: { - meter: "DS4.UnitMeters", - kilometer: "DS4.UnitKilometers", - custom: "DS4.UnitCustom", - }, - /** - * Define abbreviations for available distance units - */ - distanceUnitsAbbr: { - meter: "DS4.UnitMetersAbbr", - kilometer: "DS4.UnitKilometersAbbr", - custom: "DS4.UnitCustomAbbr", - }, + /** + * Define the base info of a creature + */ + creatureBaseInfo: { + loot: "DS4.CreatureBaseInfoLoot", + foeFactor: "DS4.CreatureBaseInfoFoeFactor", + creatureType: "DS4.CreatureBaseInfoCreatureType", + sizeCategory: "DS4.CreatureBaseInfoSizeCategory", + experiencePoints: "DS4.CreatureBaseInfoExperiencePoints", + description: "DS4.CreatureBaseInfoDescription", + }, - /** - * Define translations for available duration units - */ - temporalUnits: { - rounds: "DS4.UnitRounds", - minutes: "DS4.UnitMinutes", - hours: "DS4.UnitHours", - days: "DS4.UnitDays", - }, + /** + * Define translations for available distance units + */ + distanceUnits: { + meter: "DS4.UnitMeters", + kilometer: "DS4.UnitKilometers", + custom: "DS4.UnitCustom", + }, + /** + * Define abbreviations for available distance units + */ + distanceUnitsAbbr: { + meter: "DS4.UnitMetersAbbr", + kilometer: "DS4.UnitKilometersAbbr", + custom: "DS4.UnitCustomAbbr", + }, - /** - * Define translations for available duration units including "custom" - */ - customTemporalUnits: { - rounds: "DS4.UnitRounds", - minutes: "DS4.UnitMinutes", - hours: "DS4.UnitHours", - days: "DS4.UnitDays", - custom: "DS4.UnitCustom", - }, + /** + * Define translations for available duration units + */ + temporalUnits: { + rounds: "DS4.UnitRounds", + minutes: "DS4.UnitMinutes", + hours: "DS4.UnitHours", + days: "DS4.UnitDays", + custom: "DS4.UnitCustom", + }, - /** - * Define abbreviations for available duration units - */ - temporalUnitsAbbr: { - rounds: "DS4.UnitRoundsAbbr", - minutes: "DS4.UnitMinutesAbbr", - hours: "DS4.UnitHoursAbbr", - days: "DS4.UnitDaysAbbr", - }, + /** + * Define abbreviations for available duration units + */ + temporalUnitsAbbr: { + rounds: "DS4.UnitRoundsAbbr", + minutes: "DS4.UnitMinutesAbbr", + hours: "DS4.UnitHoursAbbr", + days: "DS4.UnitDaysAbbr", + custom: "DS4.UnitCustomAbbr", + }, - /** - * Define abbreviations for available duration units including "custom" - */ - customTemporalUnitsAbbr: { - rounds: "DS4.UnitRoundsAbbr", - minutes: "DS4.UnitMinutesAbbr", - hours: "DS4.UnitHoursAbbr", - days: "DS4.UnitDaysAbbr", - custom: "DS4.UnitCustomAbbr", - }, + checks: { + appraise: "DS4.ChecksAppraise", + changeSpell: "DS4.ChecksChangeSpell", + climb: "DS4.ChecksClimb", + communicate: "DS4.ChecksCommunicate", + decipherScript: "DS4.ChecksDecipherScript", + defend: "DS4.ChecksDefend", + defyPoison: "DS4.ChecksDefyPoison", + disableTraps: "DS4.ChecksDisableTraps", + featOfStrength: "DS4.ChecksFeatOfStrength", + flirt: "DS4.ChecksFlirt", + haggle: "DS4.ChecksHaggle", + hide: "DS4.ChecksHide", + identifyMagic: "DS4.ChecksIdentifyMagic", + jump: "DS4.ChecksJump", + knowledge: "DS4.ChecksKnowledge", + openLock: "DS4.ChecksOpenLock", + perception: "DS4.ChecksPerception", + pickPocket: "DS4.ChecksPickPocket", + readTracks: "DS4.ChecksReadTracks", + resistDisease: "DS4.ChecksResistDisease", + ride: "DS4.ChecksRide", + search: "DS4.ChecksSearch", + senseMagic: "DS4.ChecksSenseMagic", + sneak: "DS4.ChecksSneak", + startFire: "DS4.ChecksStartFire", + swim: "DS4.ChecksSwim", + wakeUp: "DS4.ChecksWakeUp", + workMechanism: "DS4.ChecksWorkMechanism", + }, - checks: { - appraise: "DS4.ChecksAppraise", - changeSpell: "DS4.ChecksChangeSpell", - climb: "DS4.ChecksClimb", - communicate: "DS4.ChecksCommunicate", - decipherScript: "DS4.ChecksDecipherScript", - defend: "DS4.ChecksDefend", - defyPoison: "DS4.ChecksDefyPoison", - disableTraps: "DS4.ChecksDisableTraps", - featOfStrength: "DS4.ChecksFeatOfStrength", - flirt: "DS4.ChecksFlirt", - haggle: "DS4.ChecksHaggle", - hide: "DS4.ChecksHide", - identifyMagic: "DS4.ChecksIdentifyMagic", - jump: "DS4.ChecksJump", - knowledge: "DS4.ChecksKnowledge", - openLock: "DS4.ChecksOpenLock", - perception: "DS4.ChecksPerception", - pickPocket: "DS4.ChecksPickPocket", - readTracks: "DS4.ChecksReadTracks", - resistDisease: "DS4.ChecksResistDisease", - ride: "DS4.ChecksRide", - search: "DS4.ChecksSearch", - senseMagic: "DS4.ChecksSenseMagic", - sneak: "DS4.ChecksSneak", - startFire: "DS4.ChecksStartFire", - swim: "DS4.ChecksSwim", - wakeUp: "DS4.ChecksWakeUp", - workMechanism: "DS4.ChecksWorkMechanism", - }, + /** + * Translations for the standard check modifiers + */ + checkModifiers: { + routine: "DS4.CheckModifierRoutine", + veryEasy: "DS4.CheckModifierVeryEasy", + easy: "DS4.CheckModifierEasy", + normal: "DS4.CheckModifierMormal", + difficult: "DS4.CheckModifierDifficult", + veryDifficult: "DS4.CheckModifierVeryDifficult", + extremelyDifficult: "DS4.CheckModifierExtremelyDifficult", + custom: "DS4.CheckModifierCustom", + }, }; export const DS4 = { - // ASCII Artwork - ASCII: String.raw`_____________________________________________________________________________________________ + // ASCII Artwork + ASCII: String.raw`_____________________________________________________________________________________________ ____ _ _ _ _ ____ _____ ___ _ _ ____ _ _ __ _______ ____ ____ _ _ | _ \| | | | \ | |/ ___| ____/ _ \| \ | / ___|| | / \\ \ / / ____| _ \/ ___| | || | | | | | | | | \| | | _| _|| | | | \| \___ \| | / _ \\ V /| _| | |_) \___ \ | || |_ @@ -352,87 +365,100 @@ export const DS4 = { |____/ \___/|_| \_|\____|_____\___/|_| \_|____/|_____/_/ \_\_| |_____|_| \_\____/ |_| =============================================================================================`, + /** + * A dictionary of dictionaries each mapping keys to localized strings + * resp. their localization keys. + * The localization is assumed to take place on each reload. + */ + i18n: i18nKeys, + + /** + * A dictionary of dictionaries each mapping keys to localizion keys. + */ + i18nKeys, + + /** + * A dictionary of dictionaries mapping keys to icon file paths. + */ + icons: { /** - * A dictionary of dictionaries each mapping keys to localized strings - * resp. their localization keys. - * The localization is assumed to take place on each reload. + * Define the file paths to icon images */ - i18n: i18nKeys, - - /** - * A dictionary of dictionaries each mapping keys to localizion keys. - */ - i18nKeys, - - /** - * A dictionary of dictionaries mapping keys to icon file paths. - */ - icons: { - /** - * Define the file paths to icon images - */ - attackTypes: { - melee: "systems/ds4/assets/icons/official/combat-values/melee-attack.png", - meleeRanged: "systems/ds4/assets/icons/official/combat-values/melee-ranged-attack.png", - ranged: "systems/ds4/assets/icons/official/combat-values/ranged-attack.png", - }, - - /** - * Define the file paths to icon images - */ - spellTypes: { - spellcasting: "systems/ds4/assets/icons/official/combat-values/spellcasting.png", - targetedSpellcasting: "systems/ds4/assets/icons/official/combat-values/targeted-spellcasting.png", - }, - - /** - * Define the file paths to check images - */ - checks: { - appraise: "systems/ds4/assets/icons/game-icons/delapouite/two-coins.svg", - changeSpell: "systems/ds4/assets/icons/game-icons/delapouite/card-exchange.svg", - climb: "systems/ds4/assets/icons/game-icons/caro-asercion/mountain-climbing.svg", - communicate: "systems/ds4/assets/icons/game-icons/delapouite/discussion.svg", - decipherScript: "systems/ds4/assets/icons/game-icons/lorc/rune-stone.svg", - defend: "systems/ds4/assets/icons/game-icons/sbed/shield.svg", - defyPoison: "systems/ds4/assets/icons/game-icons/lorc/poison-bottle.svg", - disableTraps: "systems/ds4/assets/icons/game-icons/lorc/wolf-trap.svg", - featOfStrength: "systems/ds4/assets/icons/game-icons/delapouite/biceps.svg", - flirt: "systems/ds4/assets/icons/game-icons/lorc/charm.svg", - haggle: "systems/ds4/assets/icons/game-icons/lorc/cash.svg", - hide: "systems/ds4/assets/icons/game-icons/lorc/hidden.svg", - identifyMagic: "systems/ds4/assets/icons/game-icons/lorc/uncertainty.svg", - jump: "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", - knowledge: "systems/ds4/assets/icons/game-icons/delapouite/bookshelf.svg", - openLock: "systems/ds4/assets/icons/game-icons/delapouite/padlock-open.svg", - perception: "systems/ds4/assets/icons/game-icons/lorc/awareness.svg", - pickPocket: "systems/ds4/assets/icons/game-icons/darkzaitev/robber-hand.svg", - readTracks: "systems/ds4/assets/icons/game-icons/delapouite/deer-track.svg", - resistDisease: "systems/ds4/assets/icons/game-icons/lorc/virus.svg", - ride: "systems/ds4/assets/icons/game-icons/delapouite/cavalry.svg", - search: "systems/ds4/assets/icons/game-icons/lorc/magnifying-glass.svg", - senseMagic: "systems/ds4/assets/icons/game-icons/delapouite/sparkles.svg", - sneak: "systems/ds4/assets/icons/game-icons/delapouite/mute.svg", - startFire: "systems/ds4/assets/icons/game-icons/lorc/campfire.svg", - swim: "systems/ds4/assets/icons/game-icons/delapouite/pool-dive.svg", - wakeUp: "systems/ds4/assets/icons/game-icons/delapouite/alarm-clock.svg", - workMechanism: "systems/ds4/assets/icons/game-icons/lorc/lever.svg", - }, + attackTypes: { + melee: "systems/ds4/assets/icons/official/combat-values/melee-attack.png", + meleeRanged: "systems/ds4/assets/icons/official/combat-values/melee-ranged-attack.png", + ranged: "systems/ds4/assets/icons/official/combat-values/ranged-attack.png", }, /** - * Define the profile info types for handlebars of a character + * Define the file paths to icon images */ - characterProfileDTypes: { - biography: "String", - gender: "String", - birthday: "String", - birthplace: "String", - age: "Number", - height: "Number", - hairColor: "String", - weight: "Number", - eyeColor: "String", - specialCharacteristics: "String", + spellTypes: { + spellcasting: "systems/ds4/assets/icons/official/combat-values/spellcasting.png", + targetedSpellcasting: "systems/ds4/assets/icons/official/combat-values/targeted-spellcasting.png", }, + + /** + * Define the file paths to check images + */ + checks: { + appraise: "systems/ds4/assets/icons/game-icons/delapouite/two-coins.svg", + changeSpell: "systems/ds4/assets/icons/game-icons/delapouite/card-exchange.svg", + climb: "systems/ds4/assets/icons/game-icons/caro-asercion/mountain-climbing.svg", + communicate: "systems/ds4/assets/icons/game-icons/delapouite/discussion.svg", + decipherScript: "systems/ds4/assets/icons/game-icons/lorc/rune-stone.svg", + defend: "systems/ds4/assets/icons/game-icons/sbed/shield.svg", + defyPoison: "systems/ds4/assets/icons/game-icons/lorc/poison-bottle.svg", + disableTraps: "systems/ds4/assets/icons/game-icons/lorc/wolf-trap.svg", + featOfStrength: "systems/ds4/assets/icons/game-icons/delapouite/biceps.svg", + flirt: "systems/ds4/assets/icons/game-icons/lorc/charm.svg", + haggle: "systems/ds4/assets/icons/game-icons/lorc/cash.svg", + hide: "systems/ds4/assets/icons/game-icons/lorc/hidden.svg", + identifyMagic: "systems/ds4/assets/icons/game-icons/lorc/uncertainty.svg", + jump: "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", + knowledge: "systems/ds4/assets/icons/game-icons/delapouite/bookshelf.svg", + openLock: "systems/ds4/assets/icons/game-icons/delapouite/padlock-open.svg", + perception: "systems/ds4/assets/icons/game-icons/lorc/awareness.svg", + pickPocket: "systems/ds4/assets/icons/game-icons/darkzaitev/robber-hand.svg", + readTracks: "systems/ds4/assets/icons/game-icons/delapouite/deer-track.svg", + resistDisease: "systems/ds4/assets/icons/game-icons/lorc/virus.svg", + ride: "systems/ds4/assets/icons/game-icons/delapouite/cavalry.svg", + search: "systems/ds4/assets/icons/game-icons/lorc/magnifying-glass.svg", + senseMagic: "systems/ds4/assets/icons/game-icons/delapouite/sparkles.svg", + sneak: "systems/ds4/assets/icons/game-icons/delapouite/mute.svg", + startFire: "systems/ds4/assets/icons/game-icons/lorc/campfire.svg", + swim: "systems/ds4/assets/icons/game-icons/delapouite/pool-dive.svg", + wakeUp: "systems/ds4/assets/icons/game-icons/delapouite/alarm-clock.svg", + workMechanism: "systems/ds4/assets/icons/game-icons/lorc/lever.svg", + }, + }, + + /** + * Profile info types for handlebars of a character + */ + characterProfileDTypes: { + biography: "String", + gender: "String", + birthday: "String", + birthplace: "String", + age: "Number", + height: "Number", + hairColor: "String", + weight: "Number", + eyeColor: "String", + specialCharacteristics: "String", + }, + + /** + * Standard check modifiers + */ + checkModifiers: { + routine: 8, + veryEasy: 4, + easy: 2, + normal: 0, + difficult: -2, + veryDifficult: -4, + extremelyDifficult: -8, + }, }; diff --git a/src/dice/check-evaluation.ts b/src/dice/check-evaluation.ts new file mode 100644 index 00000000..4b007160 --- /dev/null +++ b/src/dice/check-evaluation.ts @@ -0,0 +1,136 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; + +export function evaluateCheck( + dice: number[], + checkTargetNumber: number, + { + maximumCoupResult = 1, + minimumFumbleResult = 20, + canFumble = true, + }: { maximumCoupResult?: number; minimumFumbleResult?: number; canFumble?: boolean } = {}, +): SubCheckResult[] { + const diceWithSubChecks = assignSubChecksToDice(dice, checkTargetNumber, { + maximumCoupResult: maximumCoupResult, + }); + return evaluateDiceWithSubChecks(diceWithSubChecks, { + maximumCoupResult: maximumCoupResult, + minimumFumbleResult: minimumFumbleResult, + canFumble: canFumble, + }); +} + +interface DieWithSubCheck { + result: number; + checkTargetNumber: number; +} + +function assignSubChecksToDice( + dice: number[], + checkTargetNumber: number, + { + maximumCoupResult = 1, + }: { + maximumCoupResult?: number; + } = {}, +): DieWithSubCheck[] { + const requiredNumberOfDice = getRequiredNumberOfDice(checkTargetNumber); + + if (dice.length !== requiredNumberOfDice || requiredNumberOfDice < 1) { + throw new Error(getGame().i18n.localize("DS4.ErrorInvalidNumberOfDice")); + } + + const checkTargetNumberForLastSubCheck = checkTargetNumber - 20 * (requiredNumberOfDice - 1); + + const indexOfSmallestNonCoup = findIndexOfSmallestNonCoup(dice, maximumCoupResult); + const indexOfFirstCoup = dice.findIndex((die) => die <= maximumCoupResult); + const indexForLastSubCheck = shouldUseCoupForLastSubCheck( + indexOfSmallestNonCoup, + indexOfFirstCoup, + dice, + checkTargetNumberForLastSubCheck, + ) + ? indexOfFirstCoup + : indexOfSmallestNonCoup; + + return dice.map((die, index) => ({ + result: die, + checkTargetNumber: index === indexForLastSubCheck ? checkTargetNumberForLastSubCheck : 20, + })); +} + +function findIndexOfSmallestNonCoup(dice: number[], maximumCoupResult: number): number { + return dice + .map((die, index): [number, number] => [die, index]) + .filter((indexedDie) => indexedDie[0] > maximumCoupResult) + .reduce( + (smallestIndexedDie, indexedDie) => (indexedDie[0] < smallestIndexedDie[0] ? indexedDie : smallestIndexedDie), + [Infinity, -1], + )[1]; +} + +function shouldUseCoupForLastSubCheck( + indexOfSmallestNonCoup: number, + indexOfFirstCoup: number, + dice: readonly number[], + checkTargetNumberForLastSubCheck: number, +) { + if (indexOfFirstCoup !== -1 && indexOfSmallestNonCoup === -1) { + return true; + } + const smallestNonCoup = dice[indexOfSmallestNonCoup]; + if ( + !Number.isInteger(indexOfFirstCoup) || + indexOfFirstCoup < -1 || + !Number.isInteger(indexOfSmallestNonCoup) || + smallestNonCoup === undefined + ) { + throw new Error("Received an invalid value for the parameter indexOfSmallestNonCoup or indexOfFirstCoup,"); + } + return ( + indexOfFirstCoup !== -1 && + smallestNonCoup > checkTargetNumberForLastSubCheck && + smallestNonCoup + checkTargetNumberForLastSubCheck > 20 + ); +} + +interface SubCheckResult extends DieWithSubCheck { + active?: boolean; + discarded?: boolean; + success?: boolean; + failure?: boolean; + count?: number; +} + +function evaluateDiceWithSubChecks( + results: DieWithSubCheck[], + { + maximumCoupResult, + minimumFumbleResult, + canFumble, + }: { maximumCoupResult: number; minimumFumbleResult: number; canFumble: boolean }, +): SubCheckResult[] { + return results.map((dieWithSubCheck, index) => { + const result: SubCheckResult = { + ...dieWithSubCheck, + active: dieWithSubCheck.result <= dieWithSubCheck.checkTargetNumber, + discarded: dieWithSubCheck.result > dieWithSubCheck.checkTargetNumber, + }; + if (result.result <= maximumCoupResult) { + result.success = true; + result.count = result.checkTargetNumber; + result.active = true; + result.discarded = false; + } + if (index === 0 && canFumble && result.result >= minimumFumbleResult) result.failure = true; + return result; + }); +} + +export function getRequiredNumberOfDice(checkTargetNumber: number): number { + return Math.max(Math.ceil(checkTargetNumber / 20), 1); +} diff --git a/src/dice/check-factory.js b/src/dice/check-factory.js new file mode 100644 index 00000000..6063ca98 --- /dev/null +++ b/src/dice/check-factory.js @@ -0,0 +1,300 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// +// SPDX-License-Identifier: MIT + +import { DialogWithListeners } from "../apps/dialog-with-listeners"; +import { DS4 } from "../config"; +import { getGame } from "../utils/utils"; + +/** @typedef {"publicroll" | "gmroll" | "gmroll" | "selfroll"} RollModes */ + +/** + * Most basic class responsible for generating the chat formula and passing it to the chat as roll. + */ +class CheckFactory { + /** + * @param {number} checkTargetNumber The check target number for this check factory + * @param {number} checkModifier The check modifier for this check factory + * @param {Partial} [options] Options for this check factory + */ + constructor(checkTargetNumber, checkModifier, options = {}) { + this.#checkTargetNumber = checkTargetNumber; + this.#checkModifier = checkModifier; + this.#options = foundry.utils.mergeObject(this.constructor.defaultOptions, options); + } + + /** + * The check target number for this check factory. + * @type {number} + */ + #checkTargetNumber; + + /** + * The check modifier for this check factory. + * @type {number} + */ + #checkModifier; + + /** + * The options for this check factory. + * @type {DS4CheckFactoryOptions} + */ + #options; + + /** + * The default options of thos CheckFactory class. Upon instantiation, they are merged with the explicitly provided options. + * @type {DS4CheckFactoryOptions} + */ + static get defaultOptions() { + return { + maximumCoupResult: 1, + minimumFumbleResult: 20, + useSlayingDice: false, + rollMode: "publicroll", + }; + } + + /** + * Execute this check factory. + * @returns {Promise} A promise that resolves to the created chat message for the roll */ + async execute() { + const innerFormula = ["ds", this.createCheckTargetNumberModifier(), this.createCoupFumbleModifier()].filterJoin(""); + const formula = this.#options.useSlayingDice ? `{${innerFormula}}x` : innerFormula; + const roll = Roll.create(formula); + const speaker = this.#options.speaker ?? ChatMessage.getSpeaker(); + + return roll.toMessage( + { + speaker, + flavor: this.#options.flavor, + flags: this.#options.flavorData ? { ds4: { flavorData: this.#options.flavorData } } : undefined, + }, + { rollMode: this.#options.rollMode, create: true }, + ); + } + + /** + * Create the check target number modifier for this roll. + * @returns string + */ + createCheckTargetNumberModifier() { + const totalCheckTargetNumber = this.#checkTargetNumber + this.#checkModifier; + return totalCheckTargetNumber >= 0 ? `v${this.#checkTargetNumber + this.#checkModifier}` : "v0"; + } + + /** + * Create the coup fumble modifier for this roll. + * @returns {string | null} + */ + createCoupFumbleModifier() { + const isMinimumFumbleResultRequired = + this.#options.minimumFumbleResult !== this.constructor.defaultOptions.minimumFumbleResult; + const isMaximumCoupResultRequired = + this.#options.maximumCoupResult !== this.constructor.defaultOptions.maximumCoupResult; + + if (isMinimumFumbleResultRequired || isMaximumCoupResultRequired) { + return `c${this.#options.maximumCoupResult ?? ""}:${this.#options.minimumFumbleResult ?? ""}`; + } else { + return null; + } + } +} + +/** + * Asks the user for all unknown/necessary information and passes them on to perform a roll. + * @param {number} checkTargetNumber The Check Target Number ("CTN") + * @param {Partial} [options={}] Options changing the behavior of the roll and message. + * @returns {Promise} A promise that resolves to the chat message created by the roll + */ +export async function createCheckRoll(checkTargetNumber, options = {}) { + // Ask for additional required data; + const interactiveRollData = await askForInteractiveRollData(checkTargetNumber, options); + + const newTargetValue = interactiveRollData.checkTargetNumber ?? checkTargetNumber; + const checkModifier = interactiveRollData.checkModifier ?? 0; + /** @type {Partial} */ + const newOptions = { + maximumCoupResult: interactiveRollData.maximumCoupResult ?? options.maximumCoupResult, + minimumFumbleResult: interactiveRollData.minimumFumbleResult ?? options.minimumFumbleResult, + useSlayingDice: getGame().settings.get("ds4", "useSlayingDiceForAutomatedChecks"), + rollMode: interactiveRollData.rollMode ?? options.rollMode, + flavor: options.flavor, + flavorData: options.flavorData, + speaker: options.speaker, + }; + + // Create Factory + const cf = new CheckFactory(newTargetValue, checkModifier, newOptions); + + // Possibly additional processing + + // Execute roll + return cf.execute(); +} + +/** + * Responsible for rendering the modal interface asking for the check modifier and (currently) additional + * data. + * + * @notes + * At the moment, this asks for more data than it will do after some iterations. + * + * @param {number} checkTargetNumber The check target number + * @param {Partial} [options={}] Predefined roll options + * @param {template?: string | undefined; title?: string | undefined} [additionalOptions={}] Additional options to use for the dialog + * @returns {Promise>} A promise that resolves to the data given by the user. + */ +async function askForInteractiveRollData(checkTargetNumber, options = {}, { template, title } = {}) { + const usedTemplate = template ?? "systems/ds4/templates/dialogs/roll-options.hbs"; + const usedTitle = title ?? getGame().i18n.localize("DS4.DialogRollOptionsDefaultTitle"); + const id = foundry.utils.randomID(); + const templateData = { + title: usedTitle, + checkTargetNumber: checkTargetNumber, + maximumCoupResult: options.maximumCoupResult ?? this.constructor.defaultOptions.maximumCoupResult, + minimumFumbleResult: options.minimumFumbleResult ?? this.constructor.defaultOptions.minimumFumbleResult, + rollMode: options.rollMode ?? getGame().settings.get("core", "rollMode"), + rollModes: CONFIG.Dice.rollModes, + checkModifiers: Object.entries(DS4.i18n.checkModifiers).map(([key, translation]) => { + if (key in DS4.checkModifiers) { + const value = DS4.checkModifiers[key]; + const label = `${translation} (${value >= 0 ? `+${value}` : value})`; + return { value, label }; + } + return { value: key, label: translation }; + }), + id, + }; + const renderedHtml = await renderTemplate(usedTemplate, templateData); + + const dialogPromise = new Promise((resolve) => { + new DialogWithListeners( + { + title: usedTitle, + content: renderedHtml, + buttons: { + ok: { + icon: '', + label: getGame().i18n.localize("DS4.GenericOkButton"), + callback: (html) => { + if (!("jquery" in html)) { + throw new Error( + getGame().i18n.format("DS4.ErrorUnexpectedHtmlType", { + exType: "JQuery", + realType: "HTMLElement", + }), + ); + } else { + const innerForm = html[0]?.querySelector("form"); + if (!innerForm) { + throw new Error( + getGame().i18n.format("DS4.ErrorCouldNotFindHtmlElement", { + htmlElement: "form", + }), + ); + } + resolve(innerForm); + } + }, + }, + cancel: { + icon: '', + label: getGame().i18n.localize("DS4.GenericCancelButton"), + }, + }, + default: "ok", + }, + { + activateAdditionalListeners: (html, app) => { + const checkModifierCustomFormGroup = html.find(`#check-modifier-custom-${id}`).parent(".form-group"); + html.find(`#check-modifier-${id}`).on("change", (event) => { + if (event.currentTarget.value === "custom" && checkModifierCustomFormGroup.hasClass("ds4-hidden")) { + checkModifierCustomFormGroup.removeClass("ds4-hidden"); + app.setPosition({ height: "auto" }); + } else if (!checkModifierCustomFormGroup.hasClass("ds4-hidden")) { + checkModifierCustomFormGroup.addClass("ds4-hidden"); + app.setPosition({ height: "auto" }); + } + }); + }, + id, + }, + ).render(true); + }); + const dialogForm = await dialogPromise; + return parseDialogFormData(dialogForm); +} + +/** + * Extracts Dialog data from the returned DOM element. + * @param {HTMLFormElement} formData The filed dialog + * @returns {Partial} + */ +function parseDialogFormData(formData) { + const chosenCheckTargetNumber = parseInt(formData["check-target-number"]?.value); + const chosenCheckModifier = formData["check-modifier"]?.value; + + const chosenCheckModifierValue = + chosenCheckModifier === "custom" + ? parseInt(formData["check-modifier-custom"]?.value) + : parseInt(chosenCheckModifier); + + const chosenMaximumCoupResult = parseInt(formData["maximum-coup-result"]?.value); + const chosenMinimumFumbleResult = parseInt(formData["minimum-fumble-result"]?.value); + const chosenRollMode = formData["roll-mode"]?.value; + + return { + checkTargetNumber: Number.isSafeInteger(chosenCheckTargetNumber) ? chosenCheckTargetNumber : undefined, + checkModifier: Number.isSafeInteger(chosenCheckModifierValue) ? chosenCheckModifierValue : undefined, + maximumCoupResult: Number.isSafeInteger(chosenMaximumCoupResult) ? chosenMaximumCoupResult : undefined, + minimumFumbleResult: Number.isSafeInteger(chosenMinimumFumbleResult) ? chosenMinimumFumbleResult : undefined, + rollMode: Object.keys(CONFIG.Dice.rollModes).includes(chosenRollMode) ? chosenRollMode : undefined, + }; +} + +/** + * Contains data that needs retrieval from an interactive Dialog. + * @typedef {object} InteractiveRollData + * @property {number} checkModifier + * @property {RollModes} rollMode + */ + +/** + * Contains *CURRENTLY* necessary Data for drafting a roll. + * + * @deprecated + * Quite a lot of this information is requested due to a lack of automation: + * - maximumCoupResult + * - minimumFumbleResult + * - checkTargetNumber + * + * They will and should be removed once effects and data retrieval is in place. + * If a "raw" roll dialog is necessary, create another pre-processing Dialog + * class asking for the required information. + * This interface should then be replaced with the {@link InteractiveRollData}. + * @typedef {object} IntermediateInteractiveRollData + * @property {number} checkTargetNumber + * @property {number} maximumCoupResult + * @property {number} minimumFumbleResult + */ + +/** + * The minimum behavioral options that need to be passed to the factory. + * @typedef {object} DS4CheckFactoryOptions + * @property {number} maximumCoupResult + * @property {number} minimumFumbleResult + * @property {boolean} useSlayingDice + * @property {RollModes} rollMode + * @property {string} [flavor] + * @property {Record} [flavorData] + * @property {ChatSpeakerData} [speaker] + */ + +/** + * @typedef {object} ChatSpeakerData + * @property {string | null} [scene] + * @property {string | null} [actor] + * @property {string | null} [token] + * @property {string | null} [alias] + */ diff --git a/src/dice/check.js b/src/dice/check.js new file mode 100644 index 00000000..38bd9383 --- /dev/null +++ b/src/dice/check.js @@ -0,0 +1,143 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; +import { evaluateCheck, getRequiredNumberOfDice } from "./check-evaluation"; + +/** + * Implements DS4 Checks as an emulated "dice throw". + * + * @example + * - Roll a check against a Check Target Number (CTN) of 18: `/r dsv18` + * - Roll a check with multiple dice against a CTN of 34: `/r dsv34` + * - Roll a check with a racial ability that makes `2` a coup and `19` a fumble: `/r dsv19c2:19` + * - Roll a check with a racial ability that makes `5` a coup and default fumble: `/r dsv19c5` + */ +export class DS4Check extends foundry.dice.terms.DiceTerm { + constructor({ modifiers = [], results = [], options } = {}) { + super({ + faces: 20, + results, + modifiers, + options, + }); + + // Parse and store check target number + const checkTargetNumberModifier = this.modifiers.filter((m) => m[0] === "v")[0]; + const ctnRgx = new RegExp("v([0-9]+)?"); + const ctnMatch = checkTargetNumberModifier?.match(ctnRgx); + if (ctnMatch) { + const [parseCheckTargetNumber] = ctnMatch.slice(1); + this.checkTargetNumber = parseCheckTargetNumber + ? parseInt(parseCheckTargetNumber) + : DS4Check.DEFAULT_CHECK_TARGET_NUMBER; + } + + this.number = getRequiredNumberOfDice(this.checkTargetNumber); + + // Parse and store maximumCoupResult and minimumFumbleResult + const coupFumbleModifier = this.modifiers.filter((m) => m[0] === "c")[0]; + const cfmRgx = new RegExp("c([0-9]+)?(:([0-9]+))?"); + const cfmMatch = coupFumbleModifier?.match(cfmRgx); + if (cfmMatch) { + const parseMaximumCoupResult = cfmMatch[1]; + const parseMinimumFumbleResult = cfmMatch[3]; + this.maximumCoupResult = parseMaximumCoupResult + ? parseInt(parseMaximumCoupResult) + : DS4Check.DEFAULT_MAXIMUM_COUP_RESULT; + this.minimumFumbleResult = parseMinimumFumbleResult + ? parseInt(parseMinimumFumbleResult) + : DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT; + if (this.minimumFumbleResult <= this.maximumCoupResult) + throw new SyntaxError(getGame().i18n.localize("DS4.ErrorDiceCoupFumbleOverlap")); + } + + // Parse and store no fumble + const noFumbleModifier = this.modifiers.filter((m) => m[0] === "n")[0]; + if (noFumbleModifier) { + this.canFumble = false; + } + + if (this.results.length > 0) { + this.evaluateResults(); + } + } + + /** @type {boolean | null} */ + coup = null; + /** @type {boolean | null} */ + fumble = null; + canFumble = true; + checkTargetNumber = DS4Check.DEFAULT_CHECK_TARGET_NUMBER; + minimumFumbleResult = DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT; + maximumCoupResult = DS4Check.DEFAULT_MAXIMUM_COUP_RESULT; + + /** @override */ + get expression() { + return `ds${this.modifiers.join("")}`; + } + + /** @override */ + get total() { + if (this.fumble) return 0; + return super.total; + } + + /** @override */ + _evaluateSync(options = {}) { + super._evaluateSync(options); + this.evaluateResults(); + return this; + } + + /** @override */ + async _evaluateAsync(options = {}) { + await super._evaluateAsync(options); + this.evaluateResults(); + return this; + } + + /** @override */ + roll({ minimize = false, maximize = false } = {}) { + // Swap minimize / maximize because in DS4, the best possible roll is a 1 and the worst possible roll is a 20 + return super.roll({ minimize: maximize, maximize: minimize }); + } + + /** + * Perform additional evaluation after the individual results have been evaluated. + * @protected + */ + evaluateResults() { + const dice = this.results.map((die) => die.result); + const results = evaluateCheck(dice, this.checkTargetNumber, { + maximumCoupResult: this.maximumCoupResult, + minimumFumbleResult: this.minimumFumbleResult, + canFumble: this.canFumble, + }); + this.results = results; + this.coup = results[0]?.success ?? false; + this.fumble = results[0]?.failure ?? false; + } + + /** + * @remarks "min" and "max" are filtered out because they are irrelevant for + * {@link DS4Check}s and only result in some dice rolls being highlighted + * incorrectly. + * @override + */ + getResultCSS(result) { + return super.getResultCSS(result).filter((cssClass) => cssClass !== "min" && cssClass !== "max"); + } + + static DEFAULT_CHECK_TARGET_NUMBER = 10; + static DEFAULT_MAXIMUM_COUP_RESULT = 1; + static DEFAULT_MINIMUM_FUMBLE_RESULT = 20; + static DENOMINATION = "s"; + static MODIFIERS = { + c: () => undefined, // Modifier is consumed in constructor for maximumCoupResult / minimumFumbleResult + v: () => undefined, // Modifier is consumed in constructor for checkTargetNumber + n: () => undefined, // Modifier is consumed in constructor for canFumble + }; +} diff --git a/src/dice/roll.js b/src/dice/roll.js new file mode 100644 index 00000000..bc632a07 --- /dev/null +++ b/src/dice/roll.js @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; +import { DS4Check } from "./check"; + +export class DS4Roll extends Roll { + /** @override */ + static CHAT_TEMPLATE = "systems/ds4/templates/dice/roll.hbs"; + + /** + * @override + * @remarks + * This only differs from {@link Roll#render} in that it provides `isCoup` and `isFumble` properties to the roll + * template if the first dice term is a ds4 check. + */ + async render({ flavor, template = this.constructor.CHAT_TEMPLATE, isPrivate = false } = {}) { + if (!this._evaluated) await this.evaluate({ async: true }); + const firstDiceTerm = this.dice[0]; + const isCoup = firstDiceTerm instanceof DS4Check && firstDiceTerm.coup; + const isFumble = firstDiceTerm instanceof DS4Check && firstDiceTerm.fumble; + const chatData = { + formula: isPrivate ? "???" : this._formula, + flavor: isPrivate ? null : flavor, + user: getGame().user?.id, + tooltip: isPrivate ? "" : await this.getTooltip(), + total: isPrivate ? "?" : Math.round((this.total ?? 0) * 100) / 100, + isCoup: isPrivate ? null : isCoup, + isFumble: isPrivate ? null : isFumble, + }; + return renderTemplate(template, chatData); + } +} diff --git a/src/dice/slaying-dice-modifier.js b/src/dice/slaying-dice-modifier.js new file mode 100644 index 00000000..5f50aec0 --- /dev/null +++ b/src/dice/slaying-dice-modifier.js @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; +import { DS4Check } from "./check"; + +export function registerSlayingDiceModifier() { + foundry.dice.terms.PoolTerm.MODIFIERS.x = slay; +} + +/** + * @this {PoolTerm} + * @param {string} modifier + */ +async function slay(modifier) { + const rgx = /[xX]/; + const match = modifier.match(rgx); + if (!match || !this.rolls) return; + + let checked = 0; + while (checked < (this.dice.length ?? 0)) { + const diceTerm = this.dice[checked]; + checked++; + if (diceTerm instanceof DS4Check && diceTerm.coup) { + const formula = `dsv${diceTerm.checkTargetNumber}c${diceTerm.maximumCoupResult}:${diceTerm.minimumFumbleResult}n`; + const additionalRoll = await Roll.create(formula).evaluate(); + + this.rolls.push(additionalRoll); + this.results.push({ result: additionalRoll.total ?? 0, active: true }); + this.terms.push(formula); + } + if (checked > 1000) throw new Error(getGame().i18n.localize("DS4.ErrorSlayingDiceRecursionLimitExceeded")); + } +} diff --git a/src/documents/active-effect.js b/src/documents/active-effect.js new file mode 100644 index 00000000..f7c4afc1 --- /dev/null +++ b/src/documents/active-effect.js @@ -0,0 +1,176 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { mathEvaluator } from "../expression-evaluation/evaluator"; +import { getGame } from "../utils/utils"; + +/** + * @typedef {object} ItemEffectConfig + * @property {boolean} [applyToItems] Whether or not to apply this effect to owned items instead of the actor + * @property {string} [itemName] Only apply this effect to items with this name + * @property {string} [condition] Only apply this effect to items where this condition is fullfilled + */ + +/** + * @typedef {object} DS4ActiveEffectFlags + * @property {ItemEffectConfig} [itemEffectConfig] Configuration for applying this effect to owned items + */ + +/** + * @typedef {Record} ActiveEffectFlags + * @property {DS4ActiveEffectFlags} [ds4] Flags for DS4 + */ + +export class DS4ActiveEffect extends ActiveEffect { + /** + * A fallback icon that can be used if no icon is defined for the effect. + */ + static FALLBACK_ICON = "icons/svg/aura.svg"; + + /** + * A cached reference to the source document to avoid recurring database lookups + * @type {foundry.abstract.Document | undefined | null} + * @protected + */ + source = undefined; + + /** @override */ + get isSuppressed() { + const originatingItem = this.originatingItem; + if (!originatingItem) { + return false; + } + return originatingItem.isNonEquippedEuipable(); + } + + /** + * The item which this effect originates from if it has been transferred from an item to an actor. + * @return {import("./item/item").DS4Item | undefined} + */ + get originatingItem() { + if (this.parent instanceof Item) { + return this.parent; + } + return undefined; + } + + /** + * The number of times this effect should be applied. + * @type {number} + */ + get factor() { + return this.originatingItem?.activeEffectFactor ?? 1; + } + + /** @override */ + apply(document, change) { + change.value = Roll.replaceFormulaData(change.value, document); + try { + change.value = DS4ActiveEffect.safeEval(change.value).toString(); + } catch { + // this is a valid case, e.g., if the effect change simply is a string + } + return super.apply(document, change); + } + + /** + * Create a new {@link DS4ActiveEffect} using default values. + * + * @param {import("./item/item").DS4Item | import("./actor/actor").DS4Actor} parent The parent of the effect. + * @returns {Promise} A promise that resolved to the created effect or udifined of the + * creation was prevented. + */ + static async createDefault(parent) { + const createData = { + name: getGame().i18n.localize(`DS4.NewEffectName`), + icon: this.FALLBACK_ICON, + }; + + return this.create(createData, { parent }); + } + + /** + * Safely evaluate a mathematical expression. + * @param {string} expression The expression to evaluate + * @returns {number | `${number | boolean}`} The numeric result of the expression + * @throws If the expression could not be evaluated or did not produce a numeric resilt + */ + static safeEval(expression) { + const result = mathEvaluator.evaluate(expression); + if (!Number.isNumeric(result)) { + throw new Error(`mathEvaluator.evaluate produced a non-numeric result from expression "${expression}"`); + } + return result; + } + + /** + * Apply the given effects to the gicen Actor or item. + * @param {import("./item/item").DS4Item | import("./actor/actor").DS4Actor} document The Actor or Item to which to apply the effects + * @param {DS4ActiveEffect[]} effetcs The effects to apply + * @param {(change: EffectChangeData) => boolean} [predicate=() => true] Apply only changes that fullfill this predicate + * @returns {Set} The statuses that are applied by this effect + */ + static applyEffetcs(document, effetcs, predicate = () => true) { + /** @type {Record} */ + const overrides = {}; + + /** @type {Set} */ + const statuses = new Set(); + + // Organize active effect changes by their application priority + const changesWithEffect = effetcs.flatMap((e) => { + if (!e.active) { + return []; + } + for (const statusId of e.statuses) { + statuses.add(statusId); + } + return e.getFactoredChangesWithEffect(predicate); + }); + changesWithEffect.sort((a, b) => (a.change.priority ?? 0) - (b.change.priority ?? 0)); + + // Apply all changes + for (const changeWithEffect of changesWithEffect) { + if (!changeWithEffect.change.key) continue; + const changes = changeWithEffect.effect.apply(document, changeWithEffect.change); + Object.assign(overrides, changes); + } + + // Expand the set of final overrides + document.overrides = foundry.utils.expandObject({ + ...foundry.utils.flattenObject(document.overrides), + ...overrides, + }); + + return statuses; + } + + /** + * Get the array of changes for this effect, considering the {@link DS4ActiveEffect#factor}. + * @param {(change: EffectChangeData) => boolean} [predicate=() => true] An optional predicate to filter which changes should be considered + * @returns {EffectChangeDataWithEffect[]} The array of changes from this effect, considering the factor. + * @protected + */ + getFactoredChangesWithEffect(predicate = () => true) { + return this.changes.filter(predicate).flatMap((change) => { + const c = foundry.utils.deepClone(change); + c.priority = c.priority ?? c.mode * 10; + return Array(this.factor).fill({ effect: this, change: c }); + }); + } +} + +/** + * @typedef {object} EffectChangeDataWithEffect + * @property {DS4ActiveEffect} effect + * @property {EffectChangeData} change + */ + +/** + * @typedef {object} EffectChangeData + * @property {string} key The attribute path in the Actor or Item data which the change modifies + * @property {string} value The value of the change effect + * @property {number} mode The modification mode with which the change is applied + * @property {number} priority The priority level with which this change is applied + */ diff --git a/src/documents/actor/actor-data-properties-base.ts b/src/documents/actor/actor-data-properties-base.ts new file mode 100644 index 00000000..57144f1b --- /dev/null +++ b/src/documents/actor/actor-data-properties-base.ts @@ -0,0 +1,46 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// SPDX-FileCopyrightText: 2021 Siegfried Krug +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../../config"; + +import type { ModifiableDataBaseTotal, ResourceDataBaseTotalMax } from "../common/common-data"; + +export interface DS4ActorDataPropertiesDataBase { + attributes: DS4ActorDataPropertiesDataAttributes; + traits: DS4ActorDataPropertiesDataTraits; + combatValues: DS4ActorDataPropertiesDataCombatValues; + rolling: DS4ActorDataPropertiesDataRolling; + checks: DS4ActorDataPropertiesDataChecks; + armorValueSpellMalus: number; +} + +type DS4ActorDataPropertiesDataAttributes = { + [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBaseTotal; +}; + +type DS4ActorDataPropertiesDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBaseTotal }; + +type DS4ActorDataPropertiesDataCombatValues = { + [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" + ? ResourceDataBaseTotalMax + : ModifiableDataBaseTotal; +}; + +interface DS4ActorDataPropertiesDataRolling { + maximumCoupResult: number; + minimumFumbleResult: number; +} + +type DS4ActorDataPropertiesDataChecks = { + [key in Check]: number; +}; + +export type Check = keyof typeof DS4.i18n.checks; + +export function isCheck(value: string): value is Check { + return Object.keys(DS4.i18n.checks).includes(value); +} diff --git a/src/documents/actor/actor-data-properties.ts b/src/documents/actor/actor-data-properties.ts new file mode 100644 index 00000000..ff366af9 --- /dev/null +++ b/src/documents/actor/actor-data-properties.ts @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4CharacterDataProperties } from "./character/character-data-properties"; +import type { DS4CreatureDataProperties } from "./creature/creature-data-properties"; + +declare global { + interface DataConfig { + Actor: DS4ActorDataProperties; + } +} + +export type DS4ActorDataProperties = DS4CharacterDataProperties | DS4CreatureDataProperties; diff --git a/src/documents/actor/actor-data-source-base.ts b/src/documents/actor/actor-data-source-base.ts new file mode 100644 index 00000000..c1a91e55 --- /dev/null +++ b/src/documents/actor/actor-data-source-base.ts @@ -0,0 +1,42 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// SPDX-FileCopyrightText: 2021 Siegfried Krug +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../../config"; + +import type { ModifiableData, ModifiableDataBase, ResourceData } from "../common/common-data"; + +export interface DS4ActorDataSourceDataBase { + attributes: DS4ActorDataSourceDataAttributes; + traits: DS4ActorDataSourceDataTraits; + combatValues: DS4ActorDataSourceDataCombatValues; +} + +type DS4ActorDataSourceDataAttributes = { [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBase }; + +type Attribute = keyof DS4ActorDataSourceDataAttributes; + +export function isAttribute(value: unknown): value is Attribute { + return (Object.keys(DS4.i18n.attributes) as Array).includes(value); +} + +type DS4ActorDataSourceDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBase }; + +type Trait = keyof DS4ActorDataSourceDataTraits; + +export function isTrait(value: unknown): value is Trait { + return (Object.keys(DS4.i18n.traits) as Array).includes(value); +} + +type DS4ActorDataSourceDataCombatValues = { + [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" ? ResourceData : ModifiableData; +}; + +type CombatValue = keyof DS4ActorDataSourceDataCombatValues; + +export function isCombatValue(value: string): value is CombatValue { + return (Object.keys(DS4.i18n.combatValues) as Array).includes(value); +} diff --git a/src/documents/actor/actor-data-source.ts b/src/documents/actor/actor-data-source.ts new file mode 100644 index 00000000..f491ad6d --- /dev/null +++ b/src/documents/actor/actor-data-source.ts @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4CharacterDataSource } from "./character/character-data-source"; +import type { DS4CreatureDataSource } from "./creature/creature-data-source"; + +declare global { + interface SourceConfig { + Actor: DS4ActorDataSource; + } +} + +export type DS4ActorDataSource = DS4CharacterDataSource | DS4CreatureDataSource; diff --git a/src/documents/actor/actor.js b/src/documents/actor/actor.js new file mode 100644 index 00000000..c1f4d256 --- /dev/null +++ b/src/documents/actor/actor.js @@ -0,0 +1,536 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver RÜmpelein +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../../config"; +import { createCheckRoll } from "../../dice/check-factory"; +import { Evaluator } from "../../expression-evaluation/evaluator"; +import { Validator } from "../../expression-evaluation/validator"; +import { logger } from "../../utils/logger"; +import { getGame } from "../../utils/utils"; +import { DS4ActiveEffect } from "../active-effect"; +import { isAttribute, isTrait } from "./actor-data-source-base"; + +/** + * The Actor class for DS4 + */ +export class DS4Actor extends Actor { + /** @type {Set} */ + newStatuses = new Set(); + + /** @override */ + prepareData() { + this.prepareBaseData(); + this.prepareEmbeddedDocuments(); + this.prepareIntermediateData(); + this.applyActiveEffectsToBaseData(); + this.prepareDerivedData(); + this.applyActiveEffectsToDerivedData(); + this.handleStatusChanges(); + this.prepareFinalDerivedData(); + } + + /** @override */ + prepareBaseData() { + this.newStatuses = new Set(); + + this.system.rolling = { + minimumFumbleResult: 20, + maximumCoupResult: 1, + }; + + Object.values(this.system.attributes).forEach((attribute) => (attribute.total = attribute.base + attribute.mod)); + + Object.values(this.system.traits).forEach((trait) => (trait.total = trait.base + trait.mod)); + } + + /** @override */ + prepareEmbeddedDocuments() { + super.prepareEmbeddedDocuments(); + this.applyActiveEffectsToItems(); + } + + /** + * Apply transformations to the Actor data after embedded documents have been prepared, but before effects have been + * applied to the Actor. + */ + prepareIntermediateData() { + this.system.armorValueSpellMalus = this.armorValueSpellMalusOfEquippedItems; + } + + /** + * The effects that should be applied to this actor. + * @type {import("../active-effect").DS4ActiveEffect[]} + * @protected + */ + get actorEffects() { + const effects = []; + for (const effect of this.allApplicableEffects()) { + if (!effect.flags.ds4?.itemEffectConfig?.applyToItems) { + effects.push(effect); + } + } + return effects; + } + + /** + * Get the effects of this actor that should be applied to the given item. + * @param {import("../item/item").DS4Item} item The item for which to get effects + * @returns {import("../active-effect").DS4ActiveEffect[]} The array of effects that are candidates to be applied to the item + */ + itemEffects(item) { + /** @type {(effect: DS4ActiveEffect) => boolean} */ + const shouldEffectBeAppliedToItem = (effect, item) => { + const { applyToItems, itemName, condition } = effect.flags.ds4?.itemEffectConfig ?? {}; + + if (!applyToItems || (itemName !== undefined && itemName !== "" && itemName !== item.name)) { + return false; + } + + if (condition !== undefined && condition !== "") { + try { + const replacedCondition = DS4Actor.replaceFormulaData(condition, { item, actor: this, effect }); + return replacedCondition !== undefined ? Boolean(DS4Actor.evaluator.evaluate(replacedCondition)) : false; + } catch (error) { + logger.warn(error); + return false; + } + } + + return true; + }; + + const effects = []; + for (const effect of this.allApplicableEffects()) { + if (shouldEffectBeAppliedToItem(effect, item)) { + effects.push(effect); + } + } + return effects; + } + + /** + * Replace placholders in a formula with data. + * @param {string} formula The formular to enricht with data + * @param {object} data The data to use for enriching + * @returns {string | undefined} The Enriched formula or undefined, if it contains placeholders that cannot be resolved + * @protected + */ + static replaceFormulaData(formula, data) { + const dataRgx = new RegExp(/@([a-z.0-9_-]+)/gi); + try { + return formula.replace(dataRgx, (_, term) => { + const value = foundry.utils.getProperty(data, term); + if (value == null) { + throw new Error(); + } + return String(value).trim(); + }); + } catch { + return undefined; + } + } + + /** + * We override this with an empty implementation because we have our own custom way of applying + * {@link ActiveEffect}s and {@link Actor#prepareEmbeddedDocuments} calls this. + * @override + */ + applyActiveEffects() { + return; + } + + /** + * Apply active effects to items. + * + * @remarks + * Talents are handled before all other item types, because if the total rank of a talent is affected by any + * effects, that affects how many times effects provided by this talent need to be applied. At the moment, there is + * no special ordering among talents. This means that having a talents that provide effects that adjust the total + * rank of talents can lead to nondeterministic behavior and thus must be avoided. + */ + applyActiveEffectsToItems() { + /* Handle talents before all other item types, because their rank might be affected, which in turn affects how + many times effects provided by that talent are applied */ + for (const item of this.itemTypes.talent) { + this.applyActiveEffectsToItem(item); + } + for (const item of this.items) { + if (item.type === "talent") continue; + this.applyActiveEffectsToItem(item); + } + } + + /** + * Apply effects to the given item. + * @param {import("../item/item").DS4Item} item The item to which to apply effects + * @protected + */ + applyActiveEffectsToItem(item) { + item.overrides = {}; + item.reset(); + DS4ActiveEffect.applyEffetcs(item, this.itemEffects(item)).forEach(this.newStatuses.add.bind(this.newStatuses)); + } + + /** + * Apply effects to base data + * @protected + */ + applyActiveEffectsToBaseData() { + this.overrides = {}; + DS4ActiveEffect.applyEffetcs( + this, + this.actorEffects, + (change) => + !this.derivedDataProperties.includes(change.key) && !this.finalDerivedDataProperties.includes(change.key), + ).forEach(this.newStatuses.add.bind(this.newStatuses)); + } + + /** + * Apply effects to derived data + * @protected + */ + applyActiveEffectsToDerivedData() { + DS4ActiveEffect.applyEffetcs(this, this.actorEffects, (change) => + this.derivedDataProperties.includes(change.key), + ).forEach(this.newStatuses.add.bind(this.newStatuses)); + } + + /** + * Apply transformations to the Actor data after effects have been applied to the base data. + * @override + */ + prepareDerivedData() { + this.system.armorValueSpellMalus = Math.max(this.system.armorValueSpellMalus, 0); + this.prepareCombatValues(); + this.prepareChecks(); + } + + /** + * The list of properties that are derived from others, given in dot notation. + * @returns {string[]} The list of derived propertie + */ + get derivedDataProperties() { + const combatValueProperties = Object.keys(DS4.i18n.combatValues).map( + (combatValue) => `system.combatValues.${combatValue}.total`, + ); + const checkProperties = Object.keys(DS4.i18n.checks) + .filter((check) => check !== "defend") + .map((check) => `system.checks.${check}`); + return combatValueProperties.concat(checkProperties); + } + + handleStatusChanges() { + this.statuses ??= new Set(); + + // Identify which special statuses had been active + const specialStatuses = new Map(); + for (const statusId of Object.values(CONFIG.specialStatusEffects)) { + specialStatuses.set(statusId, this.statuses.has(statusId)); + } + this.statuses.clear(); + + // set new statuses + this.newStatuses.forEach(this.statuses.add.bind(this.statuses)); + + // Apply special statuses that changed to active tokens + const tokens = this.getActiveTokens(); + for (const [statusId, wasActive] of specialStatuses) { + const isActive = this.statuses.has(statusId); + if (isActive === wasActive) continue; + for (const token of tokens) { + token._onApplyStatusEffect(statusId, isActive); + } + } + } + + /** + * Apply final transformations to the Actor data after all effects have been applied. + */ + prepareFinalDerivedData() { + Object.values(this.system.attributes).forEach((attribute) => (attribute.total = Math.ceil(attribute.total))); + Object.values(this.system.traits).forEach((trait) => (trait.total = Math.ceil(trait.total))); + Object.entries(this.system.combatValues) + .filter(([key]) => key !== "movement") + .forEach(([, combatValue]) => (combatValue.total = Math.ceil(combatValue.total))); + Object.keys(this.system.checks).forEach((key) => { + this.system.checks[key] = Math.ceil(this.system.checks[key]); + }); + + this.system.combatValues.hitPoints.max = this.system.combatValues.hitPoints.total; + this.system.checks.defend = this.system.combatValues.defense.total; + } + + /** + * The list of properties that are completely derived (i.e. {@link ActiveEffect}s cannot be applied to them), + * given in dot notation. + * @type {string[]} + */ + get finalDerivedDataProperties() { + return ["system.combatValues.hitPoints.max", "system.checks.defend"]; + } + + /** + * The list of item types that can be owned by this actor. + * @type {import("../item/item-data-source").ItemType[]} + */ + get ownableItemTypes() { + return ["weapon", "armor", "shield", "equipment", "loot", "spell"]; + } + + /** + * Checks whether or not the given item type can be owned by the actor. + * @param {import("../item/item-data-source").ItemType} itemType The item type to check + * @returns {boolean} Whether or not this actor can own the given item type + */ + canOwnItemType(itemType) { + return this.ownableItemTypes.includes(itemType); + } + + /** + * Prepares the combat values of the actor. + * @protected + */ + prepareCombatValues() { + const system = this.system; + + system.combatValues.hitPoints.base = system.attributes.body.total + system.traits.constitution.total + 10; + system.combatValues.defense.base = + system.attributes.body.total + system.traits.constitution.total + this.armorValueOfEquippedItems; + system.combatValues.initiative.base = system.attributes.mobility.total + system.traits.agility.total; + system.combatValues.movement.base = system.attributes.mobility.total / 2 + 1; + system.combatValues.meleeAttack.base = system.attributes.body.total + system.traits.strength.total; + system.combatValues.rangedAttack.base = system.attributes.mobility.total + system.traits.dexterity.total; + system.combatValues.spellcasting.base = + system.attributes.mind.total + system.traits.aura.total - system.armorValueSpellMalus; + system.combatValues.targetedSpellcasting.base = + system.attributes.mind.total + system.traits.dexterity.total - system.armorValueSpellMalus; + + Object.values(system.combatValues).forEach( + (combatValue) => (combatValue.total = combatValue.base + combatValue.mod), + ); + } + + /** + * The total armor value of the equipped items. + * @type {number} + * @protected + */ + get armorValueOfEquippedItems() { + return this.equippedItemsWithArmor.map((item) => item.system.armorValue).reduce((a, b) => a + b, 0); + } + + /** + * The armor value spell malus from equipped items. + * @type {number} + * @protected + */ + get armorValueSpellMalusOfEquippedItems() { + return this.equippedItemsWithArmor + .filter((item) => !(item.type === "armor" && ["cloth", "natural"].includes(item.system.armorMaterialType))) + .reduce((sum, item) => sum + item.system.armorValue, 0); + } + + /** + * The equipped items of this actor that provide armor. + * @type {(import("../item/armor/armor").DS4Armor | import("../item/shield/shield").DS4Shield)[]} + * @protected + */ + get equippedItemsWithArmor() { + return this.items.filter((item) => (item.type === "armor" || item.type === "shield") && item.system.equipped); + } + + /** + * Prepares the check target numbers of checks for the actor. + * @protected + */ + prepareChecks() { + const system = this.system; + system.checks = { + appraise: system.attributes.mind.total + system.traits.intellect.total, + changeSpell: system.attributes.mind.total + system.traits.intellect.total, + climb: system.attributes.mobility.total + system.traits.strength.total, + communicate: system.attributes.mind.total + system.traits.dexterity.total + this.itemTypes.language.length, + decipherScript: system.attributes.mind.total + system.traits.intellect.total, + defend: 0, // assigned in prepareFinalDerivedData as it must always match data.combatValues.defense.total and is not changeable by effects + defyPoison: system.attributes.body.total + system.traits.constitution.total, + disableTraps: system.attributes.mind.total + system.traits.dexterity.total, + featOfStrength: system.attributes.body.total + system.traits.strength.total, + flirt: system.attributes.mind.total + system.traits.aura.total, + haggle: system.attributes.mind.total + Math.max(system.traits.intellect.total, system.traits.intellect.total), + hide: system.attributes.mobility.total + system.traits.agility.total, + identifyMagic: system.attributes.mind.total + system.traits.intellect.total, + jump: system.attributes.mobility.total + system.traits.agility.total, + knowledge: system.attributes.mind.total + system.traits.intellect.total, + openLock: system.attributes.mind.total + system.traits.dexterity.total, + perception: Math.max(system.attributes.mind.total + system.traits.intellect.total, 8), + pickPocket: system.attributes.mobility.total + system.traits.dexterity.total, + readTracks: system.attributes.mind.total + system.traits.intellect.total, + resistDisease: system.attributes.body.total + system.traits.constitution.total, + ride: system.attributes.mobility.total + Math.max(system.traits.agility.total, system.traits.aura.total), + search: Math.max(system.attributes.mind.total + system.traits.intellect.total, 8), + senseMagic: system.attributes.mind.total + system.traits.aura.total, + sneak: system.attributes.mobility.total + system.traits.agility.total, + startFire: system.attributes.mind.total + system.traits.dexterity.total, + swim: system.attributes.mobility.total + system.traits.strength.total, + wakeUp: system.attributes.mind.total + system.traits.intellect.total, + workMechanism: + system.attributes.mind.total + Math.max(system.traits.dexterity.total, system.traits.intellect.total), + }; + } + + /** + * Handle how changes to a Token attribute bar are applied to the Actor. + * This only differs from the base implementation by also allowing negative values. + * @param {string} attribute The attribute path + * @param {number} value The target attribute value + * @param {boolean} [isDelta=false] Whether the number represents a relative change (true) or an absolute change (false) + * @param {boolean} [isBar=true] Whether the new value is part of an attribute bar, or just a direct value + * @returns {Promise} The updated Actor document + * @override + */ + async modifyTokenAttribute(attribute, value, isDelta = false, isBar = true) { + const current = foundry.utils.getProperty(this.system, attribute); + + // Determine the updates to make to the actor data + /** @type {Record} */ + let updates; + if (isBar) { + if (isDelta) value = Math.min(Number(current.value) + value, current.max); + updates = { [`system.${attribute}.value`]: value }; + } else { + if (isDelta) value = Number(current) + value; + updates = { [`system.${attribute}`]: value }; + } + + // Call a hook to handle token resource bar updates + const allowed = Hooks.call("modifyTokenAttribute", { attribute, value, isDelta, isBar }, updates); + return allowed !== false ? this.update(updates) : this; + } + + /** + * Roll for a given check. + * @param {import("./actor-data-properties-base").Check} check The check to perform + * @param {import("../common/roll-options").RollOptions} [options={}] Additional options to customize the roll + * @returns {Promise} A promise that resolves once the roll has been performed + */ + async rollCheck(check, options = {}) { + const speaker = ChatMessage.getSpeaker({ actor: this, ...options.speaker }); + await createCheckRoll(this.system.checks[check], { + rollMode: getGame().settings.get("core", "rollMode"), + maximumCoupResult: this.system.rolling.maximumCoupResult, + minimumFumbleResult: this.system.rolling.minimumFumbleResult, + flavor: "DS4.ActorCheckFlavor", + flavorData: { actor: speaker.alias ?? this.name, check: DS4.i18nKeys.checks[check] }, + speaker, + }); + } + + /** + * Roll a generic check. A dialog is presented to select the combination of + * Attribute and Trait to perform the check against. + * @param {import("../common/roll-options").RollOptions} [options={}] Additional options to customize the roll + * @returns {Promise} A promise that resolves once the roll has been performed + */ + async rollGenericCheck(options = {}) { + const attributeAndTrait = await this.selectAttributeAndTrait(); + if (!attributeAndTrait) { + return; + } + const { attribute, trait } = attributeAndTrait; + const checkTargetNumber = this.system.attributes[attribute].total + this.system.traits[trait].total; + const speaker = ChatMessage.getSpeaker({ actor: this, ...options.speaker }); + await createCheckRoll(checkTargetNumber, { + rollMode: getGame().settings.get("core", "rollMode"), + maximumCoupResult: this.system.rolling.maximumCoupResult, + minimumFumbleResult: this.system.rolling.minimumFumbleResult, + flavor: "DS4.ActorGenericCheckFlavor", + flavorData: { + actor: speaker.alias ?? this.name, + attribute: DS4.i18n.attributes[attribute], + trait: DS4.i18n.traits[trait], + }, + speaker, + }); + } + + /** + * Prompt the use to select an attribute and a trait. + * @returns {Promise} + * @protected + */ + async selectAttributeAndTrait() { + const attributeIdentifier = "attribute-trait-selection-attribute"; + const traitIdentifier = "attribute-trait-selection-trait"; + return Dialog.prompt({ + title: getGame().i18n.localize("DS4.DialogAttributeTraitSelection"), + content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { + selects: [ + { + label: getGame().i18n.localize("DS4.Attribute"), + identifier: attributeIdentifier, + options: Object.fromEntries( + Object.entries(DS4.i18n.attributes).map(([attribute, translation]) => [ + attribute, + `${translation} (${this.system.attributes[attribute].total})`, + ]), + ), + }, + { + label: getGame().i18n.localize("DS4.Trait"), + identifier: traitIdentifier, + options: Object.fromEntries( + Object.entries(DS4.i18n.traits).map(([trait, translation]) => [ + trait, + `${translation} (${this.system.traits[trait].total})`, + ]), + ), + }, + ], + }), + label: getGame().i18n.localize("DS4.GenericOkButton"), + callback: (html) => { + const selectedAttribute = html.find(`#${attributeIdentifier}`).val(); + if (!isAttribute(selectedAttribute)) { + throw new Error( + getGame().i18n.format("DS4.ErrorUnexpectedAttribute", { + actualAttribute: selectedAttribute, + expectedTypes: Object.keys(DS4.i18n.attributes) + .map((attribute) => `'${attribute}'`) + .join(", "), + }), + ); + } + const selectedTrait = html.find(`#${traitIdentifier}`).val(); + if (!isTrait(selectedTrait)) { + throw new Error( + getGame().i18n.format("DS4.ErrorUnexpectedTrait", { + actualTrait: selectedTrait, + expectedTypes: Object.keys(DS4.i18n.traits) + .map((attribute) => `'${attribute}'`) + .join(", "), + }), + ); + } + return { + attribute: selectedAttribute, + trait: selectedTrait, + }; + }, + rejectClose: false, + }); + } + + static evaluator = new Evaluator({ + context: Math, + predicate: (identifier) => + Validator.defaultPredicate(identifier) || ["includes", "toLowerCase", "toUpperCase"].includes(identifier), + }); +} + +/** + * @typedef {object} AttributeAndTrait + * @property {keyof typeof DS4.i18n.attributes} attribute + * @property {keyof typeof DS4.i18n.traits} trait + */ diff --git a/src/documents/actor/character/character-data-properties.ts b/src/documents/actor/character/character-data-properties.ts new file mode 100644 index 00000000..10b87795 --- /dev/null +++ b/src/documents/actor/character/character-data-properties.ts @@ -0,0 +1,29 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ActorDataPropertiesDataBase } from "../actor-data-properties-base"; +import type { + DS4CharacterDataSourceDataBaseInfo, + DS4CharacterDataSourceDataCurrency, + DS4CharacterDataSourceDataProfile, + DS4CharacterDataSourceDataProgression, + DS4CharacterDataSourceDataSlayerPoints, +} from "./character-data-source"; + +export interface DS4CharacterDataProperties { + type: "character"; + data: DS4CharacterDataPropertiesData; +} + +interface DS4CharacterDataPropertiesData extends DS4ActorDataPropertiesDataBase { + baseInfo: DS4CharacterDataSourceDataBaseInfo; + progression: DS4CharacterDataSourceDataProgression; + profile: DS4CharacterDataSourceDataProfile; + currency: DS4CharacterDataSourceDataCurrency; + slayerPoints: DS4CharacterDataPropertiesDataSlayerPoints; +} + +export interface DS4CharacterDataPropertiesDataSlayerPoints extends DS4CharacterDataSourceDataSlayerPoints { + max: number; +} diff --git a/src/documents/actor/character/character-data-source.ts b/src/documents/actor/character/character-data-source.ts new file mode 100644 index 00000000..f9d27feb --- /dev/null +++ b/src/documents/actor/character/character-data-source.ts @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { UsableResource } from "../../common/common-data"; +import type { DS4ActorDataSourceDataBase } from "../actor-data-source-base"; + +export interface DS4CharacterDataSource { + type: "character"; + data: DS4CharacterDataSourceData; +} + +interface DS4CharacterDataSourceData extends DS4ActorDataSourceDataBase { + baseInfo: DS4CharacterDataSourceDataBaseInfo; + progression: DS4CharacterDataSourceDataProgression; + profile: DS4CharacterDataSourceDataProfile; + currency: DS4CharacterDataSourceDataCurrency; + slayerPoints: DS4CharacterDataSourceDataSlayerPoints; +} + +export interface DS4CharacterDataSourceDataBaseInfo { + race: string; + class: string; + heroClass: string; + culture: string; +} + +export interface DS4CharacterDataSourceDataProgression { + level: number; + experiencePoints: number; + talentPoints: UsableResource; + progressPoints: UsableResource; +} + +export interface DS4CharacterDataSourceDataProfile { + biography: string; + gender: string; + birthday: string; + birthplace: string; + age: number; + height: number; + hairColor: string; + weight: number; + eyeColor: string; + specialCharacteristics: string; +} + +export interface DS4CharacterDataSourceDataCurrency { + gold: number; + silver: number; + copper: number; +} + +export interface DS4CharacterDataSourceDataSlayerPoints { + value: number; +} diff --git a/src/documents/actor/character/character.js b/src/documents/actor/character/character.js new file mode 100644 index 00000000..b5ddff1a --- /dev/null +++ b/src/documents/actor/character/character.js @@ -0,0 +1,23 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Actor } from "../actor"; + +export class DS4Character extends DS4Actor { + /** @override */ + prepareFinalDerivedData() { + super.prepareFinalDerivedData(); + this.system.slayerPoints.max = 3; + } + + /** @override */ + get finalDerivedDataProperties() { + return [...super.finalDerivedDataProperties, "system.slayerPoints.max"]; + } + + /** @override */ + get ownableItemTypes() { + return [...super.ownableItemTypes, "talent", "racialAbility", "language", "alphabet"]; + } +} diff --git a/src/documents/actor/creature/creature-data-properties.ts b/src/documents/actor/creature/creature-data-properties.ts new file mode 100644 index 00000000..d7d6f539 --- /dev/null +++ b/src/documents/actor/creature/creature-data-properties.ts @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ActorDataPropertiesDataBase } from "../actor-data-properties-base"; +import type { DS4CreatureDataSourceDataBaseInfo } from "./creature-data-source"; + +export interface DS4CreatureDataProperties { + type: "creature"; + data: DS4CreatureDataPropertiesData; +} + +interface DS4CreatureDataPropertiesData extends DS4ActorDataPropertiesDataBase { + baseInfo: DS4CreatureDataSourceDataBaseInfo; +} diff --git a/src/documents/actor/creature/creature-data-source.ts b/src/documents/actor/creature/creature-data-source.ts new file mode 100644 index 00000000..8d1105ab --- /dev/null +++ b/src/documents/actor/creature/creature-data-source.ts @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../../config"; +import type { DS4ActorDataSourceDataBase } from "../actor-data-source-base"; + +export interface DS4CreatureDataSource { + type: "creature"; + data: DS4CreatureDataSourceData; +} + +interface DS4CreatureDataSourceData extends DS4ActorDataSourceDataBase { + baseInfo: DS4CreatureDataSourceDataBaseInfo; +} + +export interface DS4CreatureDataSourceDataBaseInfo { + loot: string; + foeFactor: number; + creatureType: CreatureType; + sizeCategory: SizeCategory; + experiencePoints: number; + description: string; +} + +type CreatureType = keyof typeof DS4.i18n.creatureTypes; + +type SizeCategory = keyof typeof DS4.i18n.creatureSizeCategories; diff --git a/src/documents/actor/creature/creature.ts b/src/documents/actor/creature/creature.ts new file mode 100644 index 00000000..983c2b44 --- /dev/null +++ b/src/documents/actor/creature/creature.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Actor } from "../actor"; + +import type { ItemType } from "../../item/item-data-source"; + +export class DS4Creature extends DS4Actor { + override get ownableItemTypes(): Array { + return [...super.ownableItemTypes, "specialCreatureAbility"]; + } +} diff --git a/src/documents/actor/proxy.js b/src/documents/actor/proxy.js new file mode 100644 index 00000000..5b48b12d --- /dev/null +++ b/src/documents/actor/proxy.js @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../../utils/utils"; +import { DS4Actor } from "./actor"; +import { DS4Character } from "./character/character"; +import { DS4Creature } from "./creature/creature"; + +const handler = { + /** + * @param {typeof import("./actor").DS4Actor} + * @param {unknown[]} args + */ + construct(_, args) { + switch (args[0]?.type) { + case "character": + return new DS4Character(...args); + case "creature": + return new DS4Creature(...args); + default: + throw new Error(getGame().i18n.format("DS4.ErrorInvalidActorType", { type: args[0]?.type })); + } + }, +}; + +/** @type {typeof import("./actor").DS4Actor} */ +export const DS4ActorProxy = new Proxy(DS4Actor, handler); diff --git a/src/documents/chat-message.js b/src/documents/chat-message.js new file mode 100644 index 00000000..d32abbff --- /dev/null +++ b/src/documents/chat-message.js @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; + +/** + * @typedef {object} DS4ChatMessageFlags + * @property {Record} [flavorData] Data to use for localizing the flavor of the chat message + */ + +/** + * @typedef {Record} ChatMessageFlags + * @property {DS4ChatMessageFlags} [ds4] Flags for DS4 + */ + +export class DS4ChatMessage extends ChatMessage { + prepareData() { + super.prepareData(); + if (this.flavor) { + const game = getGame(); + const flavorData = Object.fromEntries( + Object.entries(this.flags.ds4?.flavorData ?? {}).map(([key, value]) => [ + key, + typeof value === "string" ? game.i18n.localize(value) : value, + ]), + ); + this.flavor = game.i18n.format(this.flavor, flavorData); + } + } +} diff --git a/src/common/common-data.ts b/src/documents/common/common-data.ts similarity index 100% rename from src/common/common-data.ts rename to src/documents/common/common-data.ts diff --git a/src/documents/common/roll-options.js b/src/documents/common/roll-options.js new file mode 100644 index 00000000..89a813ea --- /dev/null +++ b/src/documents/common/roll-options.js @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +/** + * @typedef {object} RollOptions + * @property {Speaker} speaker + */ + +/** + * @typedef {object} Speaker + * @property {TokenDocument} [token] + * @property {string} [alias] + */ + +export {} diff --git a/src/documents/item/alphabet/alphabet-data-properties.ts b/src/documents/item/alphabet/alphabet-data-properties.ts new file mode 100644 index 00000000..7b357598 --- /dev/null +++ b/src/documents/item/alphabet/alphabet-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4AlphabetDataSourceData } from "./alphabet-data-source"; + +export interface DS4AlphabetDataProperties { + type: "alphabet"; + data: DS4AlphabetDataPropertiesData; +} + +interface DS4AlphabetDataPropertiesData extends DS4AlphabetDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/alphabet/alphabet-data-source.ts b/src/documents/item/alphabet/alphabet-data-source.ts new file mode 100644 index 00000000..c1b7dff6 --- /dev/null +++ b/src/documents/item/alphabet/alphabet-data-source.ts @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; + +export interface DS4AlphabetDataSource { + type: "alphabet"; + data: DS4AlphabetDataSourceData; +} + +export type DS4AlphabetDataSourceData = DS4ItemDataSourceDataBase; diff --git a/src/documents/item/alphabet/alphabet.ts b/src/documents/item/alphabet/alphabet.ts new file mode 100644 index 00000000..be6e5301 --- /dev/null +++ b/src/documents/item/alphabet/alphabet.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Alphabet extends DS4Item {} diff --git a/src/documents/item/armor/armor-data-properties.ts b/src/documents/item/armor/armor-data-properties.ts new file mode 100644 index 00000000..36f8dcd3 --- /dev/null +++ b/src/documents/item/armor/armor-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4ArmorDataSourceData } from "./armor-data-source"; + +export interface DS4ArmorDataProperties { + type: "armor"; + data: DS4ArmorDataPropertiesData; +} + +interface DS4ArmorDataPropertiesData extends DS4ArmorDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/armor/armor-data-source.ts b/src/documents/item/armor/armor-data-source.ts new file mode 100644 index 00000000..412b12e3 --- /dev/null +++ b/src/documents/item/armor/armor-data-source.ts @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../../config"; +import type { + DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataProtective, +} from "../item-data-source-base"; + +export interface DS4ArmorDataSource { + type: "armor"; + data: DS4ArmorDataSourceData; +} + +export interface DS4ArmorDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataProtective { + armorMaterialType: keyof typeof DS4.i18n.armorMaterialTypes; + armorType: keyof typeof DS4.i18n.armorTypes; +} diff --git a/src/documents/item/armor/armor.ts b/src/documents/item/armor/armor.ts new file mode 100644 index 00000000..531d0d7c --- /dev/null +++ b/src/documents/item/armor/armor.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Armor extends DS4Item {} diff --git a/src/documents/item/equipment/equipment-data-properties.ts b/src/documents/item/equipment/equipment-data-properties.ts new file mode 100644 index 00000000..1263f723 --- /dev/null +++ b/src/documents/item/equipment/equipment-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4EquipmentDataSourceData } from "./equipment-data-source"; + +export interface DS4EquipmentDataProperties { + type: "equipment"; + data: DS4EquipmentDataPropertiesData; +} + +interface DS4EquipmentDataPropertiesData extends DS4EquipmentDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/equipment/equipment-data-source.ts b/src/documents/item/equipment/equipment-data-source.ts new file mode 100644 index 00000000..15b2c986 --- /dev/null +++ b/src/documents/item/equipment/equipment-data-source.ts @@ -0,0 +1,19 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { + DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataPhysical, +} from "../item-data-source-base"; + +export interface DS4EquipmentDataSource { + type: "equipment"; + data: DS4EquipmentDataSourceData; +} + +export interface DS4EquipmentDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable {} diff --git a/src/documents/item/equipment/equipment.ts b/src/documents/item/equipment/equipment.ts new file mode 100644 index 00000000..748177d5 --- /dev/null +++ b/src/documents/item/equipment/equipment.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Equipment extends DS4Item {} diff --git a/commitlint.config.cjs b/src/documents/item/item-data-properties-base.ts similarity index 52% rename from commitlint.config.cjs rename to src/documents/item/item-data-properties-base.ts index c52644d5..750f5605 100644 --- a/commitlint.config.cjs +++ b/src/documents/item/item-data-properties-base.ts @@ -2,4 +2,6 @@ // // SPDX-License-Identifier: MIT -module.exports = { extends: ["@commitlint/config-conventional"] }; +export interface DS4ItemDataPropertiesDataRollable { + rollable: boolean; +} diff --git a/src/documents/item/item-data-properties.ts b/src/documents/item/item-data-properties.ts new file mode 100644 index 00000000..003593d5 --- /dev/null +++ b/src/documents/item/item-data-properties.ts @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4AlphabetDataProperties } from "./alphabet/alphabet-data-properties"; +import type { DS4ArmorDataProperties } from "./armor/armor-data-properties"; +import type { DS4EquipmentDataProperties } from "./equipment/equipment-data-properties"; +import type { DS4LanguageDataProperties } from "./language/language-data-properties"; +import type { DS4LootDataProperties } from "./loot/loot-data-properties"; +import type { DS4RacialAbilityDataProperties } from "./racial-ability/racial-ability-data-properties"; +import type { DS4ShieldDataProperties } from "./shield/shield-data-properties"; +import type { DS4SpecialCreatureAbilityDataProperties } from "./special-creature-ability/special-creature-ability-data-properties"; +import type { DS4SpellDataProperties } from "./spell/spell-data-properties"; +import type { DS4TalentDataProperties } from "./talent/talent-data-properties"; +import type { DS4WeaponDataProperties } from "./weapon/weapon-data-properties"; + +declare global { + interface DataConfig { + Item: DS4ItemDataProperties; + } +} + +export type DS4ItemDataProperties = + | DS4AlphabetDataProperties + | DS4ArmorDataProperties + | DS4EquipmentDataProperties + | DS4LanguageDataProperties + | DS4LootDataProperties + | DS4RacialAbilityDataProperties + | DS4ShieldDataProperties + | DS4SpecialCreatureAbilityDataProperties + | DS4SpellDataProperties + | DS4TalentDataProperties + | DS4WeaponDataProperties; diff --git a/src/documents/item/item-data-source-base.ts b/src/documents/item/item-data-source-base.ts new file mode 100644 index 00000000..4cf2b290 --- /dev/null +++ b/src/documents/item/item-data-source-base.ts @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../config"; + +export interface DS4ItemDataSourceDataBase { + description: string; +} + +export interface DS4ItemDataSourceDataPhysical { + quantity: number; + price: number; + availability: keyof typeof DS4.i18n.itemAvailabilities; + storageLocation: string; +} + +export interface DS4ItemDataSourceDataEquipable { + equipped: boolean; +} + +export interface DS4ItemDataSourceDataProtective { + armorValue: number; +} diff --git a/src/documents/item/item-data-source.ts b/src/documents/item/item-data-source.ts new file mode 100644 index 00000000..418d1acc --- /dev/null +++ b/src/documents/item/item-data-source.ts @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../config"; +import type { DS4AlphabetDataSource } from "./alphabet/alphabet-data-source"; +import type { DS4ArmorDataSource } from "./armor/armor-data-source"; +import type { DS4EquipmentDataSource } from "./equipment/equipment-data-source"; +import type { DS4LanguageDataSource } from "./language/language-data-source"; +import type { DS4LootDataSource } from "./loot/loot-data-source"; +import type { DS4RacialAbilityDataSource } from "./racial-ability/racial-ability-data-source"; +import type { DS4ShieldDataSource } from "./shield/shield-data-source"; +import type { DS4SpecialCreatureAbilityDataSource } from "./special-creature-ability/special-creature-ability-data-source"; +import type { DS4SpellDataSource } from "./spell/spell-data-source"; +import type { DS4TalentDataSource } from "./talent/talent-data-source"; +import type { DS4WeaponDataSource } from "./weapon/weapon-data-source"; + +declare global { + interface SourceConfig { + Item: DS4ItemDataSource; + } +} + +export type ItemType = keyof typeof DS4.i18n.itemTypes; + +export type DS4ItemDataSource = + | DS4AlphabetDataSource + | DS4ArmorDataSource + | DS4EquipmentDataSource + | DS4LanguageDataSource + | DS4LootDataSource + | DS4RacialAbilityDataSource + | DS4ShieldDataSource + | DS4SpecialCreatureAbilityDataSource + | DS4SpellDataSource + | DS4TalentDataSource + | DS4WeaponDataSource; diff --git a/src/documents/item/item.js b/src/documents/item/item.js new file mode 100644 index 00000000..9d3d1ebb --- /dev/null +++ b/src/documents/item/item.js @@ -0,0 +1,57 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../../utils/utils"; + +/** + * The Item class for DS4 + */ +export class DS4Item extends Item { + /** + * An object that tracks the changes to the data model which were applied by active effects + * @type {Record} + */ + overrides = {}; + + /** @override */ + prepareDerivedData() { + this.system.rollable = false; + } + + /** + * Is this item a non-equipped equipable? + * @returns {boolean} Whether the item is a non-equpped equibale or not + */ + isNonEquippedEuipable() { + return "equipped" in this.system && !this.system.equipped; + } + + /** + * The number of times that active effect changes originating from this item should be applied. + * @returns {number | undefined} The number of times the effect should be applied + */ + get activeEffectFactor() { + return 1; + } + + /** + * The list of item types that are rollable. + * @returns {import("../item/item-data-source").ItemType[]} The rollable item types + */ + static get rollableItemTypes() { + return ["weapon", "spell"]; + } + + /** + * Roll a check for an action with this item. + * @param {import("../common/roll-options").RollOptions} [options={}] Additional options to customize the roll + * @returns {Promise} A promise that resolves once the roll has been performed + * @abstract + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async roll(options = {}) { + throw new Error(getGame().i18n.format("DS4.ErrorRollingForItemTypeNotPossible", { type: this.type })); + } +} diff --git a/src/documents/item/language/language-data-properties.ts b/src/documents/item/language/language-data-properties.ts new file mode 100644 index 00000000..91a9dab0 --- /dev/null +++ b/src/documents/item/language/language-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4LanguageDataSourceData } from "./language-data-source"; + +export interface DS4LanguageDataProperties { + type: "language"; + data: DS4LanguageDataPropertiesData; +} + +interface DS4LanguageDataPropertiesData extends DS4LanguageDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/language/language-data-source.ts b/src/documents/item/language/language-data-source.ts new file mode 100644 index 00000000..48a3875c --- /dev/null +++ b/src/documents/item/language/language-data-source.ts @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; + +export interface DS4LanguageDataSource { + type: "language"; + data: DS4LanguageDataSourceData; +} + +export type DS4LanguageDataSourceData = DS4ItemDataSourceDataBase; diff --git a/src/documents/item/language/language.ts b/src/documents/item/language/language.ts new file mode 100644 index 00000000..2d8d45ec --- /dev/null +++ b/src/documents/item/language/language.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Language extends DS4Item {} diff --git a/src/documents/item/loot/loot-data-properties.ts b/src/documents/item/loot/loot-data-properties.ts new file mode 100644 index 00000000..900840f9 --- /dev/null +++ b/src/documents/item/loot/loot-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4LootDataSourceData } from "./loot-data-source"; + +export interface DS4LootDataProperties { + type: "loot"; + data: DS4LootDataPropertiesData; +} + +interface DS4LootDataPropertiesData extends DS4LootDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/loot/loot-data-source.ts b/src/documents/item/loot/loot-data-source.ts new file mode 100644 index 00000000..c09311c5 --- /dev/null +++ b/src/documents/item/loot/loot-data-source.ts @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataSourceDataBase, DS4ItemDataSourceDataPhysical } from "../item-data-source-base"; + +export interface DS4LootDataSource { + type: "loot"; + data: DS4LootDataSourceData; +} + +export interface DS4LootDataSourceData extends DS4ItemDataSourceDataBase, DS4ItemDataSourceDataPhysical {} diff --git a/src/documents/item/loot/loot.ts b/src/documents/item/loot/loot.ts new file mode 100644 index 00000000..ba90a2fd --- /dev/null +++ b/src/documents/item/loot/loot.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Loot extends DS4Item {} diff --git a/src/documents/item/proxy.js b/src/documents/item/proxy.js new file mode 100644 index 00000000..73e3f4a0 --- /dev/null +++ b/src/documents/item/proxy.js @@ -0,0 +1,55 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../../utils/utils"; +import { DS4Alphabet } from "./alphabet/alphabet"; +import { DS4Armor } from "./armor/armor"; +import { DS4Equipment } from "./equipment/equipment"; +import { DS4Item } from "./item"; +import { DS4Language } from "./language/language"; +import { DS4Loot } from "./loot/loot"; +import { DS4RacialAbility } from "./racial-ability/racial-ability"; +import { DS4Shield } from "./shield/shield"; +import { DS4SpecialCreatureAbility } from "./special-creature-ability/special-creature-ability"; +import { DS4Spell } from "./spell/spell"; +import { DS4Talent } from "./talent/talent"; +import { DS4Weapon } from "./weapon/weapon"; + +const handler = { + /** + * @param {typeof import("./item").DS4Item} + * @param {unknown[]} args + */ + construct(_, args) { + switch (args[0]?.type) { + case "alphabet": + return new DS4Alphabet(...args); + case "armor": + return new DS4Armor(...args); + case "equipment": + return new DS4Equipment(...args); + case "language": + return new DS4Language(...args); + case "loot": + return new DS4Loot(...args); + case "racialAbility": + return new DS4RacialAbility(...args); + case "shield": + return new DS4Shield(...args); + case "specialCreatureAbility": + return new DS4SpecialCreatureAbility(...args); + case "spell": + return new DS4Spell(...args); + case "talent": + return new DS4Talent(...args); + case "weapon": + return new DS4Weapon(...args); + default: + throw new Error(getGame().i18n.format("DS4.ErrorInvalidItemType", { type: args[0]?.type })); + } + }, +}; + +/** @type {typeof import("./item").DS4Item} */ +export const DS4ItemProxy = new Proxy(DS4Item, handler); diff --git a/src/documents/item/racial-ability/racial-ability-data-properties.ts b/src/documents/item/racial-ability/racial-ability-data-properties.ts new file mode 100644 index 00000000..89821df6 --- /dev/null +++ b/src/documents/item/racial-ability/racial-ability-data-properties.ts @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4RacialAbilityDataSourceData } from "./racial-ability-data-source"; + +export interface DS4RacialAbilityDataProperties { + type: "racialAbility"; + data: DS4RacialAbilityDataPropertiesData; +} + +interface DS4RacialAbilityDataPropertiesData + extends DS4RacialAbilityDataSourceData, + DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/racial-ability/racial-ability-data-source.ts b/src/documents/item/racial-ability/racial-ability-data-source.ts new file mode 100644 index 00000000..930cf5cd --- /dev/null +++ b/src/documents/item/racial-ability/racial-ability-data-source.ts @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; + +export interface DS4RacialAbilityDataSource { + type: "racialAbility"; + data: DS4RacialAbilityDataSourceData; +} + +export type DS4RacialAbilityDataSourceData = DS4ItemDataSourceDataBase; diff --git a/src/documents/item/racial-ability/racial-ability.ts b/src/documents/item/racial-ability/racial-ability.ts new file mode 100644 index 00000000..b3b360d9 --- /dev/null +++ b/src/documents/item/racial-ability/racial-ability.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4RacialAbility extends DS4Item {} diff --git a/src/documents/item/shield/shield-data-properties.ts b/src/documents/item/shield/shield-data-properties.ts new file mode 100644 index 00000000..a9040994 --- /dev/null +++ b/src/documents/item/shield/shield-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4ShieldDataSourceData } from "./shield-data-source"; + +export interface DS4ShieldDataProperties { + type: "shield"; + data: DS4ShieldDataPropertiesData; +} + +interface DS4ShieldDataPropertiesData extends DS4ShieldDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/shield/shield-data-source.ts b/src/documents/item/shield/shield-data-source.ts new file mode 100644 index 00000000..42547a70 --- /dev/null +++ b/src/documents/item/shield/shield-data-source.ts @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { + DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataProtective, +} from "../item-data-source-base"; + +export interface DS4ShieldDataSource { + type: "shield"; + data: DS4ShieldDataSourceData; +} + +export interface DS4ShieldDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataProtective {} diff --git a/src/documents/item/shield/shield.ts b/src/documents/item/shield/shield.ts new file mode 100644 index 00000000..0da6a219 --- /dev/null +++ b/src/documents/item/shield/shield.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Shield extends DS4Item {} diff --git a/src/documents/item/special-creature-ability/special-creature-ability-data-properties.ts b/src/documents/item/special-creature-ability/special-creature-ability-data-properties.ts new file mode 100644 index 00000000..6891e739 --- /dev/null +++ b/src/documents/item/special-creature-ability/special-creature-ability-data-properties.ts @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4SpecialCreatureAbilityDataSourceData } from "./special-creature-ability-data-source"; + +export interface DS4SpecialCreatureAbilityDataProperties { + type: "specialCreatureAbility"; + data: DS4SpecialCreatureAbilityDataPropertiesData; +} + +interface DS4SpecialCreatureAbilityDataPropertiesData + extends DS4SpecialCreatureAbilityDataSourceData, + DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/special-creature-ability/special-creature-ability-data-source.ts b/src/documents/item/special-creature-ability/special-creature-ability-data-source.ts new file mode 100644 index 00000000..0a132b39 --- /dev/null +++ b/src/documents/item/special-creature-ability/special-creature-ability-data-source.ts @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; + +export interface DS4SpecialCreatureAbilityDataSource { + type: "specialCreatureAbility"; + data: DS4SpecialCreatureAbilityDataSourceData; +} + +export interface DS4SpecialCreatureAbilityDataSourceData extends DS4ItemDataSourceDataBase { + experiencePoints: number; +} diff --git a/src/documents/item/special-creature-ability/special-creature-ability.ts b/src/documents/item/special-creature-ability/special-creature-ability.ts new file mode 100644 index 00000000..57e90988 --- /dev/null +++ b/src/documents/item/special-creature-ability/special-creature-ability.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4SpecialCreatureAbility extends DS4Item {} diff --git a/src/documents/item/spell/calculate-spell-price.ts b/src/documents/item/spell/calculate-spell-price.ts new file mode 100644 index 00000000..019d3f84 --- /dev/null +++ b/src/documents/item/spell/calculate-spell-price.ts @@ -0,0 +1,32 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { CooldownDuration, DS4SpellDataSourceData } from "./spell-data-source"; + +export function calculateSpellPrice(data: DS4SpellDataSourceData): number | null { + const spellPriceFactor = calculateSpellPriceFactor(data.cooldownDuration); + const baseSpellPrices = [ + data.minimumLevels.healer !== null ? 10 + (data.minimumLevels.healer - 1) * 35 : null, + data.minimumLevels.wizard !== null ? 10 + (data.minimumLevels.wizard - 1) * 50 : null, + data.minimumLevels.sorcerer !== null ? 10 + (data.minimumLevels.sorcerer - 1) * 65 : null, + ].filter((baseSpellPrice: number | null): baseSpellPrice is number => baseSpellPrice !== null); + const baseSpellPrice = Math.min(...baseSpellPrices); + return baseSpellPrice === Infinity ? null : baseSpellPrice * spellPriceFactor; +} + +function calculateSpellPriceFactor(cooldownDuration: CooldownDuration): number { + switch (cooldownDuration) { + case "0r": + case "1r": + case "2r": + case "5r": + case "10r": + case "100r": + return 1; + case "1d": + return 2; + case "d20d": + return 3; + } +} diff --git a/src/documents/item/spell/spell-data-properties.ts b/src/documents/item/spell/spell-data-properties.ts new file mode 100644 index 00000000..2c807608 --- /dev/null +++ b/src/documents/item/spell/spell-data-properties.ts @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4SpellDataSourceData } from "./spell-data-source"; + +export interface DS4SpellDataProperties { + type: "spell"; + data: DS4SpellDataPropertiesData; +} + +interface DS4SpellDataPropertiesData extends DS4SpellDataSourceData, DS4ItemDataPropertiesDataRollable { + price: number | null; + opponentDefense?: number; +} diff --git a/src/documents/item/spell/spell-data-source.ts b/src/documents/item/spell/spell-data-source.ts new file mode 100644 index 00000000..1b88c78f --- /dev/null +++ b/src/documents/item/spell/spell-data-source.ts @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../../config"; +import type { DS4ItemDataSourceDataBase, DS4ItemDataSourceDataEquipable } from "../item-data-source-base"; + +export interface DS4SpellDataSource { + type: "spell"; + data: DS4SpellDataSourceData; +} + +export interface DS4SpellDataSourceData extends DS4ItemDataSourceDataBase, DS4ItemDataSourceDataEquipable { + spellType: keyof typeof DS4.i18n.spellTypes; + spellModifier: { + numerical: number; + complex: string; + }; + allowsDefense: boolean; + spellGroups: Record; + maxDistance: UnitData; + effectRadius: UnitData; + duration: UnitData; + cooldownDuration: CooldownDuration; + minimumLevels: { + healer: number | null; + wizard: number | null; + sorcerer: number | null; + }; +} + +export interface UnitData { + value: string; + unit: UnitType; +} + +type DistanceUnit = keyof typeof DS4.i18n.distanceUnits; +type TemporalUnit = keyof typeof DS4.i18n.temporalUnits; +export type CooldownDuration = keyof typeof DS4.i18n.cooldownDurations; diff --git a/src/documents/item/spell/spell.js b/src/documents/item/spell/spell.js new file mode 100644 index 00000000..c94d8ba3 --- /dev/null +++ b/src/documents/item/spell/spell.js @@ -0,0 +1,84 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { createCheckRoll } from "../../../dice/check-factory"; +import { notifications } from "../../../ui/notifications"; +import { getGame } from "../../../utils/utils"; +import { DS4Item } from "../item"; +import { calculateSpellPrice } from "./calculate-spell-price"; + +export class DS4Spell extends DS4Item { + /** @override */ + prepareDerivedData() { + this.system.rollable = this.system.equipped; + this.system.price = calculateSpellPrice(this.system); + if (this.system.allowsDefense) { + this.system.opponentDefense = 0; + } + } + + /** @override */ + async roll(options = {}) { + const game = getGame(); + + if (!this.system.equipped) { + return notifications.warn( + game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { + name: this.name, + id: this.id, + type: this.type, + }), + ); + } + + if (!this.actor) { + throw new Error(game.i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); + } + + const ownerSystemData = this.actor.system; + const hasComplexModifier = this.system.spellModifier.complex !== ""; + if (hasComplexModifier === undefined) { + notifications.info( + game.i18n.format("DS4.InfoManuallyEnterSpellModifier", { + name: this.name, + spellModifier: this.system.spellModifier.complex, + }), + ); + } + const spellType = this.system.spellType; + const opponentDefense = this.system.opponentDefense; + const checkTargetNumber = + ownerSystemData.combatValues[spellType].total + (hasComplexModifier ? 0 : this.system.spellModifier.numerical); + const speaker = ChatMessage.getSpeaker({ actor: this.actor, ...options.speaker }); + const flavor = + opponentDefense !== undefined && opponentDefense !== 0 + ? "DS4.ItemSpellCheckFlavorWithOpponentDefense" + : "DS4.ItemSpellCheckFlavor"; + /** @type {import("../../../dice/check-factory").DS4CheckFactoryOptions["flavorData"]} */ + const flavorData = { + actor: speaker.alias ?? this.actor.name, + spell: this.name, + }; + if (opponentDefense !== undefined && opponentDefense !== 0) { + flavorData.opponentDefense = (opponentDefense < 0 ? "" : "+") + opponentDefense; + } + + await createCheckRoll(checkTargetNumber, { + rollMode: game.settings.get("core", "rollMode"), + maximumCoupResult: ownerSystemData.rolling.maximumCoupResult, + minimumFumbleResult: ownerSystemData.rolling.minimumFumbleResult, + flavor: flavor, + flavorData: flavorData, + speaker, + }); + + /** + * A hook event that fires after an item is rolled. + * @function ds4.rollItem + * @memberof hookEvents + * @param {DS4Item} item Item being rolled. + */ + Hooks.callAll("ds4.rollItem", this); + } +} diff --git a/src/documents/item/talent/talent-data-properties.ts b/src/documents/item/talent/talent-data-properties.ts new file mode 100644 index 00000000..a2449957 --- /dev/null +++ b/src/documents/item/talent/talent-data-properties.ts @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { ModifiableDataBaseTotalMax } from "../../common/common-data"; +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4TalentDataSourceData } from "./talent-data-source"; + +export interface DS4TalentDataProperties { + type: "talent"; + data: DS4TalentDataPropertiesData; +} + +interface DS4TalentDataPropertiesData extends DS4TalentDataSourceData, DS4ItemDataPropertiesDataRollable { + rank: ModifiableDataBaseTotalMax; +} diff --git a/src/documents/item/talent/talent-data-source.ts b/src/documents/item/talent/talent-data-source.ts new file mode 100644 index 00000000..65e34d36 --- /dev/null +++ b/src/documents/item/talent/talent-data-source.ts @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { ModifiableDataBaseMax } from "../../common/common-data"; +import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; + +export interface DS4TalentDataSource { + type: "talent"; + data: DS4TalentDataSourceData; +} + +export interface DS4TalentDataSourceData extends DS4ItemDataSourceDataBase { + rank: ModifiableDataBaseMax; +} diff --git a/src/documents/item/talent/talent.js b/src/documents/item/talent/talent.js new file mode 100644 index 00000000..9f7a5acc --- /dev/null +++ b/src/documents/item/talent/talent.js @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Talent extends DS4Item { + /** @override */ + prepareDerivedData() { + super.prepareDerivedData(); + this.system.rank.total = this.system.rank.base + this.system.rank.mod; + } + + /** @override */ + get activeEffectFactor() { + return this.system.rank.total; + } +} diff --git a/src/documents/item/weapon/weapon-data-properties.ts b/src/documents/item/weapon/weapon-data-properties.ts new file mode 100644 index 00000000..6847b7e4 --- /dev/null +++ b/src/documents/item/weapon/weapon-data-properties.ts @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4WeaponDataSourceData } from "./weapon-data-source"; + +interface DS4WeaponDataPropertiesData extends DS4WeaponDataSourceData, DS4ItemDataPropertiesDataRollable { + opponentDefenseForAttackType: { + melee?: number; + ranged?: number; + }; +} + +export interface DS4WeaponDataProperties { + type: "weapon"; + data: DS4WeaponDataPropertiesData; +} diff --git a/src/documents/item/weapon/weapon-data-source.ts b/src/documents/item/weapon/weapon-data-source.ts new file mode 100644 index 00000000..33ccf16c --- /dev/null +++ b/src/documents/item/weapon/weapon-data-source.ts @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../../config"; +import type { + DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataPhysical, +} from "../item-data-source-base"; + +export interface DS4WeaponDataSource { + type: "weapon"; + data: DS4WeaponDataSourceData; +} + +export interface DS4WeaponDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable { + attackType: AttackType; + weaponBonus: number; + opponentDefense: number; +} + +export type AttackType = keyof typeof DS4.i18n.attackTypes; diff --git a/src/documents/item/weapon/weapon.js b/src/documents/item/weapon/weapon.js new file mode 100644 index 00000000..09a734d0 --- /dev/null +++ b/src/documents/item/weapon/weapon.js @@ -0,0 +1,112 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../../../config"; +import { createCheckRoll } from "../../../dice/check-factory"; +import { notifications } from "../../../ui/notifications"; +import { getGame } from "../../../utils/utils"; +import { DS4Item } from "../item"; + +export class DS4Weapon extends DS4Item { + /** @override */ + prepareDerivedData() { + const system = this.system; + system.rollable = system.equipped; + system.opponentDefenseForAttackType = {}; + if (system.attackType === "melee" || system.attackType === "meleeRanged") { + system.opponentDefenseForAttackType.melee = system.opponentDefense; + } + if (system.attackType === "ranged" || system.attackType === "meleeRanged") { + system.opponentDefenseForAttackType.ranged = system.opponentDefense; + } + } + + /** @override */ + async roll(options = {}) { + const game = getGame(); + if (!this.system.equipped) { + return notifications.warn( + game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { + name: this.name, + id: this.id, + type: this.type, + }), + ); + } + + if (!this.actor) { + throw new Error(game.i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); + } + + const ownerSystemData = this.actor.system; + const weaponBonus = this.system.weaponBonus; + const attackType = await this.getPerformedAttackType(); + const opponentDefense = this.system.opponentDefenseForAttackType[attackType]; + const combatValue = `${attackType}Attack`; + const checkTargetNumber = ownerSystemData.combatValues[combatValue].total + weaponBonus; + const speaker = ChatMessage.getSpeaker({ actor: this.actor, ...options.speaker }); + const flavor = + opponentDefense !== undefined && opponentDefense !== 0 + ? "DS4.ItemWeaponCheckFlavorWithOpponentDefense" + : "DS4.ItemWeaponCheckFlavor"; + /** @type {import("../../../dice/check-factory").DS4CheckFactoryOptions["flavorData"]} */ + const flavorData = { + actor: speaker.alias ?? this.actor.name, + weapon: this.name, + }; + if (opponentDefense !== undefined && opponentDefense !== 0) { + flavorData.opponentDefense = (opponentDefense < 0 ? "" : "+") + opponentDefense; + } + + await createCheckRoll(checkTargetNumber, { + rollMode: getGame().settings.get("core", "rollMode"), + maximumCoupResult: ownerSystemData.rolling.maximumCoupResult, + minimumFumbleResult: ownerSystemData.rolling.minimumFumbleResult, + speaker, + flavor, + flavorData, + }); + + Hooks.callAll("ds4.rollItem", this); + } + + /** + * Get the attack type to perform with this weapon. If there are multiple options prompt the user for a choice. + * @returns {Promise<"melee" | "ranged">} The attack type to perform + * @protected + */ + async getPerformedAttackType() { + if (this.system.attackType !== "meleeRanged") { + return this.system.attackType; + } + + const { melee, ranged } = { ...DS4.i18n.attackTypes }; + const identifier = `attack-type-selection-${foundry.utils.randomID()}`; + return Dialog.prompt({ + title: getGame().i18n.localize("DS4.DialogAttackTypeSelection"), + content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { + selects: [ + { + label: getGame().i18n.localize("DS4.AttackType"), + identifier, + options: { melee, ranged }, + }, + ], + }), + label: getGame().i18n.localize("DS4.GenericOkButton"), + callback: (html) => { + const selectedAttackType = html.find(`#${identifier}`).val(); + if (selectedAttackType !== "melee" && selectedAttackType !== "ranged") { + throw new Error( + getGame().i18n.format("DS4.ErrorUnexpectedAttackType", { + actualType: selectedAttackType, + expectedTypes: "'melee', 'ranged'", + }), + ); + } + return selectedAttackType; + }, + }); + } +} diff --git a/src/documents/token-document.js b/src/documents/token-document.js new file mode 100644 index 00000000..efa26eb7 --- /dev/null +++ b/src/documents/token-document.js @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; +import { DS4ActorProxy } from "./actor/proxy"; + +/** @type {object | undefined} */ +let fallbackData = undefined; + +function getFallbackData() { + if (!fallbackData) { + fallbackData = {}; + for (const type of getGame().system.template.Actor?.types ?? []) { + foundry.utils.mergeObject(fallbackData, new DS4ActorProxy({ type, name: "temporary" }).system); + } + } + return fallbackData; +} + +export class DS4TokenDocument extends TokenDocument { + static getTrackedAttributes(data, _path = []) { + if (!data) { + data = getFallbackData(); + } + return super.getTrackedAttributes(data, _path); + } +} diff --git a/src/ds4.ts b/src/ds4.ts index 285b2bfd..25364a54 100644 --- a/src/ds4.ts +++ b/src/ds4.ts @@ -3,6 +3,7 @@ // SPDX-License-Identifier: MIT import "../scss/ds4.scss"; -import registerForHooks from "./hooks/hooks"; + +import { registerForHooks } from "./hooks/hooks"; registerForHooks(); diff --git a/src/expression-evaluation/evaluator.ts b/src/expression-evaluation/evaluator.ts new file mode 100644 index 00000000..2cc9409a --- /dev/null +++ b/src/expression-evaluation/evaluator.ts @@ -0,0 +1,38 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { Validator } from "./validator"; + +export class Evaluator { + context?: Context; + validator: Validator; + + constructor({ + context, + predicate = Validator.defaultPredicate, + }: { context?: Context; predicate?: (identifier: string) => boolean } = {}) { + let actualPredicate = predicate; + if (context) { + this.context = new Proxy(context, { + has: () => true, + get: (t, k) => (k === Symbol.unscopables ? undefined : t[k as keyof typeof t]), + }); + actualPredicate = (identifier: string) => + predicate(identifier) || Object.getOwnPropertyNames(context).includes(identifier); + } + this.validator = new Validator(actualPredicate); + } + + evaluate(expression: string): unknown { + this.validator.validate(expression); + + const body = `with (sandbox) { return ${expression}; }`; + const evaluate = new Function("sandbox", body); + return evaluate(this.context ?? {}); + } +} + +export const defaultEvaluator = new Evaluator(); + +export const mathEvaluator = new Evaluator({ context: Math }); diff --git a/src/expression-evaluation/grammar.ts b/src/expression-evaluation/grammar.ts new file mode 100644 index 00000000..65d5cd4c --- /dev/null +++ b/src/expression-evaluation/grammar.ts @@ -0,0 +1,61 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +export type Token = TokenWithSymbol | TokenWithoutSymbol; + +export interface TokenWithSymbol { + type: TypeWithSymbol; + symbol: string; + pos: number; +} + +interface TokenWithoutSymbol { + type: TypeWithoutSymbol; + pos: number; +} + +type TypeWithSymbol = "iden" | "number" | "string"; + +type TypeWithoutSymbol = + | "+" + | "-" + | "*" + | "**" + | "/" + | "%" + | "===" + | "!==" + | "==" + | "!=" + | "<" + | "<=" + | ">" + | ">=" + | "&&" + | "||" + | "&" + | "|" + | "~" + | "^" + | "<<" + | ">>" + | ">>>" + | "." + | "?." + | "??" + | "!" + | "?" + | ":" + | "(" + | ")" + | "[" + | "]" + | "," + | "{" + | "}" + | "invalid" + | "eof"; + +export const literals = ["true", "false", "null", "undefined"]; +export const safeOperators = ["in", "instanceof", "typeof", "void"]; diff --git a/src/expression-evaluation/lexer.ts b/src/expression-evaluation/lexer.ts new file mode 100644 index 00000000..d3476c6f --- /dev/null +++ b/src/expression-evaluation/lexer.ts @@ -0,0 +1,261 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { Token } from "./grammar"; + +export class Lexer { + constructor(private readonly input: string) {} + + *[Symbol.iterator](): Generator { + let pos = 0; + while (true) { + if (this.isWhiteSpace(this.input[pos])) { + pos += 1; + continue; + } + const [token, newPos] = this.getNextToken(pos); + pos = newPos; + yield token; + if (token.type === "eof" || token.type === "invalid") { + break; + } + } + } + + private getNextToken(pos: number): [Token, number] { + const current = this.input[pos]; + + if (current === undefined) { + return [{ type: "eof", pos }, pos]; + } + if (this.isOperatorStart(current)) { + return this.getOperator(pos); + } + if (this.isDigit(current)) { + return this.getNumber(pos); + } + if (current === "'" || current === '"' || current === "`") { + return this.getString(pos); + } + if (current === ".") { + const next = this.input[pos + 1]; + if (this.isDigit(next)) { + return this.getNumber(pos); + } + return this.getOperator(pos); + } + if (this.isIdentifierStart(current)) { + return this.getIdentifier(pos); + } + return [{ type: "invalid", pos }, pos]; + } + + private isOperatorStart(char: string) { + const operatorStartChars: (string | undefined)[] = [ + "+", + "-", + "*", + "/", + "%", + "=", + "!", + ">", + "<", + "&", + "|", + "~", + "^", + "?", + ":", + "!", + ",", + "(", + ")", + "[", + "]", + "{", + "}", + ]; + return operatorStartChars.includes(char[0]); + } + + private getOperator(pos: number): [Token, number] { + const current = this.input[pos]; + const next = this.input[pos + 1]; + const nextButOne = this.input[pos + 2]; + switch (current) { + case "+": + case "-": + case "/": + case "%": + case "~": + case "^": + case ".": + case ":": + case ",": + case "(": + case ")": + case "[": + case "]": + case "{": + case "}": { + return [{ type: current, pos }, pos + 1]; + } + case "*": { + if (next === "*") { + return [{ type: "**", pos }, pos + 2]; + } + return [{ type: "*", pos }, pos + 1]; + } + case "=": { + if (next === "=") { + if (nextButOne === "=") { + return [{ type: "===", pos }, pos + 3]; + } + return [{ type: "==", pos }, pos + 2]; + } + return [{ type: "invalid", pos }, pos]; + } + case "!": { + if (next === "=") { + if (nextButOne === "=") { + return [{ type: "!==", pos }, pos + 3]; + } + return [{ type: "!=", pos }, pos + 2]; + } + return [{ type: "!", pos }, pos + 1]; + } + case ">": { + switch (next) { + case ">": { + if (nextButOne === ">") { + return [{ type: ">>>", pos }, pos + 3]; + } + return [{ type: ">>", pos }, pos + 2]; + } + case "=": { + return [{ type: ">=", pos }, pos + 2]; + } + default: { + return [{ type: ">", pos }, pos + 1]; + } + } + } + case "<": { + switch (next) { + case "=": { + return [{ type: "<=", pos }, pos + 2]; + } + case "<": { + return [{ type: "<<", pos }, pos + 2]; + } + default: { + return [{ type: "<", pos }, pos + 1]; + } + } + } + case "&": { + if (next === "&") { + return [{ type: "&&", pos }, pos + 2]; + } + return [{ type: "&", pos }, pos + 1]; + } + case "|": { + if (next === "|") { + return [{ type: "||", pos }, pos + 2]; + } + return [{ type: "|", pos }, pos + 1]; + } + case "?": { + switch (next) { + case ".": { + return [{ type: "?.", pos }, pos + 2]; + } + case "?": { + return [{ type: "??", pos }, pos + 2]; + } + default: { + return [{ type: "?", pos }, pos + 1]; + } + } + } + } + return [{ type: "invalid", pos }, pos]; + } + + private isDigit(char: string | undefined): char is `${number}` { + return /\d/.test(char?.[0] ?? ""); + } + + private getNumber(pos: number): [Token, number] { + let endPos = pos; + let foundDot = false; + let only0s = false; + while ( + this.isDigit(this.input[endPos]) || + this.input[endPos] === "." || + (this.input[endPos] === "_" && endPos > pos) + ) { + if (this.input[endPos] === ".") { + if (foundDot) { + return [{ type: "invalid", pos }, pos]; + } + foundDot = true; + } + if (this.input[endPos] === "0") { + only0s = endPos === pos ? true : only0s; + } + + if (this.input[endPos] === "_" && (this.input[endPos - 1] === "_" || this.input[endPos - 1] === "." || only0s)) { + return [{ type: "invalid", pos }, pos]; + } + + endPos += 1; + } + if (pos === endPos) { + return [{ type: "invalid", pos }, pos]; + } + if (this.input[endPos - 1] === "_") { + return [{ type: "invalid", pos }, pos]; + } + return [{ type: "number", symbol: this.input.slice(pos, endPos), pos }, endPos]; + } + + private isIdentifierStart(char: string | undefined) { + return /[$_\p{ID_Start}]/u.test(char?.[0] ?? ""); + } + + private isIdentifier(char: string | undefined) { + return /[$\u200c\u200d\p{ID_Continue}]/u.test(char?.[0] ?? ""); + } + + private getIdentifier(pos: number): [Token, number] { + let endPos = pos; + while (endPos < this.input.length && this.isIdentifier(this.input[endPos])) { + endPos += 1; + } + if (endPos === pos) { + return [{ type: "invalid", pos }, pos]; + } + return [{ type: "iden", symbol: this.input.slice(pos, endPos), pos }, endPos]; + } + + private getString(pos: number): [Token, number] { + const quote = this.input[pos]; + let endPos = pos + 1; + let prev = this.input[pos]; + while (endPos < this.input.length && (this.input[endPos] !== quote || prev === "\\")) { + prev = this.input[endPos]; + endPos += 1; + } + if (endPos === pos || this.input[endPos] !== quote) { + return [{ type: "invalid", pos }, pos]; + } + return [{ type: "string", symbol: this.input.slice(pos, endPos + 1), pos }, endPos + 1]; + } + + private isWhiteSpace(char: string | undefined) { + return /\s/.test(char?.[0] ?? ""); + } +} diff --git a/src/expression-evaluation/validator.ts b/src/expression-evaluation/validator.ts new file mode 100644 index 00000000..89e1064a --- /dev/null +++ b/src/expression-evaluation/validator.ts @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { literals, safeOperators } from "./grammar"; +import { Lexer } from "./lexer"; + +export class Validator { + constructor(private readonly predicate: (identifier: string) => boolean = Validator.defaultPredicate) {} + + static readonly defaultPredicate = (identifier: string) => [...literals, ...safeOperators].includes(identifier); + + public validate(input: string): void { + const lexer = new Lexer(input); + for (const token of lexer) { + if (token.type === "iden" && !this.predicate(token.symbol)) { + throw new ValidationError(token.symbol); + } + if (token.type === "invalid") { + throw new SyntaxError(`Invalid or unexpected token (${token.pos})`); + } + } + } +} + +class ValidationError extends Error { + constructor(identifier: string) { + super(`'${identifier}' is not an allowed identifier.`); + } +} diff --git a/src/fonts.ts b/src/fonts.ts deleted file mode 100644 index ec0e72e1..00000000 --- a/src/fonts.ts +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -const basicFonts = ["Wood Stamp"]; -const variantFonts = ["Lora"]; - -export async function preloadFonts(): Promise { - const fonts = [ - ...basicFonts.map((font) => `1rem ${font}`), - ...variantFonts.flatMap((font) => [ - `1rem ${font}`, - `bold 1rem ${font}`, - `italic 1rem ${font}`, - `bold italic 1rem ${font}`, - ]), - ]; - return Promise.all(fonts.map((font) => document.fonts.load(font))); -} diff --git a/src/global.d.ts b/src/global.d.ts deleted file mode 100644 index 91fc6c12..00000000 --- a/src/global.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -declare global { - namespace ClientSettings { - interface Values { - "ds4.systemMigrationVersion": number; - "ds4.useSlayingDiceForAutomatedChecks": boolean; - "ds4.showSlayerPoints": boolean; - } - } - - namespace PoolTerm { - interface Modifiers { - x: (this: PoolTerm, modifier: string) => void; - } - } -} - -export {}; diff --git a/src/handlebars/handlebars-helpers.ts b/src/handlebars/handlebars-helpers.ts index 004f31e7..015064a4 100644 --- a/src/handlebars/handlebars-helpers.ts +++ b/src/handlebars/handlebars-helpers.ts @@ -2,15 +2,69 @@ // // SPDX-License-Identifier: MIT -export default function registerHandlebarsHelpers(): void { - Handlebars.registerHelper(helpers); +export function registerHandlebarsHelpers(): void { + Handlebars.registerHelper(helpers); } const helpers = { - htmlToPlainText: (input: string | null | undefined): string | null | undefined => { - if (!input) return; - return $(input).text(); - }, + htmlToPlainText: (input: string | null | undefined): string | null | undefined => { + if (!input) return; + return $(input).text(); + }, - isEmpty: (input: Array | null | undefined): boolean => (input?.length ?? 0) === 0, + isEmpty: (input: Array | null | undefined): boolean => (input?.length ?? 0) === 0, + + toRomanNumerals, }; + +function toRomanNumerals(number: number): string { + return [...generateRomanNumerals(number, 0)].join(""); +} + +function* generateRomanNumerals(number: number, numeralIndex: number): Generator { + if (number === 0) return; + const currentNumeral = numerals[numeralIndex]; + if (currentNumeral === undefined) return; + + const quotient = number / currentNumeral; + const remainder = number % currentNumeral; + const numberAsNumerals = numeralLookup[currentNumeral].repeat(quotient); + + yield numberAsNumerals; + yield* generateRomanNumerals(remainder, numeralIndex + 1); +} + +const numeralLookup = { + 1: "I", + 2: "II", + 3: "III", + 4: "IV", + 5: "V", + 6: "VI", + 7: "VII", + 8: "VIII", + 9: "IX", + 10: "X", + 20: "XX", + 30: "XXX", + 40: "XL", + 50: "L", + 60: "LX", + 70: "LXX", + 80: "LXXX", + 90: "XC", + 100: "C", + 200: "CC", + 300: "CCC", + 400: "CD", + 500: "D", + 600: "DC", + 700: "DCC", + 800: "DCCC", + 900: "CM", + 1000: "M", +}; + +const numerals = [ + 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, +] as const; diff --git a/src/handlebars/handlebars-partials.js b/src/handlebars/handlebars-partials.js new file mode 100644 index 00000000..747c13c4 --- /dev/null +++ b/src/handlebars/handlebars-partials.js @@ -0,0 +1,60 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +/** + * Register the Handlebars partials for DS4. + * @returns {Promise} A promise that resolves once all partials have been registered + */ +export async function registerHandlebarsPartials() { + const templatePaths = [ + "systems/ds4/templates/sheets/actor/components/actor-header.hbs", + "systems/ds4/templates/sheets/actor/components/actor-progression.hbs", + "systems/ds4/templates/sheets/actor/components/biography.hbs", + "systems/ds4/templates/sheets/actor/components/character-properties.hbs", + "systems/ds4/templates/sheets/actor/components/check.hbs", + "systems/ds4/templates/sheets/actor/components/checks.hbs", + "systems/ds4/templates/sheets/actor/components/combat-value.hbs", + "systems/ds4/templates/sheets/actor/components/combat-values.hbs", + "systems/ds4/templates/sheets/actor/components/core-value.hbs", + "systems/ds4/templates/sheets/actor/components/core-values.hbs", + "systems/ds4/templates/sheets/actor/components/creature-properties.hbs", + "systems/ds4/templates/sheets/actor/components/currency.hbs", + "systems/ds4/templates/sheets/actor/components/description.hbs", + "systems/ds4/templates/sheets/actor/components/effect-list-entry.hbs", + "systems/ds4/templates/sheets/actor/components/effect-list-header.hbs", + "systems/ds4/templates/sheets/actor/components/item-list-entry.hbs", + "systems/ds4/templates/sheets/actor/components/item-list-header.hbs", + "systems/ds4/templates/sheets/actor/components/items-overview.hbs", + "systems/ds4/templates/sheets/actor/components/profile.hbs", + "systems/ds4/templates/sheets/actor/tabs/biography.hbs", + "systems/ds4/templates/sheets/actor/tabs/character-abilities.hbs", + "systems/ds4/templates/sheets/actor/tabs/character-inventory.hbs", + "systems/ds4/templates/sheets/actor/tabs/creature-abilities.hbs", + "systems/ds4/templates/sheets/actor/tabs/creature-inventory.hbs", + "systems/ds4/templates/sheets/actor/tabs/description.hbs", + "systems/ds4/templates/sheets/actor/tabs/effects.hbs", + "systems/ds4/templates/sheets/actor/tabs/spells.hbs", + "systems/ds4/templates/sheets/actor/tabs/values.hbs", + "systems/ds4/templates/sheets/item/components/effect-list-entry.hbs", + "systems/ds4/templates/sheets/item/components/effect-list-header.hbs", + "systems/ds4/templates/sheets/item/components/item-header.hbs", + "systems/ds4/templates/sheets/item/components/properties/armor.hbs", + "systems/ds4/templates/sheets/item/components/properties/equipable.hbs", + "systems/ds4/templates/sheets/item/components/properties/physical.hbs", + "systems/ds4/templates/sheets/item/components/properties/protective.hbs", + "systems/ds4/templates/sheets/item/components/properties/talent.hbs", + "systems/ds4/templates/sheets/item/components/properties/special-creature-ability.hbs", + "systems/ds4/templates/sheets/item/components/properties/spell.hbs", + "systems/ds4/templates/sheets/item/components/properties/weapon.hbs", + "systems/ds4/templates/sheets/item/tabs/description.hbs", + "systems/ds4/templates/sheets/item/tabs/effects.hbs", + "systems/ds4/templates/sheets/item/tabs/properties.hbs", + "systems/ds4/templates/sheets/shared/components/add-button.hbs", + "systems/ds4/templates/sheets/shared/components/control-button-group.hbs", + "systems/ds4/templates/sheets/shared/components/rollable-image.hbs", + ]; + await loadTemplates(templatePaths); +} diff --git a/src/handlebars/handlebars-partials.ts b/src/handlebars/handlebars-partials.ts deleted file mode 100644 index 0a0ca83e..00000000 --- a/src/handlebars/handlebars-partials.ts +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -export default async function registerHandlebarsPartials(): Promise { - const templatePaths = [ - "systems/ds4/templates/sheets/actor/components/actor-header.hbs", - "systems/ds4/templates/sheets/actor/components/actor-progression.hbs", - "systems/ds4/templates/sheets/actor/components/biography.hbs", - "systems/ds4/templates/sheets/actor/components/character-properties.hbs", - "systems/ds4/templates/sheets/actor/components/check.hbs", - "systems/ds4/templates/sheets/actor/components/checks.hbs", - "systems/ds4/templates/sheets/actor/components/combat-value.hbs", - "systems/ds4/templates/sheets/actor/components/combat-values.hbs", - "systems/ds4/templates/sheets/actor/components/core-value.hbs", - "systems/ds4/templates/sheets/actor/components/core-values.hbs", - "systems/ds4/templates/sheets/actor/components/creature-properties.hbs", - "systems/ds4/templates/sheets/actor/components/currency.hbs", - "systems/ds4/templates/sheets/actor/components/effect-list-entry.hbs", - "systems/ds4/templates/sheets/actor/components/effect-list-header.hbs", - "systems/ds4/templates/sheets/actor/components/item-list-entry.hbs", - "systems/ds4/templates/sheets/actor/components/item-list-header.hbs", - "systems/ds4/templates/sheets/actor/components/items-overview.hbs", - "systems/ds4/templates/sheets/actor/components/profile.hbs", - "systems/ds4/templates/sheets/actor/components/talent-rank-equation.hbs", - "systems/ds4/templates/sheets/actor/tabs/biography.hbs", - "systems/ds4/templates/sheets/actor/tabs/character-abilities.hbs", - "systems/ds4/templates/sheets/actor/tabs/character-inventory.hbs", - "systems/ds4/templates/sheets/actor/tabs/creature-abilities.hbs", - "systems/ds4/templates/sheets/actor/tabs/creature-inventory.hbs", - "systems/ds4/templates/sheets/actor/tabs/description.hbs", - "systems/ds4/templates/sheets/actor/tabs/effects.hbs", - "systems/ds4/templates/sheets/actor/tabs/spells.hbs", - "systems/ds4/templates/sheets/actor/tabs/values.hbs", - "systems/ds4/templates/sheets/item/components/effect-list-entry.hbs", - "systems/ds4/templates/sheets/item/components/effect-list-header.hbs", - "systems/ds4/templates/sheets/item/components/item-header.hbs", - "systems/ds4/templates/sheets/item/components/properties/armor.hbs", - "systems/ds4/templates/sheets/item/components/properties/equipable.hbs", - "systems/ds4/templates/sheets/item/components/properties/physical.hbs", - "systems/ds4/templates/sheets/item/components/properties/protective.hbs", - "systems/ds4/templates/sheets/item/components/properties/talent.hbs", - "systems/ds4/templates/sheets/item/components/properties/special-creature-ability.hbs", - "systems/ds4/templates/sheets/item/components/properties/spell.hbs", - "systems/ds4/templates/sheets/item/components/properties/weapon.hbs", - "systems/ds4/templates/sheets/item/tabs/description.hbs", - "systems/ds4/templates/sheets/item/tabs/effects.hbs", - "systems/ds4/templates/sheets/item/tabs/properties.hbs", - "systems/ds4/templates/sheets/shared/components/add-button.hbs", - "systems/ds4/templates/sheets/shared/components/control-button-group.hbs", - "systems/ds4/templates/sheets/shared/components/rollable-image.hbs", - ]; - await loadTemplates(templatePaths); -} diff --git a/src/helpers.ts b/src/helpers.ts deleted file mode 100644 index e96322e4..00000000 --- a/src/helpers.ts +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -export function getCanvas(): Canvas { - if (!(canvas instanceof Canvas) || !canvas.ready) { - throw new Error(getGame().i18n.localize("DS4.ErrorCanvasIsNotInitialized")); - } - return canvas; -} - -export function getGame(): Game { - if (!(game instanceof Game)) { - throw new Error("Game is not initialized yet."); // Cannot localize this as we would need to access game to do this. - } - return game; -} - -export function getGameSafe(): Game | undefined { - return game instanceof Game ? game : undefined; -} diff --git a/src/hooks/hooks.ts b/src/hooks/hooks.ts index 2507c4fd..b69fbb1f 100644 --- a/src/hooks/hooks.ts +++ b/src/hooks/hooks.ts @@ -2,16 +2,18 @@ // // SPDX-License-Identifier: MIT -import registerForHotbarDropHook from "./hotbar-drop"; -import registerForInitHook from "./init"; -import registerForReadyHook from "./ready"; -import registerForRenderHooks from "./render"; -import registerForSetupHook from "./setup"; +import { registerForHotbarDropHook } from "./hotbar-drop"; +import { registerForInitHook } from "./init"; +import { registerForPreCreateItemHook } from "./pre-create-item"; +import { registerForReadyHook } from "./ready"; +import { registerForRenderHooks } from "./render"; +import { registerForSetupHook } from "./setup"; -export default function registerForHooks(): void { - registerForHotbarDropHook(); - registerForInitHook(); - registerForReadyHook(); - registerForRenderHooks(); - registerForSetupHook(); +export function registerForHooks(): void { + registerForHotbarDropHook(); + registerForPreCreateItemHook(); + registerForInitHook(); + registerForReadyHook(); + registerForRenderHooks(); + registerForSetupHook(); } diff --git a/src/hooks/hotbar-drop.js b/src/hooks/hotbar-drop.js new file mode 100644 index 00000000..3d6957db --- /dev/null +++ b/src/hooks/hotbar-drop.js @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { createRollCheckMacro } from "../macros/roll-check"; +import { createRollItemMacro } from "../macros/roll-item"; + +export function registerForHotbarDropHook() { + Hooks.on("hotbarDrop", onHotbarDrop); +} + +/** + * @typedef {Record} DropData + * @property {string} type + */ + +/** + * Handle a drop event on the hotbar + * @param {Hotbar} hotbar The hotbar on which something wqas + * @param {DropData} data The drop data associated to the drop event + * @param {string} slot The slot on the hotbar that somethingwas dropped on + * @returns {void | false} + */ +function onHotbarDrop(hotbar, data, slot) { + switch (data.type) { + case "Item": { + createRollItemMacro(data, slot); + return false; + } + case "Check": { + createRollCheckMacro(data, slot); + return false; + } + } +} diff --git a/src/hooks/hotbar-drop.ts b/src/hooks/hotbar-drop.ts deleted file mode 100644 index ac4e621a..00000000 --- a/src/hooks/hotbar-drop.ts +++ /dev/null @@ -1,48 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { isCheck } from "../actor/actor-data-properties"; -import { getGame } from "../helpers"; -import { DS4Item } from "../item/item"; -import { createRollCheckMacro } from "../macros/roll-check"; -import { createRollItemMacro } from "../macros/roll-item"; -import notifications from "../ui/notifications"; - -export default function registerForHotbarDropHook(): void { - Hooks.on("hotbarDrop", async (hotbar: Hotbar, data: HotbarDropData, slot: string) => { - switch (data.type) { - case "Item": { - if (!isItemDropData(data) || !("data" in data)) { - return notifications.warn( - getGame().i18n.localize("DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems"), - ); - } - const itemData = data.data; - - if (!DS4Item.rollableItemTypes.includes(itemData.type)) { - return notifications.warn( - getGame().i18n.format("DS4.WarningItemIsNotRollable", { - name: itemData.name, - id: itemData._id, - type: itemData.type, - }), - ); - } - return createRollItemMacro(itemData, slot); - } - case "Check": { - if (!("data" in data) || typeof data.data !== "string" || !isCheck(data.data)) { - return notifications.warn(getGame().i18n.localize("DS4.WarningInvalidCheckDropped")); - } - return createRollCheckMacro(data.data, slot); - } - } - }); -} - -type HotbarDropData = ActorSheet.DropData.Item | ({ type: string } & Partial>); - -function isItemDropData(dropData: HotbarDropData): dropData is ActorSheet.DropData.Item { - return dropData.type === "Item"; -} diff --git a/src/hooks/init.js b/src/hooks/init.js new file mode 100644 index 00000000..199b32bd --- /dev/null +++ b/src/hooks/init.js @@ -0,0 +1,82 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +import { DS4ActiveEffectConfig } from "../apps/active-effect-config"; +import { DS4CharacterActorSheet } from "../apps/actor/character-sheet"; +import { DS4CreatureActorSheet } from "../apps/actor/creature-sheet"; +import { DS4ItemSheet } from "../apps/item-sheet"; +import { DS4 } from "../config"; +import { DS4Check } from "../dice/check"; +import { createCheckRoll } from "../dice/check-factory"; +import { DS4Roll } from "../dice/roll"; +import { registerSlayingDiceModifier } from "../dice/slaying-dice-modifier"; +import { DS4ActiveEffect } from "../documents/active-effect"; +import { DS4ActorProxy } from "../documents/actor/proxy"; +import { DS4ChatMessage } from "../documents/chat-message"; +import { DS4ItemProxy } from "../documents/item/proxy"; +import { DS4TokenDocument } from "../documents/token-document"; +import { registerHandlebarsHelpers } from "../handlebars/handlebars-helpers"; +import { registerHandlebarsPartials } from "../handlebars/handlebars-partials"; +import { macros } from "../macros/macros"; +import { migration } from "../migration/migration"; +import { registerSystemSettings } from "../settings"; +import { preloadFonts } from "../ui/fonts"; +import { logger } from "../utils/logger"; +import { getGame } from "../utils/utils"; + +export function registerForInitHook() { + Hooks.once("init", init); +} + +async function init() { + logger.info(`Initializing the DS4 Game System\n${DS4.ASCII}`); + + getGame().ds4 = { + DS4Actor: DS4ActorProxy, + DS4Item: DS4ItemProxy, + DS4, + createCheckRoll, + migration, + macros, + }; + + CONFIG.DS4 = DS4; + + CONFIG.Actor.documentClass = DS4ActorProxy; + CONFIG.Item.documentClass = DS4ItemProxy; + CONFIG.ActiveEffect.documentClass = DS4ActiveEffect; + CONFIG.ChatMessage.documentClass = DS4ChatMessage; + CONFIG.Token.documentClass = DS4TokenDocument; + + CONFIG.ActiveEffect.legacyTransferral = false; + + CONFIG.Actor.typeLabels = DS4.i18n.actorTypes; + CONFIG.Item.typeLabels = DS4.i18n.itemTypes; + + CONFIG.Dice.types.push(DS4Check); + CONFIG.Dice.terms.s = DS4Check; + + CONFIG.Dice.rolls.unshift(DS4Roll); + + registerSlayingDiceModifier(); + + registerSystemSettings(); + + DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet); + DocumentSheetConfig.registerSheet(Actor, "ds4", DS4CharacterActorSheet, { + types: ["character"], + makeDefault: true, + }); + DocumentSheetConfig.registerSheet(Actor, "ds4", DS4CreatureActorSheet, { types: ["creature"], makeDefault: true }); + DocumentSheetConfig.unregisterSheet(Item, "core", ItemSheet); + DocumentSheetConfig.registerSheet(Item, "ds4", DS4ItemSheet, { makeDefault: true }); + DocumentSheetConfig.unregisterSheet(ActiveEffect, "core", ActiveEffectConfig); + DocumentSheetConfig.registerSheet(ActiveEffect, "ds4", DS4ActiveEffectConfig, { makeDefault: true }); + + preloadFonts(); + await registerHandlebarsPartials(); + registerHandlebarsHelpers(); +} diff --git a/src/hooks/init.ts b/src/hooks/init.ts deleted file mode 100644 index 75353d2e..00000000 --- a/src/hooks/init.ts +++ /dev/null @@ -1,89 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -import { DS4ActiveEffect } from "../active-effect"; -import { DS4Actor } from "../actor/actor"; -import { DS4CharacterActorSheet } from "../actor/sheets/character-sheet"; -import { DS4CreatureActorSheet } from "../actor/sheets/creature-sheet"; -import { DS4ChatMessage } from "../chat-message"; -import { DS4 } from "../config"; -import { preloadFonts as preloadFonts } from "../fonts"; -import registerHandlebarsHelpers from "../handlebars/handlebars-helpers"; -import registerHandlebarsPartials from "../handlebars/handlebars-partials"; -import { getGame } from "../helpers"; -import { DS4Item } from "../item/item"; -import { DS4ItemSheet } from "../item/item-sheet"; -import logger from "../logger"; -import { macros } from "../macros/macros"; -import { migration } from "../migrations"; -import { DS4Check } from "../rolls/check"; -import { createCheckRoll } from "../rolls/check-factory"; -import { DS4Roll } from "../rolls/roll"; -import registerSlayingDiceModifier from "../rolls/slaying-dice-modifier"; -import { registerSystemSettings } from "../settings"; - -export default function registerForInitHook(): void { - Hooks.once("init", init); -} - -async function init() { - logger.info(`Initializing the DS4 Game System\n${DS4.ASCII}`); - - getGame().ds4 = { - DS4Actor, - DS4Item, - DS4, - createCheckRoll, - migration, - macros, - }; - - CONFIG.DS4 = DS4; - - CONFIG.Actor.documentClass = DS4Actor; - CONFIG.Item.documentClass = DS4Item; - CONFIG.ActiveEffect.documentClass = DS4ActiveEffect; - CONFIG.ChatMessage.documentClass = DS4ChatMessage; - - CONFIG.Actor.typeLabels = DS4.i18n.actorTypes; - CONFIG.Item.typeLabels = DS4.i18n.itemTypes; - - CONFIG.Dice.types.push(DS4Check); - CONFIG.Dice.terms.s = DS4Check; - - CONFIG.Dice.rolls.unshift(DS4Roll); - - registerSlayingDiceModifier(); - - registerSystemSettings(); - - Actors.unregisterSheet("core", ActorSheet); - Actors.registerSheet("ds4", DS4CharacterActorSheet, { types: ["character"], makeDefault: true }); - Actors.registerSheet("ds4", DS4CreatureActorSheet, { types: ["creature"], makeDefault: true }); - Items.unregisterSheet("core", ItemSheet); - Items.registerSheet("ds4", DS4ItemSheet, { makeDefault: true }); - - preloadFonts(); - await registerHandlebarsPartials(); - registerHandlebarsHelpers(); -} - -declare global { - interface Game { - ds4: { - DS4Actor: typeof DS4Actor; - DS4Item: typeof DS4Item; - DS4: typeof DS4; - createCheckRoll: typeof createCheckRoll; - migration: typeof migration; - macros: typeof macros; - }; - } - - interface CONFIG { - DS4: typeof DS4; - } -} diff --git a/src/hooks/pre-create-item.js b/src/hooks/pre-create-item.js new file mode 100644 index 00000000..545bd540 --- /dev/null +++ b/src/hooks/pre-create-item.js @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2023 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { notifications } from "../ui/notifications.js"; +import { getGame } from "../utils/utils.js"; + +export function registerForPreCreateItemHook() { + Hooks.on("preCreateItem", preCreateItem); +} + +/** + * @param {import('../documents/item/item.js').DS4Item} item + * @returns {void | false} + */ +function preCreateItem(item) { + if (item.parent instanceof Actor && !item.parent.canOwnItemType(item.type)) { + notifications.warn( + getGame().i18n.format("DS4.WarningActorCannotOwnItem", { + actorName: item.actor.name, + actorType: item.actor.type, + itemName: item.name, + itemType: item.type, + }), + ); + return false; + } +} diff --git a/src/hooks/ready.js b/src/hooks/ready.js new file mode 100644 index 00000000..50922bf9 --- /dev/null +++ b/src/hooks/ready.js @@ -0,0 +1,11 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { migration } from "../migration/migration"; + +export function registerForReadyHook() { + Hooks.once("ready", () => { + migration.migrate(); + }); +} diff --git a/src/hooks/ready.ts b/src/hooks/ready.ts deleted file mode 100644 index b313ce5c..00000000 --- a/src/hooks/ready.ts +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { migration } from "../migrations"; - -export default function registerForReadyHook(): void { - Hooks.once("ready", () => { - migration.migrate(); - }); -} diff --git a/src/hooks/render.js b/src/hooks/render.js new file mode 100644 index 00000000..c8028dbf --- /dev/null +++ b/src/hooks/render.js @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +/** + * @remarks The render hooks of all classes in the class hierarchy are called, so e.g. for a {@link Dialog}, both the + * "renderDialog" hook and the "renderApplication" hook are called (in this order). + */ +export function registerForRenderHooks() { + ["renderApplication", "renderActorSheet", "renderItemSheet"].forEach((hook) => { + Hooks.on(hook, selectTargetInputOnFocus); + }); +} + +/** + * Select the text of input elements in given application when focused via an on focus listener. + * + * @param {Application} app The application in which to activate the listener. + * @param {JQuery} html The {@link JQuery} representing the HTML of the application. + */ +function selectTargetInputOnFocus(app, html) { + html.find("input").on("focus", (ev) => { + ev.currentTarget.select(); + }); +} diff --git a/src/hooks/render.ts b/src/hooks/render.ts deleted file mode 100644 index 547f80e2..00000000 --- a/src/hooks/render.ts +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -/** - * @remarks The render hooks of all classes in the class hierarchy are called, so e.g. for a {@link Dialog}, both the - * "renderDialog" hook and the "renderApplication" hook are called (in this order). - */ -export default function registerForRenderHooks(): void { - ["renderApplication", "renderActorSheet", "renderItemSheet"].forEach((hook) => { - Hooks.on(hook, selectTargetInputOnFocus); - }); -} - -/** - * Select the text of input elements in given application when focused via an on focus listener. - * - * @param app - The application in which to activate the listener. - * @param html - The {@link JQuery} representing the HTML of the application. - */ -function selectTargetInputOnFocus(app: Application, html: JQuery) { - $(html) - .find("input") - .on("focus", (ev: JQuery.FocusEvent) => { - ev.currentTarget.select(); - }); -} diff --git a/src/hooks/setup.js b/src/hooks/setup.js new file mode 100644 index 00000000..bcb7f540 --- /dev/null +++ b/src/hooks/setup.js @@ -0,0 +1,50 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// SPDX-FileCopyrightText: 2021 Siegfried Krug +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../config"; +import { getGame } from "../utils/utils"; + +export function registerForSetupHook() { + Hooks.once("setup", () => { + localizeAndSortConfigObjects(); + }); +} + +/** + * Localizes all objects in {@link DS4.i18n} and sorts them unless they are explicitly excluded. + */ +function localizeAndSortConfigObjects() { + const noSort = [ + "attributes", + "combatValues", + "cooldownDurations", + "creatureSizeCategories", + "spellGroups", + "traits", + "checkModifiers", + ]; + + /** + * @template {Record} T + * @param {T} obj The object to localize + * @param {boolean} [sort=true] whether or not to sort the object + * @returns {T} the localized object + */ + const localizeObject = (obj, sort = true) => { + const localized = Object.entries(obj).map(([key, value]) => { + return [key, getGame().i18n.localize(value)]; + }); + if (sort) localized.sort((a, b) => a[1].localeCompare(b[1])); + return Object.fromEntries(localized); + }; + + DS4.i18n = Object.fromEntries( + Object.entries(DS4.i18n).map(([key, value]) => { + return [key, localizeObject(value, !noSort.includes(key))]; + }), + ); +} diff --git a/src/hooks/setup.ts b/src/hooks/setup.ts deleted file mode 100644 index d9105954..00000000 --- a/src/hooks/setup.ts +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// SPDX-FileCopyrightText: 2021 Siegfried Krug -// -// SPDX-License-Identifier: MIT - -import { DS4 } from "../config"; -import { getGame } from "../helpers"; - -export default function registerForSetupHooks(): void { - Hooks.once("setup", () => { - localizeAndSortConfigObjects(); - }); -} - -/** - * Localizes all objects in {@link DS4.i18n} and sorts them unless they are explicitly excluded. - */ -function localizeAndSortConfigObjects() { - const noSort = ["attributes", "traits", "combatValues", "creatureSizeCategories"]; - - const localizeObject = (obj: T, sort = true): T => { - const localized = Object.entries(obj).map(([key, value]): [string, string] => { - return [key, getGame().i18n.localize(value)]; - }); - if (sort) localized.sort((a, b) => a[1].localeCompare(b[1])); - return Object.fromEntries(localized) as T; - }; - - DS4.i18n = Object.fromEntries( - Object.entries(DS4.i18n).map(([key, value]) => { - return [key, localizeObject(value, !noSort.includes(key))]; - }), - ) as typeof DS4.i18n; -} diff --git a/src/item/item-data-properties.ts b/src/item/item-data-properties.ts deleted file mode 100644 index 3dcda46f..00000000 --- a/src/item/item-data-properties.ts +++ /dev/null @@ -1,130 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { ModifiableDataBaseTotalMax } from "../common/common-data"; -import { - DS4AlphabetDataSourceData, - DS4ArmorDataSourceData, - DS4EquipmentDataSourceData, - DS4LanguageDataSourceData, - DS4LootDataSourceData, - DS4RacialAbilityDataSourceData, - DS4ShieldDataSourceData, - DS4SpecialCreatureAbilityDataSourceData, - DS4SpellDataSourceData, - DS4TalentDataSourceData, - DS4WeaponDataSourceData, -} from "./item-data-source"; - -declare global { - interface DataConfig { - Item: DS4ItemDataProperties; - } -} - -export type DS4ItemDataProperties = - | DS4WeaponDataProperties - | DS4ArmorDataProperties - | DS4ShieldDataProperties - | DS4SpellDataProperties - | DS4EquipmentDataProperties - | DS4LootDataProperties - | DS4TalentDataProperties - | DS4RacialAbilityDataProperties - | DS4LanguageDataProperties - | DS4AlphabetDataProperties - | DS4SpecialCreatureAbilityDataProperties; - -export interface DS4WeaponDataProperties { - type: "weapon"; - data: DS4WeaponDataPropertiesData; -} - -export interface DS4ArmorDataProperties { - type: "armor"; - data: DS4ArmorDataPropertiesData; -} - -export interface DS4ShieldDataProperties { - type: "shield"; - data: DS4ShieldDataPropertiesData; -} - -export interface DS4SpellDataProperties { - type: "spell"; - data: DS4SpellDataPropertiesData; -} - -export interface DS4EquipmentDataProperties { - type: "equipment"; - data: DS4EquipmentDataPropertiesData; -} - -export interface DS4LootDataProperties { - type: "loot"; - data: DS4LootDataPropertiesData; -} - -export interface DS4TalentDataProperties { - type: "talent"; - data: DS4TalentDataPropertiesData; -} - -export interface DS4RacialAbilityDataProperties { - type: "racialAbility"; - data: DS4RacialAbilityDataPropertiesData; -} - -export interface DS4LanguageDataProperties { - type: "language"; - data: DS4LanguageDataPropertiesData; -} - -export interface DS4AlphabetDataProperties { - type: "alphabet"; - data: DS4AlphabetDataPropertiesData; -} - -export interface DS4SpecialCreatureAbilityDataProperties { - type: "specialCreatureAbility"; - data: DS4SpecialCreatureAbilityDataPropertiesData; -} - -// templates - -interface DS4ItemDataPropertiesDataRollable { - rollable: boolean; -} - -//types - -interface DS4WeaponDataPropertiesData extends DS4WeaponDataSourceData, DS4ItemDataPropertiesDataRollable {} - -interface DS4ArmorDataPropertiesData extends DS4ArmorDataSourceData, DS4ItemDataPropertiesDataRollable {} - -interface DS4ShieldDataPropertiesData extends DS4ShieldDataSourceData, DS4ItemDataPropertiesDataRollable {} - -interface DS4SpellDataPropertiesData extends DS4SpellDataSourceData, DS4ItemDataPropertiesDataRollable { - price: number | null; -} - -interface DS4EquipmentDataPropertiesData extends DS4EquipmentDataSourceData, DS4ItemDataPropertiesDataRollable {} - -interface DS4LootDataPropertiesData extends DS4LootDataSourceData, DS4ItemDataPropertiesDataRollable {} - -interface DS4TalentDataPropertiesData extends DS4TalentDataSourceData, DS4ItemDataPropertiesDataRollable { - rank: ModifiableDataBaseTotalMax; -} - -interface DS4RacialAbilityDataPropertiesData - extends DS4RacialAbilityDataSourceData, - DS4ItemDataPropertiesDataRollable {} - -interface DS4LanguageDataPropertiesData extends DS4LanguageDataSourceData, DS4ItemDataPropertiesDataRollable {} - -interface DS4AlphabetDataPropertiesData extends DS4AlphabetDataSourceData, DS4ItemDataPropertiesDataRollable {} - -interface DS4SpecialCreatureAbilityDataPropertiesData - extends DS4SpecialCreatureAbilityDataSourceData, - DS4ItemDataPropertiesDataRollable {} diff --git a/src/item/item-data-source.ts b/src/item/item-data-source.ts deleted file mode 100644 index dc7f4c4c..00000000 --- a/src/item/item-data-source.ts +++ /dev/null @@ -1,184 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -import { ModifiableDataBaseMax } from "../common/common-data"; -import { DS4 } from "../config"; - -declare global { - interface SourceConfig { - Item: DS4ItemDataSource; - } -} - -export type ItemType = keyof typeof DS4.i18n.itemTypes; - -export type DS4ItemDataSource = - | DS4WeaponDataSource - | DS4ArmorDataSource - | DS4ShieldDataSource - | DS4SpellDataSource - | DS4EquipmentDataSource - | DS4LootDataSource - | DS4TalentDataSource - | DS4RacialAbilityDataSource - | DS4LanguageDataSource - | DS4AlphabetDataSource - | DS4SpecialCreatureAbilityDataSource; - -interface DS4WeaponDataSource { - type: "weapon"; - data: DS4WeaponDataSourceData; -} - -interface DS4ArmorDataSource { - type: "armor"; - data: DS4ArmorDataSourceData; -} - -interface DS4ShieldDataSource { - type: "shield"; - data: DS4ShieldDataSourceData; -} - -interface DS4SpellDataSource { - type: "spell"; - data: DS4SpellDataSourceData; -} - -interface DS4EquipmentDataSource { - type: "equipment"; - data: DS4EquipmentDataSourceData; -} - -interface DS4LootDataSource { - type: "loot"; - data: DS4LootDataSourceData; -} - -interface DS4TalentDataSource { - type: "talent"; - data: DS4TalentDataSourceData; -} - -interface DS4RacialAbilityDataSource { - type: "racialAbility"; - data: DS4RacialAbilityDataSourceData; -} - -interface DS4LanguageDataSource { - type: "language"; - data: DS4LanguageDataSourceData; -} - -interface DS4AlphabetDataSource { - type: "alphabet"; - data: DS4AlphabetDataSourceData; -} - -interface DS4SpecialCreatureAbilityDataSource { - type: "specialCreatureAbility"; - data: DS4SpecialCreatureAbilityDataSourceData; -} - -// templates - -interface DS4ItemDataSourceDataBase { - description: string; -} - -interface DS4ItemDataSourceDataPhysical { - quantity: number; - price: number; - availability: keyof typeof DS4.i18n.itemAvailabilities; - storageLocation: string; -} - -export function isDS4ItemDataTypePhysical(input: foundry.data.ItemData["data"]): boolean { - return "quantity" in input && "price" in input && "availability" in input && "storageLocation" in input; -} - -interface DS4ItemDataSourceDataEquipable { - equipped: boolean; -} - -interface DS4ItemDataSourceDataProtective { - armorValue: number; -} - -// types - -export interface DS4WeaponDataSourceData - extends DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataPhysical, - DS4ItemDataSourceDataEquipable { - attackType: AttackType; - weaponBonus: number; - opponentDefense: number; -} - -export type AttackType = keyof typeof DS4.i18n.attackTypes; - -export interface DS4ArmorDataSourceData - extends DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataPhysical, - DS4ItemDataSourceDataEquipable, - DS4ItemDataSourceDataProtective { - armorMaterialType: keyof typeof DS4.i18n.armorMaterialTypes; - armorType: keyof typeof DS4.i18n.armorTypes; -} - -export interface DS4ShieldDataSourceData - extends DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataPhysical, - DS4ItemDataSourceDataEquipable, - DS4ItemDataSourceDataProtective {} - -export interface DS4SpellDataSourceData extends DS4ItemDataSourceDataBase, DS4ItemDataSourceDataEquipable { - spellType: keyof typeof DS4.i18n.spellTypes; - bonus: string; - spellCategory: keyof typeof DS4.i18n.spellCategories; - maxDistance: UnitData; - effectRadius: UnitData; - duration: UnitData; - cooldownDuration: UnitData; - minimumLevels: { - healer: number | null; - wizard: number | null; - sorcerer: number | null; - }; -} - -export interface UnitData { - value: string; - unit: UnitType; -} - -type DistanceUnit = keyof typeof DS4.i18n.distanceUnits; - -type CustomTemporalUnit = keyof typeof DS4.i18n.customTemporalUnits; - -export type TemporalUnit = keyof typeof DS4.i18n.temporalUnits; - -export interface DS4EquipmentDataSourceData - extends DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataPhysical, - DS4ItemDataSourceDataEquipable {} - -export interface DS4LootDataSourceData extends DS4ItemDataSourceDataBase, DS4ItemDataSourceDataPhysical {} - -export interface DS4TalentDataSourceData extends DS4ItemDataSourceDataBase { - rank: ModifiableDataBaseMax; -} - -export type DS4RacialAbilityDataSourceData = DS4ItemDataSourceDataBase; - -export type DS4LanguageDataSourceData = DS4ItemDataSourceDataBase; - -export type DS4AlphabetDataSourceData = DS4ItemDataSourceDataBase; - -export interface DS4SpecialCreatureAbilityDataSourceData extends DS4ItemDataSourceDataBase { - experiencePoints: number; -} diff --git a/src/item/item-sheet.ts b/src/item/item-sheet.ts deleted file mode 100644 index 77fac4af..00000000 --- a/src/item/item-sheet.ts +++ /dev/null @@ -1,141 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -import { DS4ActiveEffect } from "../active-effect"; -import { DS4 } from "../config"; -import { getGame } from "../helpers"; -import notifications from "../ui/notifications"; -import { enforce } from "../utils"; -import { isDS4ItemDataTypePhysical } from "./item-data-source"; - -/** - * The Sheet class for DS4 Items - */ -export class DS4ItemSheet extends ItemSheet { - /** @override */ - static get defaultOptions(): ItemSheet.Options { - return foundry.utils.mergeObject(super.defaultOptions, { - classes: ["sheet", "ds4-item-sheet"], - height: 400, - scrollY: [".ds4-sheet-body"], - tabs: [{ navSelector: ".ds4-sheet-tab-nav", contentSelector: ".ds4-sheet-body", initial: "description" }], - width: 540, - }); - } - - /** @override */ - get template(): string { - const basePath = "systems/ds4/templates/sheets/item"; - return `${basePath}/${this.item.data.type}-sheet.hbs`; - } - - /** @override */ - async getData(): Promise { - const data = { - ...(await super.getData()), - config: DS4, - isOwned: this.item.isOwned, - actor: this.item.actor, - isPhysical: isDS4ItemDataTypePhysical(this.item.data.data), - }; - return data; - } - - /** @override */ - setPosition(options: Partial = {}): (Application.Position & { height: number }) | void { - const position = super.setPosition(options); - if (position) { - const sheetBody = this.element.find(".sheet-body"); - const bodyHeight = position.height - 192; - sheetBody.css("height", bodyHeight); - } - - return position; - } - - /** @override */ - activateListeners(html: JQuery): void { - super.activateListeners(html); - - if (!this.options.editable) return; - - html.find(".control-effect").on("click", this.onControlEffect.bind(this)); - } - - /** - * Handles a click on an element of this sheet to control an embedded effect of the item corresponding to this - * sheet. - * - * @param event - The originating click event - */ - protected onControlEffect(event: JQuery.ClickEvent): void { - event.preventDefault(); - if (this.item.isOwned) { - return notifications.warn(getGame().i18n.localize("DS4.WarningManageActiveEffectOnOwnedItem")); - } - const a = event.currentTarget; - switch (a.dataset["action"]) { - case "create": - return this.onCreateEffect(); - case "edit": - return this.onEditEffect(event); - case "delete": - return this.onDeleteEffect(event); - } - } - - /** - * Creates a new embedded effect. - * - * @param event - The originating click event - */ - protected onCreateEffect(): void { - DS4ActiveEffect.createDefault(this.item); - } - - /** - * Opens the sheet of the embedded effect corresponding to the clicked element. - * - * @param event - The originating click event - */ - protected onEditEffect(event: JQuery.ClickEvent): void { - const id = $(event.currentTarget) - .parents(embeddedDocumentListEntryProperties.ActiveEffect.selector) - .data(embeddedDocumentListEntryProperties.ActiveEffect.idDataAttribute); - const effect = this.item.effects.get(id); - enforce(effect, getGame().i18n.format("DS4.ErrorItemDoesNotHaveEffect", { id, item: this.item.name })); - effect.sheet.render(true); - } - - /** - * Deletes the embedded item corresponding to the clicked element. - * - * @param event - The originating click event - */ - protected onDeleteEffect(event: JQuery.ClickEvent): void { - const li = $(event.currentTarget).parents(embeddedDocumentListEntryProperties.ActiveEffect.selector); - const id = li.data(embeddedDocumentListEntryProperties.ActiveEffect.idDataAttribute); - this.item.deleteEmbeddedDocuments("ActiveEffect", [id]); - li.slideUp(200, () => this.render(false)); - } -} - -interface DS4ItemSheetData extends ItemSheet.Data { - config: typeof DS4; - isOwned: boolean; - actor: DS4ItemSheet["item"]["actor"]; - isPhysical: boolean; -} - -/** - * This object contains information about specific properties embedded document list entries for each different type. - */ -const embeddedDocumentListEntryProperties = Object.freeze({ - ActiveEffect: { - selector: ".effect", - idDataAttribute: "effectId", - }, -}); diff --git a/src/item/item.ts b/src/item/item.ts deleted file mode 100644 index 822a68e7..00000000 --- a/src/item/item.ts +++ /dev/null @@ -1,207 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -import { DS4 } from "../config"; -import { getGame } from "../helpers"; -import { createCheckRoll } from "../rolls/check-factory"; -import notifications from "../ui/notifications"; -import { AttackType, ItemType } from "./item-data-source"; -import { calculateSpellPrice } from "./type-specific-helpers/spell"; - -declare global { - interface DocumentClassConfig { - Item: typeof DS4Item; - } -} - -/** - * The Item class for DS4 - */ -export class DS4Item extends Item { - /** @override */ - prepareData(): void { - super.prepareData(); - } - - /** @override */ - prepareDerivedData(): void { - if (this.data.type === "talent") { - const data = this.data.data; - data.rank.total = data.rank.base + data.rank.mod; - } - if (this.data.type === "weapon" || this.data.type === "spell") { - this.data.data.rollable = this.data.data.equipped; - } else { - this.data.data.rollable = false; - } - if (this.data.type === "spell") { - this.data.data.price = calculateSpellPrice(this.data.data); - } - } - - isNonEquippedEuipable(): boolean { - return "equipped" in this.data.data && !this.data.data.equipped; - } - - /** - * The number of times that active effect changes originating from this item should be applied. - */ - get activeEffectFactor(): number | undefined { - if (this.data.type === "talent") { - return this.data.data.rank.total; - } - return 1; - } - - /** - * The list of item types that are rollable. - */ - static get rollableItemTypes(): ItemType[] { - return ["weapon", "spell"]; - } - - /** - * Roll a check for an action with this item. - * @param options - Additional options to customize the roll - */ - async roll(options: { speaker?: { token?: TokenDocument; alias?: string } } = {}): Promise { - switch (this.data.type) { - case "weapon": - return this.rollWeapon(options); - case "spell": - return this.rollSpell(options); - default: - throw new Error( - getGame().i18n.format("DS4.ErrorRollingForItemTypeNotPossible", { type: this.data.type }), - ); - } - } - - protected async rollWeapon(options: { speaker?: { token?: TokenDocument; alias?: string } } = {}): Promise { - if (!(this.data.type === "weapon")) { - throw new Error( - getGame().i18n.format("DS4.ErrorWrongItemType", { - actualType: this.data.type, - expectedType: "weapon", - id: this.id, - name: this.name, - }), - ); - } - - if (!this.data.data.equipped) { - return notifications.warn( - getGame().i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { - name: this.name, - id: this.id, - type: this.data.type, - }), - ); - } - - if (!this.actor) { - throw new Error(getGame().i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); - } - - const ownerDataData = this.actor.data.data; - const weaponBonus = this.data.data.weaponBonus; - const combatValue = await this.getCombatValueKeyForAttackType(this.data.data.attackType); - const checkTargetNumber = ownerDataData.combatValues[combatValue].total + weaponBonus; - - const speaker = ChatMessage.getSpeaker({ actor: this.actor, ...options.speaker }); - await createCheckRoll(checkTargetNumber, { - rollMode: getGame().settings.get("core", "rollMode"), - maximumCoupResult: ownerDataData.rolling.maximumCoupResult, - minimumFumbleResult: ownerDataData.rolling.minimumFumbleResult, - flavor: "DS4.ItemWeaponCheckFlavor", - flavorData: { actor: speaker.alias ?? this.actor.name, weapon: this.name }, - speaker, - }); - } - - protected async rollSpell(options: { speaker?: { token?: TokenDocument; alias?: string } } = {}): Promise { - if (!(this.data.type === "spell")) { - throw new Error( - getGame().i18n.format("DS4.ErrorWrongItemType", { - actualType: this.data.type, - expectedType: "spell", - id: this.id, - name: this.name, - }), - ); - } - - if (!this.data.data.equipped) { - return notifications.warn( - getGame().i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { - name: this.name, - id: this.id, - type: this.data.type, - }), - ); - } - - if (!this.actor) { - throw new Error(getGame().i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); - } - - const ownerDataData = this.actor.data.data; - const spellBonus = Number.isNumeric(this.data.data.bonus) ? parseInt(this.data.data.bonus) : undefined; - if (spellBonus === undefined) { - notifications.info( - getGame().i18n.format("DS4.InfoManuallyEnterSpellBonus", { - name: this.name, - spellBonus: this.data.data.bonus, - }), - ); - } - const spellType = this.data.data.spellType; - const checkTargetNumber = ownerDataData.combatValues[spellType].total + (spellBonus ?? 0); - - const speaker = ChatMessage.getSpeaker({ actor: this.actor, ...options.speaker }); - await createCheckRoll(checkTargetNumber, { - rollMode: getGame().settings.get("core", "rollMode"), - maximumCoupResult: ownerDataData.rolling.maximumCoupResult, - minimumFumbleResult: ownerDataData.rolling.minimumFumbleResult, - flavor: "DS4.ItemSpellCheckFlavor", - flavorData: { actor: speaker.alias ?? this.actor.name, spell: this.name }, - speaker, - }); - } - - protected async getCombatValueKeyForAttackType(attackType: AttackType): Promise<"meleeAttack" | "rangedAttack"> { - if (attackType === "meleeRanged") { - const { melee, ranged } = { ...DS4.i18n.attackTypes }; - const identifier = "attack-type-selection"; - return Dialog.prompt({ - title: getGame().i18n.localize("DS4.DialogAttackTypeSelection"), - content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { - selects: [ - { - label: getGame().i18n.localize("DS4.AttackType"), - identifier, - options: { melee, ranged }, - }, - ], - }), - label: getGame().i18n.localize("DS4.GenericOkButton"), - callback: (html) => { - const selectedAttackType = html.find(`#${identifier}`).val(); - if (selectedAttackType !== "melee" && selectedAttackType !== "ranged") { - throw new Error( - getGame().i18n.format("DS4.ErrorUnexpectedAttackType", { - actualType: selectedAttackType, - expectedTypes: "'melee', 'ranged'", - }), - ); - } - return `${selectedAttackType}Attack` as const; - }, - }); - } else { - return `${attackType}Attack` as const; - } - } -} diff --git a/src/item/type-specific-helpers/spell.ts b/src/item/type-specific-helpers/spell.ts deleted file mode 100644 index e8820b43..00000000 --- a/src/item/type-specific-helpers/spell.ts +++ /dev/null @@ -1,53 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { hoursPerDay, minutesPerHour, secondsPerMinute, secondsPerRound } from "../../common/time-helpers"; -import { DS4SpellDataSourceData, TemporalUnit, UnitData } from "../item-data-source"; - -export function calculateSpellPrice(data: DS4SpellDataSourceData): number | null { - const spellPriceFactor = calculateSpellPriceFactor(data.cooldownDuration); - const baseSpellPrices = [ - data.minimumLevels.healer !== null ? 10 + (data.minimumLevels.healer - 1) * 35 : null, - data.minimumLevels.wizard !== null ? 10 + (data.minimumLevels.wizard - 1) * 50 : null, - data.minimumLevels.sorcerer !== null ? 10 + (data.minimumLevels.sorcerer - 1) * 65 : null, - ].filter((baseSpellPrice: number | null): baseSpellPrice is number => baseSpellPrice !== null); - const baseSpellPrice = Math.min(...baseSpellPrices); - return baseSpellPrice === Infinity ? null : baseSpellPrice * spellPriceFactor; -} - -function calculateSpellPriceFactor(temporalData: UnitData): number { - let days: number; - if (Number.isNumeric(temporalData.value)) { - switch (temporalData.unit) { - case "days": { - days = temporalData.value; - break; - } - case "hours": { - days = temporalData.value / hoursPerDay; - break; - } - case "minutes": { - days = temporalData.value / (hoursPerDay * minutesPerHour); - break; - } - case "rounds": { - days = (temporalData.value * secondsPerRound) / (hoursPerDay * minutesPerHour * secondsPerMinute); - break; - } - } - } else { - switch (temporalData.unit) { - case "days": { - days = 2; - break; - } - default: { - days = 0; - break; - } - } - } - return Math.clamped(Math.floor(days), 0, 2) + 1; -} diff --git a/src/logger.ts b/src/logger.ts deleted file mode 100644 index c5c9a561..00000000 --- a/src/logger.ts +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -const loggingContext = "DS4"; -const loggingSeparator = "|"; - -type LogLevel = "debug" | "info" | "warning" | "error"; -type LoggingFunction = (...data: unknown[]) => void; - -const getLoggingFunction = (type: LogLevel = "info"): LoggingFunction => { - const log = { debug: console.debug, info: console.info, warning: console.warn, error: console.error }[type]; - return (...data: unknown[]) => log(loggingContext, loggingSeparator, ...data); -}; - -const logger = Object.freeze({ - debug: getLoggingFunction("debug"), - info: getLoggingFunction("info"), - warn: getLoggingFunction("warning"), - error: getLoggingFunction("error"), - getLoggingFunction, -}); - -export default logger; diff --git a/src/macros/helpers.js b/src/macros/helpers.js new file mode 100644 index 00000000..5984de49 --- /dev/null +++ b/src/macros/helpers.js @@ -0,0 +1,22 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getCanvas, getGame } from "../utils/utils"; + +/** + * Gets the currently active actor and token based on how {@link ChatMessage} + * determines the current speaker. + * @returns {{actor?: import("../documents/actor/actor").DS4Actor, token?: TokenDocument}} The currently active actor and token. + */ +export function getActiveActorAndToken() { + const speaker = ChatMessage.getSpeaker(); + + const speakerToken = speaker.token ? getCanvas().tokens?.get(speaker.token)?.document : undefined; + if (speakerToken) { + return { actor: speakerToken.actor ?? undefined, token: speakerToken }; + } + + const speakerActor = speaker.actor ? getGame().actors?.get(speaker.actor) : undefined; + return { actor: speakerActor }; +} diff --git a/src/macros/helpers.ts b/src/macros/helpers.ts deleted file mode 100644 index 941ee947..00000000 --- a/src/macros/helpers.ts +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Actor } from "../actor/actor"; -import { getCanvas, getGame } from "../helpers"; - -/** - * Gets the currently active actor and token based on how {@link ChatMessage} - * determines the current speaker. - * @returns The currently active {@link DS4Actor} and {@link TokenDocument}. - */ -export function getActiveActorAndToken(): { actor?: DS4Actor; token?: TokenDocument } { - const speaker = ChatMessage.getSpeaker(); - - const speakerToken = speaker.token ? getCanvas().tokens?.get(speaker.token)?.document : undefined; - if (speakerToken) { - return { actor: speakerToken.actor ?? undefined, token: speakerToken }; - } - - const speakerActor = speaker.actor ? getGame().actors?.get(speaker.actor) : undefined; - return { actor: speakerActor }; -} diff --git a/src/macros/macros.ts b/src/macros/macros.ts index cf5f2ffb..867edc91 100644 --- a/src/macros/macros.ts +++ b/src/macros/macros.ts @@ -7,7 +7,7 @@ import { rollGenericCheck } from "./roll-generic-check"; import { rollItem } from "./roll-item"; export const macros = { - rollCheck, - rollGenericCheck, - rollItem, + rollCheck, + rollGenericCheck, + rollItem, }; diff --git a/src/macros/roll-check.js b/src/macros/roll-check.js new file mode 100644 index 00000000..6218ab8e --- /dev/null +++ b/src/macros/roll-check.js @@ -0,0 +1,62 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../config"; +import { isCheck } from "../documents/actor/actor-data-properties-base"; +import { notifications } from "../ui/notifications"; +import { getGame } from "../utils/utils"; +import { getActiveActorAndToken } from "./helpers"; + +/** + * Creates a macro from a check drop. + * Get an existing roll check macro if one exists, otherwise create a new one. + * @param {object} data The check drop data + * @param {string} slot The hotbar slot to use + * @returns {Promise} A promise that resolves when the macro has been created. + */ +export async function createRollCheckMacro(data, slot) { + if (!("data" in data) || typeof data.data !== "string" || !isCheck(data.data)) { + return notifications.warn(getGame().i18n.localize("DS4.WarningInvalidCheckDropped")); + } + const macro = await getOrCreateRollCheckMacro(data.data); + await getGame().user?.assignHotbarMacro(macro ?? null, slot); +} + +/** + * @param {import("../documents/actor/actor-data-properties-base").Check} check The name of the check to perform + * @returns {Promise} A promise that resolves to the created macro + */ +async function getOrCreateRollCheckMacro(check) { + const command = `game.ds4.macros.rollCheck("${check}");`; + + const existingMacro = getGame().macros?.find((m) => m.name === DS4.i18n.checks[check] && m.command === command); + if (existingMacro) { + return existingMacro; + } + + return Macro.create( + { + command, + name: DS4.i18n.checks[check], + type: "script", + img: DS4.icons.checks[check], + flags: { "ds4.checkMacro": true }, + }, + { renderSheet: false }, + ); +} + +/** + * Executes the roll check macro for the given check. + * @param {import("../documents/actor/actor-data-properties-base").Check} check The name of the check to perform + * @returns {Promise} A promise that resolves once the check has been performed. + */ +export async function rollCheck(check) { + const { actor, token } = getActiveActorAndToken(); + if (!actor) { + return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); + } + + return actor.rollCheck(check, { speaker: { token } }).catch((e) => notifications.error(e, { log: true })); +} diff --git a/src/macros/roll-check.ts b/src/macros/roll-check.ts deleted file mode 100644 index 327541af..00000000 --- a/src/macros/roll-check.ts +++ /dev/null @@ -1,54 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { Check } from "../actor/actor-data-properties"; -import { DS4 } from "../config"; -import { getGame } from "../helpers"; -import notifications from "../ui/notifications"; -import { getActiveActorAndToken } from "./helpers"; - -/** - * Creates a macro from a check drop. - * Get an existing roll check macro if one exists, otherwise create a new one. - * @param check - The name of the check to perform. - * @param slot - The hotbar slot to use. - */ -export async function createRollCheckMacro(check: Check, slot: string): Promise { - const macro = await getOrCreateRollCheckMacro(check); - getGame().user?.assignHotbarMacro(macro ?? null, slot); -} - -async function getOrCreateRollCheckMacro(check: Check): Promise { - const command = `game.ds4.macros.rollCheck("${check}");`; - - const existingMacro = getGame().macros?.find( - (m) => m.name === DS4.i18n.checks[check] && m.data.command === command, - ); - if (existingMacro) { - return existingMacro; - } - - return Macro.create( - { - command, - name: DS4.i18n.checks[check], - type: "script", - img: DS4.icons.checks[check], - flags: { "ds4.checkMacro": true }, - }, - { renderSheet: false }, - ); -} - -/** - * Executes the roll check macro for the given check. - */ -export async function rollCheck(check: Check): Promise { - const { actor, token } = getActiveActorAndToken(); - if (!actor) { - return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); - } - - return actor.rollCheck(check, { speaker: { token } }).catch((e) => notifications.error(e, { log: true })); -} diff --git a/src/macros/roll-generic-check.ts b/src/macros/roll-generic-check.ts index a0108267..4efa9a75 100644 --- a/src/macros/roll-generic-check.ts +++ b/src/macros/roll-generic-check.ts @@ -2,18 +2,18 @@ // // SPDX-License-Identifier: MIT -import { getGame } from "../helpers"; -import notifications from "../ui/notifications"; +import { notifications } from "../ui/notifications"; +import { getGame } from "../utils/utils"; import { getActiveActorAndToken } from "./helpers"; /** * Executes the roll generic check macro. */ export async function rollGenericCheck(): Promise { - const { actor, token } = getActiveActorAndToken(); - if (!actor) { - return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); - } + const { actor, token } = getActiveActorAndToken(); + if (!actor) { + return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); + } - return actor.rollGenericCheck({ speaker: { token } }).catch((e) => notifications.error(e, { log: true })); + return actor.rollGenericCheck({ speaker: { token } }).catch((e) => notifications.error(e, { log: true })); } diff --git a/src/macros/roll-item.js b/src/macros/roll-item.js new file mode 100644 index 00000000..c63dca90 --- /dev/null +++ b/src/macros/roll-item.js @@ -0,0 +1,83 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../documents/item/item"; +import { notifications } from "../ui/notifications"; +import { getGame } from "../utils/utils"; +import { getActiveActorAndToken } from "./helpers"; + +/** + * Create a macro from an item drop. + * Get an existing roll item macro if one exists, otherwise create a new one. + * @param {object} data The item drop data + * @param {string} slot The hotbar slot to use + * @returns {Promise} A promise that resolves once the macro has been created. + */ +export async function createRollItemMacro(data, slot) { + const item = await Item.implementation.fromDropData(data); + if (!item.parent) { + return notifications.warn(getGame().i18n.localize("DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems")); + } + if (!DS4Item.rollableItemTypes.includes(item.type)) { + return notifications.warn( + getGame().i18n.format("DS4.WarningItemIsNotRollable", { + name: item.name, + id: item.id, + type: item.type, + }), + ); + } + + const macro = await getOrCreateRollItemMacro(item); + await getGame().user?.assignHotbarMacro(macro ?? null, slot); +} + +/** + * @param {object} item The item + * @returns {Promise} A promise that resolves to the created macro + */ +async function getOrCreateRollItemMacro(item) { + const command = `game.ds4.macros.rollItem("${item.id}");`; + + const existingMacro = getGame().macros?.find((m) => m.name === item.name && m.command === command); + if (existingMacro) { + return existingMacro; + } + + return Macro.create( + { + command, + name: item.name, + type: "script", + img: item.img, + flags: { "ds4.itemMacro": true }, + }, + { renderSheet: false }, + ); +} + +/** + * Executes the roll item macro for the item associated to the given `itemId`. + * @param {string} itemId The id of the item to roll + * @returns {Promise} A promise that resolves once the item has been rolled. + */ +export async function rollItem(itemId) { + const { actor, token } = getActiveActorAndToken(); + if (!actor) { + return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollItemMacro")); + } + + const item = actor.items.get(itemId); + if (!item) { + return notifications.warn( + getGame().i18n.format("DS4.WarningControlledActorDoesNotHaveItem", { + actorName: actor.name, + actorId: actor.id, + itemId, + }), + ); + } + + return item.roll({ speaker: { token } }).catch((e) => notifications.error(e, { log: true })); +} diff --git a/src/macros/roll-item.ts b/src/macros/roll-item.ts deleted file mode 100644 index b78c908a..00000000 --- a/src/macros/roll-item.ts +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../helpers"; -import notifications from "../ui/notifications"; -import { getActiveActorAndToken } from "./helpers"; - -/** - * Creates a macro from an item drop. - * Get an existing roll item macro if one exists, otherwise create a new one. - * @param itemData - The item data - * @param slot - The hotbar slot to use - */ -export async function createRollItemMacro(itemData: foundry.data.ItemData["_source"], slot: string): Promise { - const macro = await getOrCreateRollItemMacro(itemData); - getGame().user?.assignHotbarMacro(macro ?? null, slot); -} - -async function getOrCreateRollItemMacro(itemData: foundry.data.ItemData["_source"]): Promise { - const command = `game.ds4.macros.rollItem("${itemData._id}");`; - - const existingMacro = getGame().macros?.find((m) => m.name === itemData.name && m.data.command === command); - if (existingMacro) { - return existingMacro; - } - - return Macro.create( - { - command, - name: itemData.name, - type: "script", - img: itemData.img, - flags: { "ds4.itemMacro": true }, - }, - { renderSheet: false }, - ); -} - -/** - * Executes the roll item macro for the item associated to the given `itemId`. - */ -export async function rollItem(itemId: string): Promise { - const { actor, token } = getActiveActorAndToken(); - if (!actor) { - return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollItemMacro")); - } - - const item = actor.items.get(itemId); - if (!item) { - return notifications.warn( - getGame().i18n.format("DS4.WarningControlledActorDoesNotHaveItem", { - actorName: actor.name, - actorId: actor.id, - itemId, - }), - ); - } - - return item.roll({ speaker: { token } }).catch((e) => notifications.error(e, { log: true })); -} diff --git a/src/migration/001.js b/src/migration/001.js new file mode 100644 index 00000000..822dd3d0 --- /dev/null +++ b/src/migration/001.js @@ -0,0 +1,44 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getSceneMigrator, migrateCollection, migrateCompendiums, getCompendiumMigrator } from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return actorsResult === "error" || scenesResult === "error" || compendiumsResult === "error" ? "error" : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateActor(actor) { + await actor.update({ + system: { + combatValues: [ + "hitPoints", + "defense", + "initiative", + "movement", + "meleeAttack", + "rangedAttack", + "spellcasting", + "targetedSpellcasting", + ].reduce((acc, curr) => { + acc[curr] = { "-=base": null }; + return acc; + }, {}), + }, + }); +} + +const migrateScene = getSceneMigrator(migrateActor); + +const migrateCompendium = getCompendiumMigrator({ migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/002.js b/src/migration/002.js new file mode 100644 index 00000000..41b04128 --- /dev/null +++ b/src/migration/002.js @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateItem(item) { + if (item.type === "equipment" || item.type === "trinket") { + await item.update({ type: item.type === "equipment" ? "loot" : "equipment" }); + } +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator( + { migrateItem, migrateActor, migrateScene }, + { migrateToTemplateEarly: false }, +); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/003.js b/src/migration/003.js new file mode 100644 index 00000000..a5ffda16 --- /dev/null +++ b/src/migration/003.js @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import("./migrationHelpers.js").Migrator} */ +async function migrateItem(item) { + if (item.type === "loot") { + await item.update({ system: { "-=equipped": null } }); + } +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator( + { migrateItem, migrateActor, migrateScene }, + { migrateToTemplateEarly: false }, +); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/004.js b/src/migration/004.js new file mode 100644 index 00000000..23061527 --- /dev/null +++ b/src/migration/004.js @@ -0,0 +1,51 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateItem(item) { + if (item.type === "spell") { + const cooldownDurationUnit = item.system?.cooldownDuration.unit; + await item.update({ + system: { + "-=scrollPrice": null, + minimumLevels: { healer: null, wizard: null, sorcerer: null }, + cooldownDuration: { + unit: cooldownDurationUnit === "custom" ? "rounds" : cooldownDurationUnit, + }, + }, + }); + } +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/005.js b/src/migration/005.js new file mode 100644 index 00000000..fdbbb65b --- /dev/null +++ b/src/migration/005.js @@ -0,0 +1,124 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +const secondsPerRound = 5; +const secondsPerMinute = 60; +const roundsPerMinute = secondsPerMinute / secondsPerRound; +const minutesPerHour = 60; +const roundsPerHour = minutesPerHour / roundsPerMinute; +const hoursPerDay = 24; +const roundsPerDay = hoursPerDay / roundsPerHour; +const secondsPerDay = secondsPerMinute * minutesPerHour * hoursPerDay; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateItem(item) { + if (item.type === "spell") { + const cooldownDurationUnit = item.system?.cooldownDuration.unit; + const cooldownDurationValue = item.system?.cooldownDuration.value; + const cooldownDuration = migrateCooldownDuration(cooldownDurationValue, cooldownDurationUnit); + await item.update({ system: { cooldownDuration } }); + } +} + +function migrateCooldownDuration(cooldownDurationValue = "", cooldownDurationUnit = "") { + if (Number.isNumeric(cooldownDurationValue)) { + const value = Number.fromString(cooldownDurationValue); + const rounds = getRounds(cooldownDurationUnit, value); + + if (rounds * secondsPerRound > secondsPerDay) { + return "d20d"; + } else if (rounds > 100) { + return "1d"; + } else if (rounds > 10) { + return "100r"; + } else if (rounds > 5) { + return "10r"; + } else if (rounds > 2) { + return "5r"; + } else if (rounds > 1) { + return "2r"; + } else if (rounds > 0) { + return "1r"; + } else { + return "0r"; + } + } else { + // if the value is not numeric, we can only make a best guess + switch (cooldownDurationUnit) { + case "rounds": { + return "10r"; + } + case "minutes": { + return "100r"; + } + case "hours": { + return "1d"; + } + case "days": { + return "d20d"; + } + default: { + return "0r"; + } + } + } +} + +/** + * Given a unit and a value, return the correct number of rounds + * @param {string} unit The unit + * @param {number} value The value + * @returns {number} The number of rounds + */ +function getRounds(unit, value) { + switch (unit) { + case "rounds": { + return value; + } + case "minutes": { + return value * roundsPerMinute; + } + case "hours": { + return value * roundsPerHour; + } + case "days": { + return value * roundsPerDay; + } + default: { + return 0; + } + } +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/006.js b/src/migration/006.js new file mode 100644 index 00000000..666c5d66 --- /dev/null +++ b/src/migration/006.js @@ -0,0 +1,128 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateItem(item) { + if (item.type === "spell") { + const spellCategory = item.system?.spellCategory; + const spellGroups = migrateSpellCategory(spellCategory); + const bonus = item.system?.bonus; + const spellModifier = migrateBonus(bonus); + await item.update({ + system: { + spellGroups, + "-=spellCategory": null, + spellModifier, + "-=bonus": null, + }, + }); + } +} + +/** + * Migrate a spell category to spell groups. + * @param {string | undefined} spellCategory The spell category + * @returns {import("../documents/item/spell/spell-data-source").DS4SpellDataSourceData["spellGroups"]} The spell groups for the given category + */ +function migrateSpellCategory(spellCategory) { + const spellGroups = { + lightning: false, + earth: false, + water: false, + ice: false, + fire: false, + healing: false, + light: false, + air: false, + transport: false, + damage: false, + shadow: false, + protection: false, + mindAffecting: false, + demonology: false, + necromancy: false, + transmutation: false, + area: false, + }; + switch (spellCategory) { + case "healing": { + spellGroups.healing = true; + break; + } + case "fire": { + spellGroups.fire = true; + break; + } + case "ice": { + spellGroups.ice = true; + break; + } + case "light": { + spellGroups.light = true; + break; + } + case "darkness": { + spellGroups.shadow = true; + break; + } + case "mindAffecting": { + spellGroups.mindAffecting = true; + break; + } + case "electricity": { + spellGroups.lightning = true; + break; + } + } + return spellGroups; +} + +/** + * Migrate a spell bonus to a spell modifier. + * @param {string | undefined} bonus The spell bonus + * @returns {import("../documents/item/spell/spell-data-source").DS4SpellDataSourceData["spellModifier"]} The spell modifier + */ +function migrateBonus(bonus) { + const spellModifier = { numerical: 0, complex: "" }; + if (bonus) { + if (Number.isNumeric(bonus)) { + spellModifier.numerical = +bonus; + } else { + spellModifier.complex = bonus; + } + } + return spellModifier; +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/007.js b/src/migration/007.js new file mode 100644 index 00000000..f5d86fad --- /dev/null +++ b/src/migration/007.js @@ -0,0 +1,42 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateItem(item) { + if (item.type === "spell") { + await item.update({ system: { allowsDefense: false } }); + } +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/008.js b/src/migration/008.js new file mode 100644 index 00000000..4fb67166 --- /dev/null +++ b/src/migration/008.js @@ -0,0 +1,66 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, + getItemMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateActiveEffect(activeEffect) { + const data = activeEffect.toObject(); + let hasUpdates = false; + + if ("changes" in data) { + for (const change of data.changes) { + const newValue = change.value.replaceAll(/@data\./g, "@system."); + if (newValue !== change.value) { + hasUpdates = true; + change.value = newValue; + } + } + } + + /** @type {string | undefined} */ + const condition = data.flags?.ds4?.itemEffectConfig?.condition; + if (condition !== undefined) { + const newCondition = condition.replaceAll(/(@actor|@item|@effect)\.data/g, "$1.system"); + if (newCondition !== condition) { + hasUpdates = true; + data.flags.ds4.itemEffectConfig.condition = newCondition; + } + } + if (hasUpdates) { + await activeEffect.update(data); + } +} + +const migrateItem = getItemMigrator(migrateActiveEffect); +const migrateActor = getActorMigrator(migrateItem, migrateActiveEffect); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/009.js b/src/migration/009.js new file mode 100644 index 00000000..0c97c67b --- /dev/null +++ b/src/migration/009.js @@ -0,0 +1,41 @@ +// SPDX-FileCopyrightText: 2023 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return actorsResult === "error" || scenesResult === "error" || compendiumsResult === "error" ? "error" : "success"; +} + +const itemIdRegex = /Item\.([a-zA-Z0-9]+)/; + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateActiveEffect(activeEffect) { + if (activeEffect.parent instanceof Actor) { + const itemId = activeEffect.origin?.match(itemIdRegex)?.[1]; + if (activeEffect.parent.items.has(itemId)) { + await activeEffect.delete(); + } + } +} + +const migrateActor = getActorMigrator(undefined, migrateActiveEffect); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/migration.js b/src/migration/migration.js new file mode 100644 index 00000000..797ac457 --- /dev/null +++ b/src/migration/migration.js @@ -0,0 +1,215 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { notifications } from "../ui/notifications.js"; +import { logger } from "../utils/logger.js"; +import { getGame } from "../utils/utils.js"; +import { migration as migration001 } from "./001.js"; +import { migration as migration002 } from "./002.js"; +import { migration as migration003 } from "./003.js"; +import { migration as migration004 } from "./004.js"; +import { migration as migration005 } from "./005.js"; +import { migration as migration006 } from "./006.js"; +import { migration as migration007 } from "./007.js"; +import { migration as migration008 } from "./008.js"; +import { migration as migration009 } from "./009.js"; + +/** + * Perform migrations. + * @returns {Promise} A promise that resolves once all migrations have completed + */ +async function migrate() { + if (!getGame().user?.isGM) { + return; + } + + const oldMigrationVersion = getCurrentMigrationVersion(); + + const targetMigrationVersion = migrations.length; + + if (isFirstWorldStart(oldMigrationVersion)) { + getGame().settings.set("ds4", "systemMigrationVersion", targetMigrationVersion); + return; + } + + return migrateFromTo(oldMigrationVersion, targetMigrationVersion); +} + +/** + * Migrate from a given version to another version. + * @param {number} oldMigrationVersion The old migration version + * @param {number} targetMigrationVersion The migration version to migrate to + * @returns {Promise} A promise the resolves once the migration is complete + */ +async function migrateFromTo(oldMigrationVersion, targetMigrationVersion) { + if (!getGame().user?.isGM) { + return; + } + + const migrationsToExecute = migrations.slice(oldMigrationVersion, targetMigrationVersion); + + if (migrationsToExecute.length > 0) { + notifications.info( + getGame().i18n.format("DS4.InfoSystemUpdateStart", { + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + + /** @type {Result} */ + let result = "success"; + for (const [i, { migrate }] of migrationsToExecute.entries()) { + const currentMigrationVersion = oldMigrationVersion + i + 1; + logger.info("executing migration script", currentMigrationVersion); + try { + const r = await migrate(); + getGame().settings.set("ds4", "systemMigrationVersion", currentMigrationVersion); + if (r === "error") { + result = "error"; + } + } catch (err) { + notifications.error( + getGame().i18n.format("DS4.ErrorDuringMigration", { + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + migrationVersion: currentMigrationVersion, + }), + { permanent: true }, + ); + logger.error("Failed ds4 system migration:", err); + return; + } + } + + if (result === "success") { + notifications.info( + getGame().i18n.format("DS4.InfoSystemUpdateCompletedSuccessfully", { + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + } else { + notifications.warn( + getGame().i18n.format("DS4.WarningSystemUpdateCompletedWithErrors", { + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + } + } +} + +/** + * Migrate a compendium pack from a given version to another version. + * @param {CompendiumCollection} pack The compendium pack to migrate + * @param {number} oldMigrationVersion The old version number + * @param {number} targetMigrationVersion The target version number + * @returns {Promise} A promise that resolves once the migration is complete + */ +async function migrateCompendiumFromTo(pack, oldMigrationVersion, targetMigrationVersion) { + if (!getGame().user?.isGM) { + return; + } + + const migrationsToExecute = migrations.slice(oldMigrationVersion, targetMigrationVersion); + + if (migrationsToExecute.length > 0) { + notifications.info( + getGame().i18n.format("DS4.InfoCompendiumMigrationStart", { + pack: pack.title, + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + + for (const [i, { migrateCompendium }] of migrationsToExecute.entries()) { + const currentMigrationVersion = oldMigrationVersion + i + 1; + logger.info("executing compendium migration ", currentMigrationVersion); + try { + await migrateCompendium(pack); + } catch (err) { + notifications.error( + getGame().i18n.format("DS4.ErrorDuringCompendiumMigration", { + pack: pack.title, + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + migrationVersion: currentMigrationVersion, + }), + { permanent: true }, + ); + logger.error("Failed ds4 compendium migration:", err); + return; + } + } + + notifications.info( + getGame().i18n.format("DS4.InfoCompendiumMigrationCompleted", { + pack: pack.title, + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + } +} + +/** + * Get the current migration version. + * @returns {number} The current migration version + */ +function getCurrentMigrationVersion() { + return getGame().settings.get("ds4", "systemMigrationVersion"); +} + +/** + * Get the target migration version. + * @returns {number} The target migration version + */ +function getTargetMigrationVersion() { + return migrations.length; +} + +/** @typedef {"success" | "error"} Result */ + +/** + * @typedef {object} Migration + * @property {() => Promise} migrate + * @property {import("./migrationHelpers").CompendiumMigrator} migrateCompendium + */ + +/** + * @type {Migration[]} + */ +const migrations = [ + migration001, + migration002, + migration003, + migration004, + migration005, + migration006, + migration007, + migration008, + migration009, +]; + +/** + * DOes the migration version indicate the world is being started for the first time? + * @param {number} migrationVersion A migration version + * @returns {boolean} Whether the migration version indicates it is the first start of the world + */ +function isFirstWorldStart(migrationVersion) { + return migrationVersion < 0; +} + +export const migration = { + migrate, + migrateFromTo, + getCurrentMigrationVersion, + getTargetMigrationVersion, + migrateCompendiumFromTo, +}; diff --git a/src/migration/migrationHelpers.js b/src/migration/migrationHelpers.js new file mode 100644 index 00000000..48399db1 --- /dev/null +++ b/src/migration/migrationHelpers.js @@ -0,0 +1,177 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { logger } from "../utils/logger.js"; +import { getGame } from "../utils/utils.js"; + +/** + * @template T + * @typedef {(document: T) => Promise} Migrator + */ + +/** + * Migrate a collection. + * @template T + * @param {WorldCollection} collection + * @param {Migrator} migrateDocument + * @returns {Promise} A promise that resolves once the migration is complete + */ +export async function migrateCollection(collection, migrateDocument) { + /** @type {import("./migration.js").Result} */ + let result = "success"; + const { documentName } = collection.constructor; + for (const document of collection) { + logger.info(`Migrating ${documentName} document ${document.name} (${document.id})`); + try { + await migrateDocument(document); + } catch (err) { + logger.error( + `Error during migration of ${documentName} document ${document.name} (${document.id}), continuing anyways.`, + err, + ); + result = "error"; + } + } + return result; +} + +/** + * @param {Migrator} [migrateActiveEffect] + * @returns {Migrator} + */ +export function getItemMigrator(migrateActiveEffect) { + /** + * @param {Item} item + */ + return async (item) => { + if (migrateActiveEffect) { + for (const effect of item.effects) { + await migrateActiveEffect(effect); + } + } + }; +} + +/** + * @param {Migrator} [migrateItem] + * @param {Migrator} [migrateActiveEffect] + * @returns {Migrator} + */ +export function getActorMigrator(migrateItem, migrateActiveEffect) { + /** + * @param {Actor} actor + */ + return async (actor) => { + if (migrateItem) { + for (const item of actor.items) { + await migrateItem(item); + } + } + if (migrateActiveEffect) { + for (const effect of actor.effects) { + await migrateActiveEffect(effect); + } + } + }; +} + +/** + * @param {Migrator} [migrateActor] + * @returns {Migrator} + */ +export function getSceneMigrator(migrateActor) { + /** + * @param {Scene} scene + */ + return async (scene) => { + if (migrateActor) { + for (const token of scene.tokens) { + if (!token.actorLink && token.actor) { + await migrateActor(token.actor); + } + } + } + }; +} + +/** @typedef {(pack: CompendiumCollection) => Promise} CompendiumMigrator */ + +/** + * Migrate world compendium packs. + * @param {CompendiumMigrator} migrateCompendium A function for migrating a single compendium pack + * @returns {Promise} A promise that resolves once the migration is complete + */ +export async function migrateCompendiums(migrateCompendium) { + /** @type {import("./migration.js").Result} */ + let result = "success"; + for (const compendium of getGame().packs ?? []) { + if (compendium.metadata.package !== "world") continue; + if (!["Actor", "Item", "Scene"].includes(compendium.metadata.type)) continue; + const r = await migrateCompendium(compendium); + if (r === "error") { + result = "error"; + } + } + return result; +} + +/** + * @typedef {object} Migrators + * @property {Migrator} [migrateItem] + * @property {Migrator} [migrateActor] + * @property {Migrator} [migrateScene] + */ + +/** + * Get a compendium migrator for the given migrators. + * @param {Migrators} [migrators={}] The functions to use for getting update data + * @param {{migrateToTemplateEarly?: boolean}} [options={}] Additional options for the compendium migrator + * @returns {CompendiumMigrator} The resulting compendium migrator + */ +export function getCompendiumMigrator( + { migrateItem, migrateActor, migrateScene } = {}, + { migrateToTemplateEarly = true } = {}, +) { + return async (pack) => { + /** @type {import("./migration.js").Result} */ + let result = "success"; + + const type = pack.metadata.type; + const migrateDocument = { + Item: migrateItem, + Actor: migrateActor, + Scene: migrateScene, + }[type]; + + if (migrateDocument) { + const wasLocked = pack.locked; + await pack.configure({ locked: false }); + if (migrateToTemplateEarly) { + await pack.migrate(); + } + + const documents = await pack.getDocuments(); + + for (const doc of documents) { + try { + logger.info(`Migrating document ${doc.name} (${doc.id}) in compendium ${pack.collection}`); + await migrateDocument(doc); + } catch (err) { + logger.error( + `Error during migration of document ${doc.name} (${doc.id}) in compendium ${pack.collection}, continuing anyways.`, + err, + ); + result = "error"; + } + } + + if (!migrateToTemplateEarly) { + await pack.migrate(); + } + await pack.configure({ locked: wasLocked }); + } + + return result; + }; +} diff --git a/src/migrations.ts b/src/migrations.ts deleted file mode 100644 index 63d97697..00000000 --- a/src/migrations.ts +++ /dev/null @@ -1,90 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "./helpers"; -import logger from "./logger"; -import { migrate as migrate001 } from "./migrations/001"; -import { migrate as migrate002 } from "./migrations/002"; -import { migrate as migrate003 } from "./migrations/003"; -import { migrate as migrate004 } from "./migrations/004"; -import notifications from "./ui/notifications"; - -async function migrate(): Promise { - if (!getGame().user?.isGM) { - return; - } - - const oldMigrationVersion = getGame().settings.get("ds4", "systemMigrationVersion"); - - const targetMigrationVersion = migrations.length; - - if (isFirstWorldStart(oldMigrationVersion)) { - getGame().settings.set("ds4", "systemMigrationVersion", targetMigrationVersion); - return; - } - - return migrateFromTo(oldMigrationVersion, targetMigrationVersion); -} - -async function migrateFromTo(oldMigrationVersion: number, targetMigrationVersion: number): Promise { - if (!getGame().user?.isGM) { - return; - } - - const migrationsToExecute = migrations.slice(oldMigrationVersion, targetMigrationVersion); - - if (migrationsToExecute.length > 0) { - notifications.info( - getGame().i18n.format("DS4.InfoSystemUpdateStart", { - currentVersion: oldMigrationVersion, - targetVersion: targetMigrationVersion, - }), - { permanent: true }, - ); - - for (const [i, migration] of migrationsToExecute.entries()) { - const currentMigrationVersion = oldMigrationVersion + i + 1; - logger.info("executing migration script ", currentMigrationVersion); - try { - await migration(); - getGame().settings.set("ds4", "systemMigrationVersion", currentMigrationVersion); - } catch (err) { - notifications.error( - getGame().i18n.format("DS4.ErrorDuringMigration", { - currentVersion: oldMigrationVersion, - targetVersion: targetMigrationVersion, - migrationVersion: currentMigrationVersion, - }), - { permanent: true }, - ); - logger.error("Failed ds4 system migration:", err); - return; - } - } - - notifications.info( - getGame().i18n.format("DS4.InfoSystemUpdateCompleted", { - currentVersion: oldMigrationVersion, - targetVersion: targetMigrationVersion, - }), - { permanent: true }, - ); - } -} - -function getTargetMigrationVersion(): number { - return migrations.length; -} - -const migrations: Array<() => Promise> = [migrate001, migrate002, migrate003, migrate004]; - -function isFirstWorldStart(migrationVersion: number): boolean { - return migrationVersion < 0; -} - -export const migration = { - migrate: migrate, - migrateFromTo: migrateFromTo, - getTargetMigrationVersion: getTargetMigrationVersion, -}; diff --git a/src/migrations/001.ts b/src/migrations/001.ts deleted file mode 100644 index c8e2f7b3..00000000 --- a/src/migrations/001.ts +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getCompendiumMigrator, - getSceneUpdateDataGetter, - migrateActors, - migrateCompendiums, - migrateScenes, -} from "./migrationHelpers"; - -export async function migrate(): Promise { - await migrateActors(getActorUpdateData); - await migrateScenes(getSceneUpdateData); - await migrateCompendiums(migrateCompendium); -} - -function getActorUpdateData(): Record { - const updateData = { - data: { - combatValues: [ - "hitPoints", - "defense", - "initiative", - "movement", - "meleeAttack", - "rangedAttack", - "spellcasting", - "targetedSpellcasting", - ].reduce((acc: Partial>, curr) => { - acc[curr] = { "-=base": null }; - return acc; - }, {}), - }, - }; - return updateData; -} - -const getSceneUpdateData = getSceneUpdateDataGetter(getActorUpdateData); -const migrateCompendium = getCompendiumMigrator({ getActorUpdateData, getSceneUpdateData }); diff --git a/src/migrations/002.ts b/src/migrations/002.ts deleted file mode 100644 index 93ac4063..00000000 --- a/src/migrations/002.ts +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getActorUpdateDataGetter, - getCompendiumMigrator, - getSceneUpdateDataGetter, - migrateActors, - migrateCompendiums, - migrateItems, - migrateScenes, -} from "./migrationHelpers"; - -export async function migrate(): Promise { - await migrateItems(getItemUpdateData); - await migrateActors(getActorUpdateData); - await migrateScenes(getSceneUpdateData); - await migrateCompendiums(migrateCompendium); -} - -function getItemUpdateData( - itemData: Partial, -): DeepPartial | undefined { - if (!["equipment", "trinket"].includes(itemData.type ?? "")) return undefined; - return { type: itemData.type === "equipment" ? ("loot" as const) : ("equipment" as const) }; -} - -const getActorUpdateData = getActorUpdateDataGetter(getItemUpdateData); -const getSceneUpdateData = getSceneUpdateDataGetter(getActorUpdateData); -const migrateCompendium = getCompendiumMigrator( - { getItemUpdateData, getActorUpdateData, getSceneUpdateData }, - { migrateToTemplateEarly: false }, -); diff --git a/src/migrations/003.ts b/src/migrations/003.ts deleted file mode 100644 index 1ebc46f8..00000000 --- a/src/migrations/003.ts +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getActorUpdateDataGetter, - getCompendiumMigrator, - getSceneUpdateDataGetter, - migrateActors, - migrateCompendiums, - migrateItems, - migrateScenes, -} from "./migrationHelpers"; - -export async function migrate(): Promise { - await migrateItems(getItemUpdateData); - await migrateActors(getActorUpdateData); - await migrateScenes(getSceneUpdateData); - await migrateCompendiums(migrateCompendium); -} - -function getItemUpdateData(itemData: Partial) { - if (!["loot"].includes(itemData.type ?? "")) return undefined; - return { - data: { - "-=equipped": null, - }, - }; -} - -const getActorUpdateData = getActorUpdateDataGetter(getItemUpdateData); -const getSceneUpdateData = getSceneUpdateDataGetter(getActorUpdateData); -const migrateCompendium = getCompendiumMigrator( - { getItemUpdateData, getActorUpdateData }, - { migrateToTemplateEarly: false }, -); diff --git a/src/migrations/004.ts b/src/migrations/004.ts deleted file mode 100644 index 97f3d155..00000000 --- a/src/migrations/004.ts +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getActorUpdateDataGetter, - getCompendiumMigrator, - getSceneUpdateDataGetter, - migrateActors, - migrateCompendiums, - migrateItems, - migrateScenes, -} from "./migrationHelpers"; - -export async function migrate(): Promise { - await migrateItems(getItemUpdateData); - await migrateActors(getActorUpdateData); - await migrateScenes(getSceneUpdateData); - await migrateCompendiums(migrateCompendium); -} - -function getItemUpdateData(itemData: Partial) { - if (itemData.type !== "spell") return; - const cooldownDurationUnit: string | undefined = itemData.data?.cooldownDuration.unit; - - const updateData: Record = { - data: { - "-=scrollPrice": null, - minimumLevels: { healer: null, wizard: null, sorcerer: null }, - cooldownDuration: { - unit: cooldownDurationUnit === "custom" ? "rounds" : cooldownDurationUnit, - }, - }, - }; - return updateData; -} - -const getActorUpdateData = getActorUpdateDataGetter(getItemUpdateData); -const getSceneUpdateData = getSceneUpdateDataGetter(getActorUpdateData); -const migrateCompendium = getCompendiumMigrator({ getItemUpdateData, getActorUpdateData, getSceneUpdateData }); diff --git a/src/migrations/migrationHelpers.ts b/src/migrations/migrationHelpers.ts deleted file mode 100644 index d0a53f54..00000000 --- a/src/migrations/migrationHelpers.ts +++ /dev/null @@ -1,186 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Actor } from "../actor/actor"; -import { getGame } from "../helpers"; -import { DS4Item } from "../item/item"; -import logger from "../logger"; - -type ItemUpdateDataGetter = ( - itemData: Partial, -) => DeepPartial | Record | undefined; - -export async function migrateItems(getItemUpdateData: ItemUpdateDataGetter): Promise { - for (const item of getGame().items ?? []) { - try { - const updateData = getItemUpdateData(item.toObject()); - if (updateData) { - logger.info(`Migrating Item document ${item.name} (${item.id})`); - await item.update(updateData), { enforceTypes: false }; - } - } catch (err) { - logger.error(`Error during migration of Item document ${item.name} (${item.id}), continuing anyways.`, err); - } - } -} - -type ActorUpdateDataGetter = ( - itemData: Partial, -) => DeepPartial | undefined; - -export async function migrateActors(getActorUpdateData: ActorUpdateDataGetter): Promise { - for (const actor of getGame().actors ?? []) { - try { - const updateData = getActorUpdateData(actor.toObject()); - if (updateData) { - logger.info(`Migrating Actor document ${actor.name} (${actor.id})`); - await actor.update(updateData); - } - } catch (err) { - logger.error( - `Error during migration of Actor document ${actor.name} (${actor.id}), continuing anyways.`, - err, - ); - } - } -} - -type SceneUpdateDataGetter = (sceneData: foundry.data.SceneData) => DeepPartial; - -export async function migrateScenes(getSceneUpdateData: SceneUpdateDataGetter): Promise { - for (const scene of getGame().scenes ?? []) { - try { - const updateData = getSceneUpdateData(scene.data); - if (updateData) { - logger.info(`Migrating Scene document ${scene.name} (${scene.id})`); - await scene.update( - updateData as DeepPartial[0]>, - ); - } - } catch (err) { - logger.error( - `Error during migration of Scene document ${scene.name} (${scene.id}), continuing anyways.`, - err, - ); - } - } -} - -type CompendiumMigrator = (compendium: CompendiumCollection) => Promise; - -export async function migrateCompendiums(migrateCompendium: CompendiumMigrator): Promise { - for (const compendium of getGame().packs ?? []) { - if (compendium.metadata.package !== "world") continue; - if (!["Actor", "Item", "Scene"].includes(compendium.metadata.entity)) continue; - await migrateCompendium(compendium); - } -} - -export function getActorUpdateDataGetter(getItemUpdateData: ItemUpdateDataGetter): ActorUpdateDataGetter { - return ( - actorData: Partial, - ): DeepPartial | undefined => { - let hasItemUpdates = false; - const items = actorData.items?.map((itemData) => { - const update = getItemUpdateData(itemData); - if (update) { - hasItemUpdates = true; - return { ...itemData, ...update }; - } else { - return itemData; - } - }); - return hasItemUpdates ? { items } : undefined; - }; -} - -export function getSceneUpdateDataGetter(getActorUpdateData: ActorUpdateDataGetter): SceneUpdateDataGetter { - return (sceneData: foundry.data.SceneData) => { - const tokens = sceneData.tokens.map((token: TokenDocument) => { - const t = token.toObject(); - if (!t.actorId || t.actorLink) { - t.actorData = {}; - } else if (!getGame().actors?.has(t.actorId)) { - t.actorId = null; - t.actorData = {}; - } else if (!t.actorLink) { - const actorData = foundry.utils.deepClone(t.actorData); - actorData.type = token.actor?.type; - const update = getActorUpdateData(actorData); - if (update !== undefined) { - ["items" as const, "effects" as const].forEach((embeddedName) => { - const embeddedUpdates = update[embeddedName]; - if (embeddedUpdates === undefined || !embeddedUpdates.length) return; - const updates = new Map(embeddedUpdates.flatMap((u) => (u && u._id ? [[u._id, u]] : []))); - const originals = t.actorData[embeddedName]; - if (!originals) return; - originals.forEach((original) => { - if (!original._id) return; - const update = updates.get(original._id); - if (update) foundry.utils.mergeObject(original, update); - }); - delete update[embeddedName]; - }); - foundry.utils.mergeObject(t.actorData, update); - } - } - return t; - }); - return { tokens }; - }; -} - -export function getCompendiumMigrator( - { - getItemUpdateData, - getActorUpdateData, - getSceneUpdateData, - }: { - getItemUpdateData?: ItemUpdateDataGetter; - getActorUpdateData?: ActorUpdateDataGetter; - getSceneUpdateData?: SceneUpdateDataGetter; - } = {}, - { migrateToTemplateEarly = true } = {}, -) { - return async (compendium: CompendiumCollection): Promise => { - const entityName = compendium.metadata.entity; - if (!["Actor", "Item", "Scene"].includes(entityName)) return; - const wasLocked = compendium.locked; - await compendium.configure({ locked: false }); - if (migrateToTemplateEarly) { - await compendium.migrate(); - } - - const documents = await compendium.getDocuments(); - - for (const doc of documents) { - try { - logger.info(`Migrating document ${doc.name} (${doc.id}) in compendium ${compendium.collection}`); - if (doc instanceof DS4Item && getItemUpdateData) { - const updateData = getItemUpdateData(doc.toObject()); - updateData && (await doc.update(updateData)); - } else if (doc instanceof DS4Actor && getActorUpdateData) { - const updateData = getActorUpdateData(doc.toObject()); - updateData && (await doc.update(updateData)); - } else if (doc instanceof Scene && getSceneUpdateData) { - const updateData = getSceneUpdateData(doc.data as foundry.data.SceneData); - updateData && - (await doc.update( - updateData as DeepPartial[0]>, - )); - } - } catch (err) { - logger.error( - `Error during migration of document ${doc.name} (${doc.id}) in compendium ${compendium.collection}, continuing anyways.`, - err, - ); - } - } - - if (!migrateToTemplateEarly) { - await compendium.migrate(); - } - await compendium.configure({ locked: wasLocked }); - }; -} diff --git a/src/rolls/check-evaluation.ts b/src/rolls/check-evaluation.ts deleted file mode 100644 index 2ee1e461..00000000 --- a/src/rolls/check-evaluation.ts +++ /dev/null @@ -1,131 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../helpers"; - -export default function evaluateCheck( - dice: number[], - checkTargetNumber: number, - { - maximumCoupResult = 1, - minimumFumbleResult = 20, - canFumble = true, - }: { maximumCoupResult?: number; minimumFumbleResult?: number; canFumble?: boolean } = {}, -): SubCheckResult[] { - const diceWithSubChecks = assignSubChecksToDice(dice, checkTargetNumber, { - maximumCoupResult: maximumCoupResult, - }); - return evaluateDiceWithSubChecks(diceWithSubChecks, { - maximumCoupResult: maximumCoupResult, - minimumFumbleResult: minimumFumbleResult, - canFumble: canFumble, - }); -} - -interface DieWithSubCheck { - result: number; - checkTargetNumber: number; -} - -function assignSubChecksToDice( - dice: number[], - checkTargetNumber: number, - { - maximumCoupResult = 1, - }: { - maximumCoupResult?: number; - } = {}, -): DieWithSubCheck[] { - const requiredNumberOfDice = getRequiredNumberOfDice(checkTargetNumber); - - if (dice.length !== requiredNumberOfDice || requiredNumberOfDice < 1) { - throw new Error(getGame().i18n.localize("DS4.ErrorInvalidNumberOfDice")); - } - - const checkTargetNumberForLastSubCheck = checkTargetNumber - 20 * (requiredNumberOfDice - 1); - - const indexOfSmallestNonCoup = findIndexOfSmallestNonCoup(dice, maximumCoupResult); - const indexOfFirstCoup = dice.findIndex((die) => die <= maximumCoupResult); - const indexForLastSubCheck = shouldUseCoupForLastSubCheck( - indexOfSmallestNonCoup, - indexOfFirstCoup, - dice, - checkTargetNumberForLastSubCheck, - ) - ? indexOfFirstCoup - : indexOfSmallestNonCoup; - - return dice.map((die, index) => ({ - result: die, - checkTargetNumber: index === indexForLastSubCheck ? checkTargetNumberForLastSubCheck : 20, - })); -} - -function findIndexOfSmallestNonCoup(dice: number[], maximumCoupResult: number): number { - return dice - .map((die, index): [number, number] => [die, index]) - .filter((indexedDie) => indexedDie[0] > maximumCoupResult) - .reduce( - (smallestIndexedDie, indexedDie) => - indexedDie[0] < smallestIndexedDie[0] ? indexedDie : smallestIndexedDie, - [Infinity, -1], - )[1]; -} - -function shouldUseCoupForLastSubCheck( - indexOfSmallestNonCoup: number, - indexOfFirstCoup: number, - dice: readonly number[], - checkTargetNumberForLastSubCheck: number, -) { - if (indexOfFirstCoup !== -1 && indexOfSmallestNonCoup === -1) { - return true; - } - const smallestNonCoup = dice[indexOfSmallestNonCoup]; - if ( - !Number.isInteger(indexOfFirstCoup) || - indexOfFirstCoup < -1 || - !Number.isInteger(indexOfSmallestNonCoup) || - smallestNonCoup === undefined - ) { - throw new Error("Received an invalid value for the parameter indexOfSmallestNonCoup or indexOfFirstCoup,"); - } - return ( - indexOfFirstCoup !== -1 && - smallestNonCoup > checkTargetNumberForLastSubCheck && - smallestNonCoup + checkTargetNumberForLastSubCheck > 20 - ); -} - -interface SubCheckResult extends DieWithSubCheck, DiceTerm.Result {} - -function evaluateDiceWithSubChecks( - results: DieWithSubCheck[], - { - maximumCoupResult, - minimumFumbleResult, - canFumble, - }: { maximumCoupResult: number; minimumFumbleResult: number; canFumble: boolean }, -): SubCheckResult[] { - return results.map((dieWithSubCheck, index) => { - const result: SubCheckResult = { - ...dieWithSubCheck, - active: dieWithSubCheck.result <= dieWithSubCheck.checkTargetNumber, - discarded: dieWithSubCheck.result > dieWithSubCheck.checkTargetNumber, - }; - if (result.result <= maximumCoupResult) { - result.success = true; - result.count = result.checkTargetNumber; - result.active = true; - result.discarded = false; - } - if (index === 0 && canFumble && result.result >= minimumFumbleResult) result.failure = true; - return result; - }); -} - -export function getRequiredNumberOfDice(checkTargetNumber: number): number { - return Math.max(Math.ceil(checkTargetNumber / 20), 1); -} diff --git a/src/rolls/check-factory.ts b/src/rolls/check-factory.ts deleted file mode 100644 index e020880d..00000000 --- a/src/rolls/check-factory.ts +++ /dev/null @@ -1,236 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../helpers"; - -/** - * Provides default values for all arguments the `CheckFactory` expects. - */ -class DefaultCheckOptions implements DS4CheckFactoryOptions { - readonly maximumCoupResult = 1; - readonly minimumFumbleResult = 20; - readonly useSlayingDice = false; - // TODO: Use the type `keyof CONFIG.Dice.rollModes` instead as soon as https://github.com/League-of-Foundry-Developers/foundry-vtt-types/issues/1501 has been resolved. - readonly rollMode: foundry.CONST.DICE_ROLL_MODES = "publicroll"; - readonly flavor: undefined; - - mergeWith(other: Partial): DS4CheckFactoryOptions { - return { ...this, ...other }; - } -} - -/** - * Singleton reference for default value extraction. - */ -const defaultCheckOptions = new DefaultCheckOptions(); - -/** - * Most basic class responsible for generating the chat formula and passing it to the chat as roll. - */ -class CheckFactory { - constructor( - private checkTargetNumber: number, - private gmModifier: number, - options: Partial = {}, - ) { - this.options = defaultCheckOptions.mergeWith(options); - } - - private options: DS4CheckFactoryOptions; - - async execute(): Promise { - const innerFormula = ["ds", this.createCheckTargetNumberModifier(), this.createCoupFumbleModifier()].filterJoin( - "", - ); - const formula = this.options.useSlayingDice ? `{${innerFormula}}x` : innerFormula; - const roll = Roll.create(formula); - const speaker = this.options.speaker ?? ChatMessage.getSpeaker(); - - return roll.toMessage( - { - speaker, - flavor: this.options.flavor, - flags: this.options.flavorData ? { ds4: { flavorData: this.options.flavorData } } : undefined, - }, - { rollMode: this.options.rollMode, create: true }, - ); - } - - createCheckTargetNumberModifier(): string { - const totalCheckTargetNumber = Math.max(this.checkTargetNumber + this.gmModifier, 0); - return `v${totalCheckTargetNumber}`; - } - - createCoupFumbleModifier(): string | null { - const isMinimumFumbleResultRequired = - this.options.minimumFumbleResult !== defaultCheckOptions.minimumFumbleResult; - const isMaximumCoupResultRequired = this.options.maximumCoupResult !== defaultCheckOptions.maximumCoupResult; - - if (isMinimumFumbleResultRequired || isMaximumCoupResultRequired) { - return `c${this.options.maximumCoupResult ?? ""}:${this.options.minimumFumbleResult ?? ""}`; - } else { - return null; - } - } -} - -/** - * Asks the user for all unknown/necessary information and passes them on to perform a roll. - * @param checkTargetNumber - The Check Target Number ("CTN") - * @param options - Options changing the behavior of the roll and message. - */ -export async function createCheckRoll( - checkTargetNumber: number, - options: Partial = {}, -): Promise { - // Ask for additional required data; - const gmModifierData = await askGmModifier(checkTargetNumber, options); - - const newTargetValue = gmModifierData.checkTargetNumber ?? checkTargetNumber; - const gmModifier = gmModifierData.gmModifier ?? 0; - const newOptions: Partial = { - maximumCoupResult: gmModifierData.maximumCoupResult ?? options.maximumCoupResult, - minimumFumbleResult: gmModifierData.minimumFumbleResult ?? options.minimumFumbleResult, - useSlayingDice: getGame().settings.get("ds4", "useSlayingDiceForAutomatedChecks"), - rollMode: gmModifierData.rollMode ?? options.rollMode, - flavor: options.flavor, - flavorData: options.flavorData, - speaker: options.speaker, - }; - - // Create Factory - const cf = new CheckFactory(newTargetValue, gmModifier, newOptions); - - // Possibly additional processing - - // Execute roll - return cf.execute(); -} - -/** - * Responsible for rendering the modal interface asking for the modifier specified by GM and (currently) additional data. - * - * @notes - * At the moment, this asks for more data than it will do after some iterations. - * - * @returns The data given by the user. - */ -async function askGmModifier( - checkTargetNumber: number, - options: Partial = {}, - { template, title }: { template?: string; title?: string } = {}, -): Promise> { - const usedTemplate = template ?? "systems/ds4/templates/dialogs/roll-options.hbs"; - const usedTitle = title ?? getGame().i18n.localize("DS4.DialogRollOptionsDefaultTitle"); - const templateData = { - title: usedTitle, - checkTargetNumber: checkTargetNumber, - maximumCoupResult: options.maximumCoupResult ?? defaultCheckOptions.maximumCoupResult, - minimumFumbleResult: options.minimumFumbleResult ?? defaultCheckOptions.minimumFumbleResult, - rollMode: options.rollMode ?? getGame().settings.get("core", "rollMode"), - rollModes: CONFIG.Dice.rollModes, - }; - const renderedHtml = await renderTemplate(usedTemplate, templateData); - - const dialogPromise = new Promise((resolve) => { - new Dialog({ - title: usedTitle, - content: renderedHtml, - buttons: { - ok: { - icon: '', - label: getGame().i18n.localize("DS4.GenericOkButton"), - callback: (html) => { - if (!("jquery" in html)) { - throw new Error( - getGame().i18n.format("DS4.ErrorUnexpectedHtmlType", { - exType: "JQuery", - realType: "HTMLElement", - }), - ); - } else { - const innerForm = html[0]?.querySelector("form"); - if (!innerForm) { - throw new Error( - getGame().i18n.format("DS4.ErrorCouldNotFindHtmlElement", { htmlElement: "form" }), - ); - } - resolve(innerForm); - } - }, - }, - cancel: { - icon: '', - label: getGame().i18n.localize("DS4.GenericCancelButton"), - }, - }, - default: "ok", - }).render(true); - }); - const dialogForm = await dialogPromise; - return parseDialogFormData(dialogForm); -} - -/** - * Extracts Dialog data from the returned DOM element. - * @param formData - The filed dialog - */ -function parseDialogFormData(formData: HTMLFormElement): Partial { - const chosenCheckTargetNumber = parseInt(formData["check-target-number"]?.value); - const chosenGMModifier = parseInt(formData["gm-modifier"]?.value); - const chosenMaximumCoupResult = parseInt(formData["maximum-coup-result"]?.value); - const chosenMinimumFumbleResult = parseInt(formData["minimum-fumble-result"]?.value); - const chosenRollMode = formData["roll-mode"]?.value; - - return { - checkTargetNumber: Number.isSafeInteger(chosenCheckTargetNumber) ? chosenCheckTargetNumber : undefined, - gmModifier: Number.isSafeInteger(chosenGMModifier) ? chosenGMModifier : undefined, - maximumCoupResult: Number.isSafeInteger(chosenMaximumCoupResult) ? chosenMaximumCoupResult : undefined, - minimumFumbleResult: Number.isSafeInteger(chosenMinimumFumbleResult) ? chosenMinimumFumbleResult : undefined, - rollMode: Object.keys(CONFIG.Dice.rollModes).includes(chosenRollMode) ? chosenRollMode : undefined, - }; -} - -/** - * Contains data that needs retrieval from an interactive Dialog. - */ -interface GmModifierData { - gmModifier: number; - rollMode: foundry.CONST.DICE_ROLL_MODES; -} - -/** - * Contains *CURRENTLY* necessary Data for drafting a roll. - * - * @deprecated - * Quite a lot of this information is requested due to a lack of automation: - * - maximumCoupResult - * - minimumFumbleResult - * - useSlayingDice - * - checkTargetNumber - * - * They will and should be removed once effects and data retrieval is in place. - * If a "raw" roll dialog is necessary, create another pre-processing Dialog - * class asking for the required information. - * This interface should then be replaced with the `GmModifierData`. - */ -interface IntermediateGmModifierData extends GmModifierData { - checkTargetNumber: number; - maximumCoupResult: number; - minimumFumbleResult: number; -} - -/** - * The minimum behavioral options that need to be passed to the factory. - */ -export interface DS4CheckFactoryOptions { - maximumCoupResult: number; - minimumFumbleResult: number; - useSlayingDice: boolean; - rollMode: foundry.CONST.DICE_ROLL_MODES; - flavor?: string; - flavorData?: Record; - speaker?: ReturnType; -} diff --git a/src/rolls/check.ts b/src/rolls/check.ts deleted file mode 100644 index 9dcf8d0c..00000000 --- a/src/rolls/check.ts +++ /dev/null @@ -1,130 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../helpers"; -import evaluateCheck, { getRequiredNumberOfDice } from "./check-evaluation"; - -/** - * Implements DS4 Checks as an emulated "dice throw". - * - * @example - * - Roll a check against a Check Target Number (CTN) of 18: `/r dsv18` - * - Roll a check with multiple dice against a CTN of 34: `/r dsv34` - * - Roll a check with a racial ability that makes `2` a coup and `19` a fumble: `/r dsv19c2:19` - * - Roll a check with a racial ability that makes `5` a coup and default fumble: `/r dsv19c5` - */ -export class DS4Check extends DiceTerm { - constructor({ modifiers = [], results = [], options }: Partial = {}) { - super({ - faces: 20, - results, - modifiers, - options, - }); - - // Parse and store check target number - const checkTargetNumberModifier = this.modifiers.filter((m) => m[0] === "v")[0]; - const ctnRgx = new RegExp("v([0-9]+)?"); - const ctnMatch = checkTargetNumberModifier?.match(ctnRgx); - if (ctnMatch) { - const [parseCheckTargetNumber] = ctnMatch.slice(1); - this.checkTargetNumber = parseCheckTargetNumber - ? parseInt(parseCheckTargetNumber) - : DS4Check.DEFAULT_CHECK_TARGET_NUMBER; - } - - this.number = getRequiredNumberOfDice(this.checkTargetNumber); - - // Parse and store maximumCoupResult and minimumFumbleResult - const coupFumbleModifier = this.modifiers.filter((m) => m[0] === "c")[0]; - const cfmRgx = new RegExp("c([0-9]+)?(:([0-9]+))?"); - const cfmMatch = coupFumbleModifier?.match(cfmRgx); - if (cfmMatch) { - const parseMaximumCoupResult = cfmMatch[1]; - const parseMinimumFumbleResult = cfmMatch[3]; - this.maximumCoupResult = parseMaximumCoupResult - ? parseInt(parseMaximumCoupResult) - : DS4Check.DEFAULT_MAXIMUM_COUP_RESULT; - this.minimumFumbleResult = parseMinimumFumbleResult - ? parseInt(parseMinimumFumbleResult) - : DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT; - if (this.minimumFumbleResult <= this.maximumCoupResult) - throw new SyntaxError(getGame().i18n.localize("DS4.ErrorDiceCoupFumbleOverlap")); - } - - // Parse and store no fumble - const noFumbleModifier = this.modifiers.filter((m) => m[0] === "n")[0]; - if (noFumbleModifier) { - this.canFumble = false; - } - - if (this.results.length > 0) { - this.evaluateResults(); - } - } - - coup: boolean | null = null; - fumble: boolean | null = null; - canFumble = true; - checkTargetNumber = DS4Check.DEFAULT_CHECK_TARGET_NUMBER; - minimumFumbleResult = DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT; - maximumCoupResult = DS4Check.DEFAULT_MAXIMUM_COUP_RESULT; - - /** @override */ - get expression(): string { - return `ds${this.modifiers.join("")}`; - } - - /** @override */ - get total(): string | number | null | undefined { - if (this.fumble) return 0; - return super.total; - } - - /** @override */ - _evaluateSync({ minimize = false, maximize = false } = {}): this { - super._evaluateSync({ minimize, maximize }); - this.evaluateResults(); - return this; - } - - /** @override */ - roll({ minimize = false, maximize = false } = {}): DiceTerm.Result { - // Swap minimize / maximize because in DS4, the best possible roll is a 1 and the worst possible roll is a 20 - return super.roll({ minimize: maximize, maximize: minimize }); - } - - evaluateResults(): void { - const dice = this.results.map((die) => die.result); - const results = evaluateCheck(dice, this.checkTargetNumber, { - maximumCoupResult: this.maximumCoupResult, - minimumFumbleResult: this.minimumFumbleResult, - canFumble: this.canFumble, - }); - this.results = results; - this.coup = results[0]?.success ?? false; - this.fumble = results[0]?.failure ?? false; - } - - /** - * @override - * @remarks "min" and "max" are filtered out because they are irrelevant for - * {@link DS4Check}s and only result in some dice rolls being highlighted - * incorrectly. - */ - getResultCSS(result: DiceTerm.Result): (string | null)[] { - return super.getResultCSS(result).filter((cssClass) => cssClass !== "min" && cssClass !== "max"); - } - - static readonly DEFAULT_CHECK_TARGET_NUMBER = 10; - static readonly DEFAULT_MAXIMUM_COUP_RESULT = 1; - static readonly DEFAULT_MINIMUM_FUMBLE_RESULT = 20; - static DENOMINATION = "s"; - static MODIFIERS = { - c: (): void => undefined, // Modifier is consumed in constructor for maximumCoupResult / minimumFumbleResult - v: (): void => undefined, // Modifier is consumed in constructor for checkTargetNumber - n: (): void => undefined, // Modifier is consumed in constructor for canFumble - }; -} diff --git a/src/rolls/roll.ts b/src/rolls/roll.ts deleted file mode 100644 index 70b0fba0..00000000 --- a/src/rolls/roll.ts +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../helpers"; -import { DS4Check } from "./check"; - -export class DS4Roll = Record> extends Roll { - static CHAT_TEMPLATE = "systems/ds4/templates/dice/roll.hbs"; - - /** - * @override - * @remarks - * This only differs from {@link Roll#render} in that it provides `isCoup` and `isFumble` properties to the roll - * template if the first dice term is a ds4 check. - */ - async render({ - flavor, - template = (this.constructor as typeof DS4Roll).CHAT_TEMPLATE, - isPrivate = false, - }: Parameters[0] = {}): Promise { - if (!this._evaluated) await this.evaluate({ async: true }); - const firstDiceTerm = this.dice[0]; - const isCoup = firstDiceTerm instanceof DS4Check && firstDiceTerm.coup; - const isFumble = firstDiceTerm instanceof DS4Check && firstDiceTerm.fumble; - const chatData = { - formula: isPrivate ? "???" : this._formula, - flavor: isPrivate ? null : flavor, - user: getGame().user?.id, - tooltip: isPrivate ? "" : await this.getTooltip(), - total: isPrivate ? "?" : Math.round((this.total ?? 0) * 100) / 100, - isCoup: isPrivate ? null : isCoup, - isFumble: isPrivate ? null : isFumble, - }; - return renderTemplate(template, chatData); - } -} diff --git a/src/rolls/slaying-dice-modifier.ts b/src/rolls/slaying-dice-modifier.ts deleted file mode 100644 index bd58b059..00000000 --- a/src/rolls/slaying-dice-modifier.ts +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../helpers"; -import { DS4Check } from "./check"; - -export default function registerSlayingDiceModifier(): void { - PoolTerm.MODIFIERS.x = slay; -} - -function slay(this: PoolTerm, modifier: string): void { - const rgx = /[xX]/; - const match = modifier.match(rgx); - if (!match || !this.rolls) return; - - let checked = 0; - while (checked < (this.dice.length ?? 0)) { - const diceTerm = this.dice[checked]; - checked++; - if (diceTerm instanceof DS4Check && diceTerm.coup) { - const formula = `dsv${diceTerm.checkTargetNumber}c${diceTerm.maximumCoupResult}:${diceTerm.minimumFumbleResult}n`; - const additionalRoll = Roll.create(formula).evaluate({ async: false }); - - this.rolls.push(additionalRoll); - this.results.push({ result: additionalRoll.total ?? 0, active: true }); - this.terms.push(formula); - } - if (checked > 1000) throw new Error(getGame().i18n.localize("DS4.ErrorSlayingDiceRecursionLimitExceeded")); - } -} diff --git a/src/settings.js b/src/settings.js new file mode 100644 index 00000000..328a8512 --- /dev/null +++ b/src/settings.js @@ -0,0 +1,58 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "./utils/utils"; + +export function registerSystemSettings() { + const game = getGame(); + + /** + * Track the migration version of the latest migration that has been applied. + */ + game.settings.register("ds4", "systemMigrationVersion", { + name: "System Migration Version", + scope: "world", + config: false, + type: Number, + default: -1, + }); + + game.settings.register("ds4", "useSlayingDiceForAutomatedChecks", { + name: "DS4.SettingUseSlayingDiceForAutomatedChecksName", + hint: "DS4.SettingUseSlayingDiceForAutomatedChecksHint", + scope: "world", + config: true, + type: Boolean, + default: false, + }); + + game.settings.register("ds4", "showSlayerPoints", { + name: "DS4.SettingShowSlayerPointsName", + hint: "DS4.SettingShowSlayerPointsHint", + scope: "world", + config: true, + type: Boolean, + default: false, + }); +} + +/** + * @typedef DS4Settings + * @property {number} systemMigrationVersion + * @property {boolean} useSlayingDiceForAutomatedChecks + * @property {boolean} showSlayerPoints + */ + +/** + * Get the current values for DS4 settings. + * @returns {DS4Settings} + */ +export function getDS4Settings() { + const game = getGame(); + return { + systemMigrationVersion: game.settings.get("ds4", "systemMigrationVersion"), + useSlayingDiceForAutomatedChecks: game.settings.get("ds4", "useSlayingDiceForAutomatedChecks"), + showSlayerPoints: game.settings.get("ds4", "showSlayerPoints"), + }; +} diff --git a/src/settings.ts b/src/settings.ts deleted file mode 100644 index a2d1017e..00000000 --- a/src/settings.ts +++ /dev/null @@ -1,53 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "./helpers"; - -export function registerSystemSettings(): void { - const game = getGame(); - - /** - * Track the migrations version of the latest migration that has been applied - */ - game.settings.register("ds4", "systemMigrationVersion", { - name: "System Migration Version", - scope: "world", - config: false, - type: Number, - default: -1, - }); - - game.settings.register("ds4", "useSlayingDiceForAutomatedChecks", { - name: "DS4.SettingUseSlayingDiceForAutomatedChecksName", - hint: "DS4.SettingUseSlayingDiceForAutomatedChecksHint", - scope: "world", - config: true, - type: Boolean, - default: false, - }); - - game.settings.register("ds4", "showSlayerPoints", { - name: "DS4.SettingShowSlayerPointsName", - hint: "DS4.SettingShowSlayerPointsHint", - scope: "world", - config: true, - type: Boolean, - default: false, - }); -} - -export interface DS4Settings { - systemMigrationVersion: number; - useSlayingDiceForAutomatedChecks: boolean; - showSlayerPoints: boolean; -} - -export function getDS4Settings(): DS4Settings { - const game = getGame(); - return { - systemMigrationVersion: game.settings.get("ds4", "systemMigrationVersion"), - useSlayingDiceForAutomatedChecks: game.settings.get("ds4", "useSlayingDiceForAutomatedChecks"), - showSlayerPoints: game.settings.get("ds4", "showSlayerPoints"), - }; -} diff --git a/src/ui/fonts.ts b/src/ui/fonts.ts new file mode 100644 index 00000000..48959058 --- /dev/null +++ b/src/ui/fonts.ts @@ -0,0 +1,19 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +const basicFonts = ["Wood Stamp"]; +const variantFonts = ["Lora"]; + +export async function preloadFonts(): Promise { + const fonts = [ + ...basicFonts.map((font) => `1rem ${font}`), + ...variantFonts.flatMap((font) => [ + `1rem ${font}`, + `bold 1rem ${font}`, + `italic 1rem ${font}`, + `bold italic 1rem ${font}`, + ]), + ]; + return Promise.all(fonts.map((font) => document.fonts.load(font))); +} diff --git a/src/ui/notifications.js b/src/ui/notifications.js new file mode 100644 index 00000000..db311eba --- /dev/null +++ b/src/ui/notifications.js @@ -0,0 +1,61 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { logger } from "../utils/logger"; +import { getNotificationsSafe } from "../utils/utils"; + +/** + * @typedef {Object} NotificationOptions + * @property {boolean} [permanent=false] + * @property {boolean} [log=false] + */ + +/** + * @typedef {(message: string, options?: NotificationOptions) => void} NotificationFunction + */ + +/** + * @typedef {"info" | "warn" | "error"} NotificationType + */ + +/** + * @param {NotificationType} type The type of the notification + * @returns {NotificationFunction} + */ +function getNotificationFunction(type) { + return (message, { permanent = false, log = false } = {}) => { + if (ui.notifications) { + ui.notifications[type](message, { permanent }); + if (log) { + logger[type](message); + } + } else { + logger[type](message); + } + }; +} + +/** + * @param {string} message + * @param {NotificationType} type + * @param {NotificationOptions} [options={}] + */ +function notify(message, type, { permanent = false, log = false } = {}) { + const notifications = getNotificationsSafe(); + if (notifications) { + notifications.notify(message, type, { permanent }); + if (log) { + logger.getLoggingFunction(type)(message); + } + } else { + logger.getLoggingFunction(type)(message); + } +} + +export const notifications = Object.freeze({ + info: getNotificationFunction("info"), + warn: getNotificationFunction("warn"), + error: getNotificationFunction("error"), + notify, +}); diff --git a/src/ui/notifications.ts b/src/ui/notifications.ts deleted file mode 100644 index 84b62e76..00000000 --- a/src/ui/notifications.ts +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import logger from "../logger"; - -function getNotificationFunction(type: "info" | "warn" | "error") { - return (message: string, { permanent = false, log = false }: { permanent?: boolean; log?: boolean } = {}): void => { - if (ui.notifications) { - ui.notifications[type](message, { permanent }); - if (log) { - logger[type](message); - } - } else { - logger[type](message); - } - }; -} - -const notifications = { - info: getNotificationFunction("info"), - warn: getNotificationFunction("warn"), - error: getNotificationFunction("error"), - notify: ( - message: string, - type: "info" | "warning" | "error" = "info", - { permanent = false, log = false }: { permanent?: boolean; log?: boolean } = {}, - ): void => { - if (ui.notifications) { - ui.notifications.notify(message, type, { permanent }); - if (log) { - logger.getLoggingFunction(type)(message); - } - } else { - logger.getLoggingFunction(type)(message); - } - }, -}; - -export default notifications; diff --git a/src/utils.ts b/src/utils.ts deleted file mode 100644 index a3038fe1..00000000 --- a/src/utils.ts +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGameSafe } from "./helpers"; - -/** - * Tests if the given `value` is truthy. - * - * If it is not truthy, an {@link Error} is thrown, which depends on the given `message` parameter: - * - If `message` is a string`, it is used to construct a new {@link Error} which then is thrown. - * - If `message` is an instance of {@link Error}, it is thrown. - * - If `message` is `undefined`, an {@link Error} with a default message is thrown. - */ -export function enforce(value: unknown, message?: string | Error): asserts value { - if (!value) { - if (!message) { - message = - getGameSafe()?.i18n.localize("DS4.ErrorUnexpectedError") ?? - "There was an unexpected error in the Dungeonslayers 4 system. For more details, please take a look at the console (F12)."; - } - throw message instanceof Error ? message : new Error(message); - } -} diff --git a/src/utils/logger.ts b/src/utils/logger.ts new file mode 100644 index 00000000..07429720 --- /dev/null +++ b/src/utils/logger.ts @@ -0,0 +1,22 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +const loggingContext = "DS4"; +const loggingSeparator = "|"; + +type LogLevel = "debug" | "info" | "warning" | "error"; +type LoggingFunction = (...data: unknown[]) => void; + +const getLoggingFunction = (type: LogLevel = "info"): LoggingFunction => { + const log = { debug: console.debug, info: console.info, warning: console.warn, error: console.error }[type]; + return (...data: unknown[]) => log(loggingContext, loggingSeparator, ...data); +}; + +export const logger = Object.freeze({ + debug: getLoggingFunction("debug"), + info: getLoggingFunction("info"), + warn: getLoggingFunction("warning"), + error: getLoggingFunction("error"), + getLoggingFunction, +}); diff --git a/src/utils/utils.js b/src/utils/utils.js new file mode 100644 index 00000000..f7fec6cb --- /dev/null +++ b/src/utils/utils.js @@ -0,0 +1,61 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +/** + * Tests if the given `value` is truthy. + * + * If it is not truthy, an {@link Error} is thrown, which depends on the given `message` parameter: + * - If `message` is a string`, it is used to construct a new {@link Error} which then is thrown. + * - If `message` is an instance of {@link Error}, it is thrown. + * - If `message` is `undefined`, an {@link Error} with a default message is thrown. + * @param {unknown} value The value to check for truthyness + * @param {string | Error} [message] An error message to use when the check fails + * @returns {asserts value} + */ +export function enforce(value, message) { + if (!value) { + if (!message) { + message = + getGameSafe()?.i18n.localize("DS4.ErrorUnexpectedError") ?? + "There was an unexpected error in the Dungeonslayers 4 system. For more details, please take a look at the console (F12)."; + } + throw message instanceof Error ? message : new Error(message); + } +} + +/** + * A wrapper that returns the canvas, if it is ready. + * @throws if the canvas is not ready yet + * @returns {Canvas} + */ +export function getCanvas() { + enforce(canvas instanceof Canvas && canvas.ready, getGame().i18n.localize("DS4.ErrorCanvasIsNotInitialized")); + return canvas; +} + +/** + * A wrapper that returns the game, if it already exists. + * @throws {Error} if the game is not ready yet + * @returns {Game} + */ +export function getGame() { + enforce(game instanceof Game, "Game is not initialized yet."); + return game; +} + +/** + * A wrapper that returns the game, or `undefined` if it doesn't exist yet + * @returns {Game | undefined} + */ +export function getGameSafe() { + return game instanceof Game ? game : undefined; +} + +/** + * A wrapper that returns `ui.notifications`, or `undefined` if it doesn't exist yet + * @returns {Notifications | undefined} + */ +export function getNotificationsSafe() { + return ui.notifications instanceof Notifications ? ui.notifications : undefined; +} diff --git a/system.json b/system.json index 63503106..36245e6f 100644 --- a/system.json +++ b/system.json @@ -1,110 +1,127 @@ { - "name": "ds4", - "title": "Dungeonslayers 4", - "description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.", - "authors": [ - { - "name": "Johannes Loher", - "email": "johannes.loher@fg4f.de", - "discord": "ghost#2000", - "ko-fi": "ghostfvtt" - }, - { - "name": "Gesina Schwalbe", - "email": "gesina.schwalbe@pheerai.de" - }, - { - "name": "Oliver Rümpelein", - "email": "foundryvtt@pheerai.de" - }, - { - "name": "Siegfried Krug", - "email": "foundryvtt@asdil1991.de" - }, - { - "name": "Max Tharr" - }, - { - "name": "Sascha Martens" - } - ], - "url": "https://git.f3l.de/dungeonslayers/ds4", - "license": "https://git.f3l.de/dungeonslayers/ds4/-/raw/1.12.6/LICENSE.md", - "readme": "https://git.f3l.de/dungeonslayers/ds4/-/raw/1.12.6/README.md", - "bugs": "https://git.f3l.de/dungeonslayers/ds4/-/issues", - "changelog": "https://git.f3l.de/dungeonslayers/ds4/-/releases/1.12.6", - "version": "1.12.6", - "minimumCoreVersion": "9.238", - "compatibleCoreVersion": "9", - "esmodules": ["ds4.js"], - "styles": ["css/ds4.css"], - "languages": [ - { - "lang": "en", - "name": "English", - "path": "lang/en.json" - }, - { - "lang": "de", - "name": "Deutsch", - "path": "lang/de.json" - } - ], - "packs": [ - { - "name": "special-creature-abilities", - "label": "Besondere Kreaturenfähigkeiten (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/special-creature-abilities.db", - "type": "Item" - }, - { - "name": "languages-and-scripts", - "label": "Sprachen und Schriftzeichen (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/languages-and-scripts.db", - "type": "Item" - }, - { - "name": "equipment", - "label": "Gegenstände (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/items.db", - "type": "Item" - }, - { - "name": "spells", - "label": "Zauber (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/spells.db", - "type": "Item" - }, - { - "name": "creatures", - "label": "Kreaturen (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/creatures.db", - "type": "Actor" - }, - { - "name": "racial-abilities", - "label": "Volksfähigkeiten (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/racial-abilities.db", - "type": "Item" - } - ], - "manifest": "https://git.f3l.de/api/v4/projects/dungeonslayers%2Fds4/packages/generic/ds4/latest/system.json", - "download": "https://git.f3l.de/dungeonslayers/ds4/-/releases/1.12.6/downloads/ds4.zip", - "initiative": "@combatValues.initiative.total", - "gridDistance": 1, - "gridUnits": "m", - "primaryTokenAttribute": "combatValues.hitPoints", - "manifestPlusVersion": "1.2.0" + "id": "ds4", + "title": "Dungeonslayers 4", + "description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.", + "authors": [ + { + "name": "Johannes Loher", + "email": "johannes.loher@fg4f.de", + "discord": "ghost#2000", + "ko-fi": "ghostfvtt" + }, + { + "name": "Gesina Schwalbe", + "email": "gesina.schwalbe@pheerai.de" + }, + { + "name": "Oliver Rümpelein", + "email": "foundryvtt@pheerai.de" + }, + { + "name": "Siegfried Krug", + "email": "foundryvtt@asdil1991.de" + }, + { + "name": "Max Tharr" + }, + { + "name": "Sascha Martens" + } + ], + "license": "https://git.f3l.de/dungeonslayers/ds4/raw/tag/2.0.5/LICENSE.md", + "readme": "https://git.f3l.de/dungeonslayers/ds4/raw/tag/2.0.5/README.md", + "bugs": "https://git.f3l.de/dungeonslayers/ds4/issues", + "changelog": "https://git.f3l.de/dungeonslayers/ds4/releases/tag/2.0.5", + "version": "2.0.5", + "flags": { + "hotReload": { + "extensions": ["css", "hbs", "json"], + "paths": ["templates", "css", "lang"] + } + }, + "compatibility": { + "minimum": "12.331", + "verified": "12" + }, + "esmodules": ["ds4.js"], + "styles": ["css/ds4.css"], + "languages": [ + { + "lang": "en", + "name": "English", + "path": "lang/en.json" + }, + { + "lang": "de", + "name": "Deutsch", + "path": "lang/de.json" + } + ], + "packs": [ + { + "name": "special-creature-abilities", + "label": "Besondere Kreaturenfähigkeiten (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/special-creature-abilities", + "type": "Item" + }, + { + "name": "languages-and-scripts", + "label": "Sprachen und Schriftzeichen (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/languages-and-scripts", + "type": "Item" + }, + { + "name": "equipment", + "label": "Gegenstände (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/items", + "type": "Item" + }, + { + "name": "spells", + "label": "Zauber (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/spells", + "type": "Item" + }, + { + "name": "creatures", + "label": "Kreaturen (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/creatures", + "type": "Actor" + }, + { + "name": "racial-abilities", + "label": "Volksfähigkeiten (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/racial-abilities", + "type": "Item" + }, + { + "name": "talents", + "label": "Talente (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/talents", + "type": "Item" + } + ], + "manifest": "https://git.f3l.de/api/packages/dungeonslayers/generic/ds4/latest/system.json", + "download": "https://git.f3l.de/dungeonslayers/ds4/releases/download/2.0.5/ds4.zip", + "initiative": "@combatValues.initiative.total", + "grid": { + "distance": 1, + "units": "m" + }, + "primaryTokenAttribute": "combatValues.hitPoints", + "url": "https://git.f3l.de/dungeonslayers/ds4" } diff --git a/template.json b/template.json index b7378316..acb087d0 100644 --- a/template.json +++ b/template.json @@ -1,228 +1,247 @@ { - "Actor": { - "types": ["character", "creature"], - "templates": { - "base": { - "attributes": { - "body": { - "base": 0, - "mod": 0 - }, - "mobility": { - "base": 0, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 0 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - } - } + "Actor": { + "types": ["character", "creature"], + "templates": { + "base": { + "attributes": { + "body": { + "base": 0, + "mod": 0 + }, + "mobility": { + "base": 0, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } }, - "creature": { - "templates": ["base"], - "baseInfo": { - "loot": "", - "foeFactor": 1, - "creatureType": "humanoid", - "sizeCategory": "normal", - "experiencePoints": 0, - "description": "" - } + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } }, - "character": { - "templates": ["base"], - "baseInfo": { - "race": "", - "class": "", - "heroClass": "", - "culture": "" - }, - "progression": { - "level": 0, - "experiencePoints": 0, - "talentPoints": { - "total": 0, - "used": 0 - }, - "progressPoints": { - "total": 0, - "used": 0 - } - }, - "profile": { - "biography": "", - "gender": "", - "birthday": "", - "birthplace": "", - "age": 0, - "height": 0, - "hairColor": "", - "weight": 0, - "eyeColor": "", - "specialCharacteristics": "" - }, - "currency": { - "gold": 0, - "silver": 0, - "copper": 0 - }, - "slayerPoints": { - "value": 0 - } + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 0 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } } + } }, - "Item": { - "types": [ - "weapon", - "armor", - "shield", - "spell", - "equipment", - "loot", - "talent", - "racialAbility", - "language", - "alphabet", - "specialCreatureAbility" - ], - "templates": { - "base": { - "description": "" - }, - "physical": { - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-" - }, - "equipable": { - "equipped": false - }, - "protective": { - "armorValue": 0 - } + "creature": { + "templates": ["base"], + "baseInfo": { + "loot": "", + "foeFactor": 1, + "creatureType": "humanoid", + "sizeCategory": "normal", + "experiencePoints": 0, + "description": "" + } + }, + "character": { + "templates": ["base"], + "baseInfo": { + "race": "", + "class": "", + "heroClass": "", + "culture": "" + }, + "progression": { + "level": 0, + "experiencePoints": 0, + "talentPoints": { + "total": 0, + "used": 0 }, - "weapon": { - "templates": ["base", "physical", "equipable"], - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "armor": { - "templates": ["base", "physical", "equipable", "protective"], - "armorMaterialType": "cloth", - "armorType": "body" - }, - "shield": { - "templates": ["base", "physical", "equipable", "protective"] - }, - "spell": { - "templates": ["base", "equipable"], - "spellType": "spellcasting", - "bonus": "", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "", - "unit": "custom" - }, - "cooldownDuration": { - "value": "", - "unit": "rounds" - }, - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": null - } - }, - "equipment": { - "templates": ["base", "physical", "equipable"] - }, - "loot": { - "templates": ["base", "physical"] - }, - "talent": { - "templates": ["base"], - "rank": { - "base": 0, - "max": 0, - "mod": 0 - } - }, - "racialAbility": { - "templates": ["base"] - }, - "language": { - "templates": ["base"] - }, - "alphabet": { - "templates": ["base"] - }, - "specialCreatureAbility": { - "templates": ["base"], - "experiencePoints": 0 + "progressPoints": { + "total": 0, + "used": 0 } + }, + "profile": { + "biography": "", + "gender": "", + "birthday": "", + "birthplace": "", + "age": 0, + "height": 0, + "hairColor": "", + "weight": 0, + "eyeColor": "", + "specialCharacteristics": "" + }, + "currency": { + "gold": 0, + "silver": 0, + "copper": 0 + }, + "slayerPoints": { + "value": 0 + } } + }, + "Item": { + "types": [ + "weapon", + "armor", + "shield", + "spell", + "equipment", + "loot", + "talent", + "racialAbility", + "language", + "alphabet", + "specialCreatureAbility" + ], + "templates": { + "base": { + "description": "" + }, + "physical": { + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-" + }, + "equipable": { + "equipped": false + }, + "protective": { + "armorValue": 0 + } + }, + "weapon": { + "templates": ["base", "physical", "equipable"], + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "armor": { + "templates": ["base", "physical", "equipable", "protective"], + "armorMaterialType": "cloth", + "armorType": "body" + }, + "shield": { + "templates": ["base", "physical", "equipable", "protective"] + }, + "spell": { + "templates": ["base", "equipable"], + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": null + } + }, + "equipment": { + "templates": ["base", "physical", "equipable"] + }, + "loot": { + "templates": ["base", "physical"] + }, + "talent": { + "templates": ["base"], + "rank": { + "base": 0, + "max": 0, + "mod": 0 + } + }, + "racialAbility": { + "templates": ["base"] + }, + "language": { + "templates": ["base"] + }, + "alphabet": { + "templates": ["base"] + }, + "specialCreatureAbility": { + "templates": ["base"], + "experiencePoints": 0 + } + } } diff --git a/templates/dialogs/roll-options.hbs b/templates/dialogs/roll-options.hbs index 57f76556..406a512e 100644 --- a/templates/dialogs/roll-options.hbs +++ b/templates/dialogs/roll-options.hbs @@ -12,36 +12,43 @@ SPDX-License-Identifier: MIT !-- @param minimumFumbleResult: The preselected minimum fumble result. !-- @param rollMode: The preselected roll mode (= chat roll-mode). !-- @param rollModes: A map of all roll modes and their i18n keys. +!-- @param checkModifiers: A map of all check difficulty modifiers and their translations. +!-- @param id: A unique id, used to provided uniqe ids for input elements. --}}
- - {{localize "DS4.DialogRollOptionsCheckTargetNumberLabel"}} +
- - + +
+ +
- - {{localize "DS4.DialogRollOptionsCheckModifierCustomLabel"}} + +
+
+ +
- - {{localize "DS4.DialogRollOptionsMinimumFumbleResultLabel"}} +
- +
- + {{selectOptions rollModes selected=rollMode localize=true}}
diff --git a/templates/sheets/active-effect/active-effect-config.hbs b/templates/sheets/active-effect/active-effect-config.hbs new file mode 100644 index 00000000..5a52247a --- /dev/null +++ b/templates/sheets/active-effect/active-effect-config.hbs @@ -0,0 +1,179 @@ +{{!-- +SPDX-FileCopyrightText: 2022 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + + + + +
+ +

+ +

+
+ + + + + +
+
+ +
+ +
+
+ +
+ + {{editor descriptionHTML target="description" button=false editable=editable engine="prosemirror" + collaborate=false}} +
+ +
+ + +
+ + {{#if isActorEffect}} +
+ +
+ +
+
+ {{/if}} + + {{#if isItemEffect}} +
+ +
+ +
+

{{ labels.transfer.hint }}

+
+ {{/if}} + +
+ +
+ + {{#each statuses as |status|}} + + {{/each}} + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+ + + + +
+
+
+ +
+ +
+
+ +
+ +
+ + + + +
+
+
+ + +
+
+
{{ localize "EFFECT.ChangeKey" }}
+
{{ localize "EFFECT.ChangeMode" }}
+
{{ localize "EFFECT.ChangeValue" }}
+
+ +
+
+
    + {{#each data.changes as |change i|}} +
  1. +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
  2. + {{/each}} +
+
+ +
+ +
+
diff --git a/templates/sheets/actor/components/actor-header.hbs b/templates/sheets/actor/components/actor-header.hbs index dba65aba..c6b13c78 100644 --- a/templates/sheets/actor/components/actor-header.hbs +++ b/templates/sheets/actor/components/actor-header.hbs @@ -11,7 +11,7 @@ SPDX-License-Identifier: MIT !-- @param @partial-block: Properties to render in the second header row. --}}
- {{localize 'DS4.ActorImageAltText'}}
@@ -20,10 +20,14 @@ SPDX-License-Identifier: MIT + {{#unless limited}} {{> systems/ds4/templates/sheets/actor/components/actor-progression.hbs}} + {{/unless}}
+ {{#unless limited}}
{{> @partial-block}}
+ {{/unless}}
diff --git a/templates/sheets/actor/components/actor-progression.hbs b/templates/sheets/actor/components/actor-progression.hbs index bfb3a860..13e5b5f4 100644 --- a/templates/sheets/actor/components/actor-progression.hbs +++ b/templates/sheets/actor/components/actor-progression.hbs @@ -8,40 +8,41 @@ SPDX-License-Identifier: MIT
-

-
{{#if (eq data.type "character")}} {{#if settings.showSlayerPoints}}
-

+ max="{{data.system.slayerPoints.max}}" min="0" step="1" name="system.slayerPoints.value" + id="system.slayersPoints.value-{{data._id}}" value="{{data.system.slayerPoints.value}}" + data-dtype="Number" />
{{/if}}
-

- +
-

-
{{/if}} diff --git a/templates/sheets/actor/components/biography.hbs b/templates/sheets/actor/components/biography.hbs index 12e00c03..b8e1befb 100644 --- a/templates/sheets/actor/components/biography.hbs +++ b/templates/sheets/actor/components/biography.hbs @@ -5,6 +5,6 @@ SPDX-License-Identifier: MIT --}}
- {{editor content=data.data.profile.biography target="data.profile.biography" button=true owner=owner - editable=editable}} + {{editor data.system.profile.biography target="system.profile.biography" button=true owner=owner + editable=editable engine="prosemirror"}}
diff --git a/templates/sheets/actor/components/character-properties.hbs b/templates/sheets/actor/components/character-properties.hbs index 6d337395..ddc02909 100644 --- a/templates/sheets/actor/components/character-properties.hbs +++ b/templates/sheets/actor/components/character-properties.hbs @@ -9,55 +9,56 @@ SPDX-License-Identifier: MIT
- + for="system.baseInfo.race-{{data._id}}">{{config.i18n.characterBaseInfo.race}} +
- + for="system.baseInfo.culture-{{data._id}}">{{config.i18n.characterBaseInfo.culture}} +
+ for="system.progression.progressPoints.used-{{data._id}}">{{config.i18n.characterProgression.progressPoints}}
- / -
+ for="system.progression.talentPoints.used-{{data._id}}">{{config.i18n.characterProgression.talentPoints}}
- + / - - + +
- + for="system.baseInfo.class-{{data._id}}">{{config.i18n.characterBaseInfo.class}} +
- + for="system.baseInfo.heroClass-{{data._id}}">{{config.i18n.characterBaseInfo.heroClass}} +
diff --git a/templates/sheets/actor/components/check.hbs b/templates/sheets/actor/components/check.hbs index 43392973..44e50266 100644 --- a/templates/sheets/actor/components/check.hbs +++ b/templates/sheets/actor/components/check.hbs @@ -12,7 +12,8 @@ SPDX-License-Identifier: MIT !-- @param check-label: The label for the check --}} -
+
+ diff --git a/templates/sheets/actor/components/checks.hbs b/templates/sheets/actor/components/checks.hbs index 4accdae7..f0bbc30e 100644 --- a/templates/sheets/actor/components/checks.hbs +++ b/templates/sheets/actor/components/checks.hbs @@ -7,6 +7,6 @@ SPDX-License-Identifier: MIT
{{#each config.i18n.checks as |check-label check-key|}} {{> systems/ds4/templates/sheets/actor/components/check.hbs check-key=check-key check-target-number=(lookup - ../data.data.checks check-key) check-label=check-label}} + ../data.system.checks check-key) check-label=check-label}} {{/each}}
diff --git a/templates/sheets/actor/components/combat-value.hbs b/templates/sheets/actor/components/combat-value.hbs index 3037f92d..78177d69 100644 --- a/templates/sheets/actor/components/combat-value.hbs +++ b/templates/sheets/actor/components/combat-value.hbs @@ -25,8 +25,8 @@ SPDX-License-Identifier: MIT title="{{combat-value-title}} {{localize 'DS4.TooltipBaseValue'}}">{{combat-value-data.base}} +
diff --git a/templates/sheets/actor/components/combat-values.hbs b/templates/sheets/actor/components/combat-values.hbs index 63ebe6e6..e71f548e 100644 --- a/templates/sheets/actor/components/combat-values.hbs +++ b/templates/sheets/actor/components/combat-values.hbs @@ -8,7 +8,7 @@ SPDX-License-Identifier: MIT
{{#each config.i18n.combatValues as |combat-value-title combat-value-key|}} {{> systems/ds4/templates/sheets/actor/components/combat-value.hbs combat-value-key=combat-value-key - combat-value-data=(lookup ../data.data.combatValues combat-value-key) combat-value-label=(lookup + combat-value-data=(lookup ../data.system.combatValues combat-value-key) combat-value-label=(lookup ../config.i18n.combatValuesSheet combat-value-key) combat-value-title=combat-value-title actor-id=../data._id}} {{/each}} diff --git a/templates/sheets/actor/components/core-value.hbs b/templates/sheets/actor/components/core-value.hbs index 0d24a838..498178eb 100644 --- a/templates/sheets/actor/components/core-value.hbs +++ b/templates/sheets/actor/components/core-value.hbs @@ -15,17 +15,17 @@ SPDX-License-Identifier: MIT --}}
-
+ {{#each config.i18n.attributes as |attribute-label attribute-key|}} {{> systems/ds4/templates/sheets/actor/components/core-value.hbs core-value-label=attribute-label - core-value-key=attribute-key core-value-data=(lookup ../data.data.attributes + core-value-key=attribute-key core-value-data=(lookup ../data.system.attributes attribute-key) core-value-variant="attribute" actor-id=../data._id}} {{/each}} {{#each config.i18n.traits as |trait-label trait-key|}} {{> systems/ds4/templates/sheets/actor/components/core-value.hbs core-value-label=trait-label core-value-key=trait-key - core-value-data=(lookup ../data.data.traits trait-key) core-value-variant="trait" actor-id=../data._id}} + core-value-data=(lookup ../data.system.traits trait-key) core-value-variant="trait" actor-id=../data._id}} {{/each}}
diff --git a/templates/sheets/actor/components/creature-properties.hbs b/templates/sheets/actor/components/creature-properties.hbs index a0d99f96..25d20a54 100644 --- a/templates/sheets/actor/components/creature-properties.hbs +++ b/templates/sheets/actor/components/creature-properties.hbs @@ -9,44 +9,36 @@ SPDX-License-Identifier: MIT
- + {{selectOptions config.i18n.creatureTypes selected=data.system.baseInfo.creatureType}}
- + for="system.baseInfo.loot-{{data._id}}">{{config.i18n.creatureBaseInfo.loot}} +
- + for="system.baseInfo.foeFactor-{{data._id}}">{{config.i18n.creatureBaseInfo.foeFactor}} +
- + {{selectOptions config.i18n.creatureSizeCategories selected=data.system.baseInfo.sizeCategory}}
- + for="system.baseInfo.experiencePoints-{{data._id}}">{{config.i18n.creatureBaseInfo.experiencePoints}} +
diff --git a/templates/sheets/actor/components/currency.hbs b/templates/sheets/actor/components/currency.hbs index 2ec01ffa..b9b019a2 100644 --- a/templates/sheets/actor/components/currency.hbs +++ b/templates/sheets/actor/components/currency.hbs @@ -8,9 +8,9 @@ SPDX-License-Identifier: MIT

{{localize 'DS4.CharacterCurrency'}}

- {{#each data.data.currency as |value key|}} - + {{#each data.system.currency as |value key|}} + + name="system.currency.{{key}}" id="system.currency.{{key}}" value="{{value}}" data-dtype="Number" /> {{/each}}
diff --git a/templates/sheets/actor/components/description.hbs b/templates/sheets/actor/components/description.hbs new file mode 100644 index 00000000..dac3ba05 --- /dev/null +++ b/templates/sheets/actor/components/description.hbs @@ -0,0 +1,10 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
+ {{editor data.system.baseInfo.description target="system.baseInfo.description" button=true owner=owner + editable=editable engine="prosemirror"}} +
diff --git a/templates/sheets/actor/components/effect-list-entry.hbs b/templates/sheets/actor/components/effect-list-entry.hbs index f3978224..9fd21553 100644 --- a/templates/sheets/actor/components/effect-list-entry.hbs +++ b/templates/sheets/actor/components/effect-list-entry.hbs @@ -9,24 +9,24 @@ SPDX-License-Identifier: MIT !-- Render an effect list entry row. !-- @param effectData: The data of the item. --}} -
  • +
  • {{!-- enabled --}} - {{!-- effectively enabled --}} - {{#if effectData.isEffectivelyEnabled}}{{else}}{{/if}} + {{!-- active --}} + {{#if effectData.active}}{{else}}{{/if}} - {{!-- icon --}} - {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.icon + {{!-- img --}} + {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.img alt=(localize "DS4.DocumentImageAltText" name=effectData.label) title=effectData.label}} - {{!-- label --}} -
    {{effectData.label}}
    + {{!-- name --}} +
    {{effectData.name}}
    {{!-- source name --}} -
    {{effectData.sourceName}}
    +
    {{effectData.sourceName}}
    {{!-- factor --}}
    {{effectData.factor}}
    diff --git a/templates/sheets/actor/components/effect-list-header.hbs b/templates/sheets/actor/components/effect-list-header.hbs index fa433700..113103f2 100644 --- a/templates/sheets/actor/components/effect-list-header.hbs +++ b/templates/sheets/actor/components/effect-list-header.hbs @@ -12,14 +12,14 @@ SPDX-License-Identifier: MIT {{!-- enabled --}}
    {{localize 'DS4.EffectEnabledAbbr'}}
    - {{!-- effectively enabled --}} -
    {{localize 'DS4.EffectEffectivelyEnabledAbbr'}}
    + {{!-- active --}} +
    {{localize 'DS4.EffectActiveAbbr'}}
    {{!-- icon --}}
    - {{!-- label --}} -
    {{localize 'DS4.EffectLabel'}}
    + {{!-- name --}} +
    {{localize 'DS4.EffectName'}}
    {{!-- source name --}}
    {{localize 'DS4.EffectSourceName'}}
    diff --git a/templates/sheets/actor/components/item-list-entry.hbs b/templates/sheets/actor/components/item-list-entry.hbs index 6f75cb3d..9456f976 100644 --- a/templates/sheets/actor/components/item-list-entry.hbs +++ b/templates/sheets/actor/components/item-list-entry.hbs @@ -9,34 +9,36 @@ SPDX-License-Identifier: MIT !-- Render an item list entry row. !-- If the partial is called with a partial block, the partial block !-- content is inserted before the description. -!-- @param itemData: The data of the item. +!-- @param item: The item. !-- @param isEquipable: A flag to enable the equipped column. !-- @param hasQuantity: A flag to enable the quantity column. !-- @param hideDescription: A flag to disable the description column. !-- @param @partial-block: Custom column headers can be passed using the partial block. --}} -
  • +
  • {{!-- equipped --}} {{#if isEquipable}} - {{/if}} {{!-- image --}} - {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=itemData.data.rollable - src=itemData.img alt=(localize "DS4.DocumentImageAltText" name=itemData.name) title=itemData.name - rollableTitle=(localize "DS4.RollableImageRollableTitle" name=itemData.name) rollableClass="rollable-item"}} + {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=(and item.system.rollable + @root/editable) + src=item.img alt=(localize "DS4.DocumentImageAltText" name=item.name) title=item.name + rollableTitle=(localize "DS4.RollableImageRollableTitle" name=item.name) rollableClass="rollable-item"}} {{!-- amount --}} {{#if hasQuantity}} - + {{/if}} {{!-- name --}} - + {{!-- item type specifics --}} {{#if @partial-block }} @@ -45,8 +47,8 @@ SPDX-License-Identifier: MIT {{!-- description --}} {{#unless hideDescription}} -
    - {{{itemData.data.description}}}
    +
    + {{{item.system.description}}}
    {{/unless}} {{!-- control button group --}} diff --git a/templates/sheets/actor/components/item-list-header.hbs b/templates/sheets/actor/components/item-list-header.hbs index c0cec80c..9778e98e 100644 --- a/templates/sheets/actor/components/item-list-header.hbs +++ b/templates/sheets/actor/components/item-list-header.hbs @@ -18,7 +18,7 @@ SPDX-License-Identifier: MIT
  • {{!-- equipped --}} {{#if isEquipable}} -
    {{localize 'DS4.ItemEquippedAbbr'}}
    {{/if}} @@ -28,7 +28,7 @@ SPDX-License-Identifier: MIT {{!-- amount --}} {{#if hasQuantity}} -
    #
    {{/if}} @@ -44,7 +44,7 @@ SPDX-License-Identifier: MIT {{!-- description --}} {{#unless hideDescription}} -
    {{localize 'DS4.Description'}}
    {{/unless}} diff --git a/templates/sheets/actor/components/items-overview.hbs b/templates/sheets/actor/components/items-overview.hbs index 18b52b59..935c77c6 100644 --- a/templates/sheets/actor/components/items-overview.hbs +++ b/templates/sheets/actor/components/items-overview.hbs @@ -13,37 +13,49 @@ SPDX-License-Identifier: MIT {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true type='weapon'}} {{!-- attack type --}} -
    {{localize 'DS4.AttackTypeAbbr'}}
    {{!-- weapon bonus --}} -
    {{localize 'DS4.WeaponBonusAbbr'}}
    {{!-- opponent defense --}} -
    {{localize 'DS4.OpponentDefenseAbbr'}}
    {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - {{#each itemsByType.weapon as |itemData id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData isEquipable=true + {{#each itemsByType.weapon as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true hasQuantity=true}} {{!-- attack type --}} + src="{{lookup @root/config.icons.attackTypes item.system.attackType}}" + title="{{lookup @root/config.i18n.attackTypes item.system.attackType}}" /> {{!-- weapon bonus --}} -
    {{ itemData.data.weaponBonus}}
    +
    {{ item.system.weaponBonus}}
    {{!-- opponent defense --}} -
    {{ itemData.data.opponentDefense}}
    +
    + {{#if item.system.opponentDefenseForAttackType.melee includeZero=true}} + {{#if item.system.opponentDefenseForAttackType.ranged includeZero=true}} + {{item.system.opponentDefenseForAttackType.melee}}/{{item.system.opponentDefenseForAttackType.ranged}} + {{else}} + {{item.system.opponentDefenseForAttackType.melee}} + {{/if}} + {{else}} + {{item.system.opponentDefenseForAttackType.ranged}} + {{/if}} +
    {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} {{/each}} @@ -58,35 +70,35 @@ documentType='item' type='weapon'}} {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true type="armor"}} {{!-- armor material type --}} -
    {{localize 'DS4.ArmorMaterialTypeAbbr'}}
    {{!-- armor type --}} -
    {{localize 'DS4.ArmorTypeAbbr'}}
    {{!-- armor value --}} -
    {{localize 'DS4.ArmorValueAbbr'}}
    {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - {{#each itemsByType.armor as |itemData id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData isEquipable=true + {{#each itemsByType.armor as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true hasQuantity=true}} {{!-- armor material type --}} -
    - {{lookup ../../config.i18n.armorMaterialTypesAbbr itemData.data.armorMaterialType}} +
    + {{lookup @root/config.i18n.armorMaterialTypesAbbr item.system.armorMaterialType}}
    {{!-- armor type --}} -
    - {{lookup ../../config.i18n.armorTypesAbbr itemData.data.armorType}} +
    + {{lookup @root/config.i18n.armorTypesAbbr item.system.armorType}}
    {{!-- armor value --}} -
    {{ itemData.data.armorValue}}
    +
    {{ item.system.armorValue}}
    {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} {{/each}} @@ -101,16 +113,16 @@ documentType='item' type='armor'}} {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true type='shield'}} {{!-- armor value --}} -
    {{localize 'DS4.ArmorValueAbbr'}}
    {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - {{#each itemsByType.shield as |itemData id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData isEquipable=true + {{#each itemsByType.shield as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true hasQuantity=true}} {{!-- armor value --}} -
    {{itemData.data.armorValue}}
    +
    {{item.system.armorValue}}
    {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} {{/each}} @@ -125,16 +137,15 @@ documentType='item' type='shield'}} {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true type='equipment'}} {{!-- storage location --}} -
    {{localize 'DS4.StorageLocation'}}
    {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - {{#each itemsByType.equipment as |itemData id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData isEquipable=true + {{#each itemsByType.equipment as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true hasQuantity=true}} {{!-- storage location --}} - + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} {{/each}} @@ -148,15 +159,14 @@ documentType='item' type='equipment'}}
      {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs hasQuantity=true type='loot'}} {{!-- storage location --}} -
      {{localize 'DS4.StorageLocation'}}
      {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - {{#each itemsByType.loot as |itemData id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData hasQuantity=true}} + {{#each itemsByType.loot as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item hasQuantity=true}} {{!-- storage location --}} - + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} {{/each}}
    diff --git a/templates/sheets/actor/components/profile.hbs b/templates/sheets/actor/components/profile.hbs index 790412ef..86884939 100644 --- a/templates/sheets/actor/components/profile.hbs +++ b/templates/sheets/actor/components/profile.hbs @@ -6,24 +6,24 @@ SPDX-License-Identifier: MIT --}}
    - {{#each data.data.profile as |profile-data-value profile-data-key|}} + {{#each data.system.profile as |profile-data-value profile-data-key|}} {{#if (and (ne profile-data-key 'biography') (ne profile-data-key 'specialCharacteristics'))}}
    -
    {{/if}} {{/each}}
    -
    diff --git a/templates/sheets/actor/components/talent-rank-equation.hbs b/templates/sheets/actor/components/talent-rank-equation.hbs deleted file mode 100644 index 3480b5f1..00000000 --- a/templates/sheets/actor/components/talent-rank-equation.hbs +++ /dev/null @@ -1,45 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -{{!-- ======================================================================== --}} -{{!-- INLINE PARTIAL DEFINITIONS --}} -{{!-- ======================================================================== --}} - -{{!-- -!-- Render an input element for a rank value property of an item. -!-- @param talentRank: The talentRank -!-- @param property: The key of the property in item.data (if 'base', the max value is set automatically) -!-- @param disabled: If given, is placed plainly into the input as HTML property; meant to be set to "disabled" to -disable the input element -!-- @param localizeString: The string to use as key for the localized tooltip ---}} -{{#*inline "talentRankValue"}} - -{{/inline}} - -{{!-- ======================================================================== --}} - -{{!-- -!-- Render an input element for a rank value property of an item. -!-- @param talentRank: The talent rank ---}} -
    - {{!-- acquired rank --}} - {{> talentRankValue talentRank=talentRank property='base' localizeString='DS4.TalentRankBase'}} -
    ( {{localize "DS4.TalentRankOf"}}
    - {{!-- maximum acquirable rank --}} - {{> talentRankValue talentRank=talentRank property='max' localizeString='DS4.TalentRankMax'}} -
    ) +
    - {{!-- additional ranks --}} - {{> talentRankValue talentRank=talentRank property='mod' localizeString='DS4.TalentRankMod'}} -
    =
    - {{!-- derived total rank --}} - {{> talentRankValue talentRank=talentRank property='total' localizeString='DS4.TalentRankTotal' - disabled='disabled'}} -
    diff --git a/templates/sheets/actor/limited-sheet.hbs b/templates/sheets/actor/limited-sheet.hbs new file mode 100644 index 00000000..66497eb2 --- /dev/null +++ b/templates/sheets/actor/limited-sheet.hbs @@ -0,0 +1,21 @@ +{{!-- +SPDX-FileCopyrightText: 2022 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{#> systems/ds4/templates/sheets/actor/components/actor-header.hbs}} + {{/systems/ds4/templates/sheets/actor/components/actor-header.hbs}} + + + {{!-- Sheet Body --}} +
    + {{#if (eq data.type 'character')}} + {{> systems/ds4/templates/sheets/actor/components/biography.hbs}} + {{else}} + {{> systems/ds4/templates/sheets/actor/components/description.hbs}} + {{/if}} +
    +
    diff --git a/templates/sheets/actor/tabs/character-abilities.hbs b/templates/sheets/actor/tabs/character-abilities.hbs index d71f2210..55857a7b 100644 --- a/templates/sheets/actor/tabs/character-abilities.hbs +++ b/templates/sheets/actor/tabs/character-abilities.hbs @@ -12,13 +12,13 @@ SPDX-License-Identifier: MIT
      {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='talent'}} {{!-- rank --}} -
      {{localize 'DS4.TalentRank'}}
      {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - {{#each itemsByType.talent as |itemData id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData}} + {{#each itemsByType.talent as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} {{!-- rank --}} - {{> systems/ds4/templates/sheets/actor/components/talent-rank-equation.hbs talentRank=itemData.data.rank}} +
      {{toRomanNumerals item.system.rank.total}}
      {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} {{/each}}
    @@ -31,8 +31,8 @@ SPDX-License-Identifier: MIT {{#unless (isEmpty itemsByType.racialAbility)}}
      {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='racialAbility'}} - {{#each itemsByType.racialAbility as |itemData id|}} - {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData}} + {{#each itemsByType.racialAbility as |item id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} {{/each}}
    {{/unless}} @@ -44,8 +44,8 @@ SPDX-License-Identifier: MIT {{#unless (isEmpty itemsByType.language)}}
      {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='language'}} - {{#each itemsByType.language as |itemData id|}} - {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData}} + {{#each itemsByType.language as |item id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} {{/each}}
    {{/unless}} @@ -57,8 +57,8 @@ SPDX-License-Identifier: MIT {{#unless (isEmpty itemsByType.alphabet)}}
      {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='alphabet'}} - {{#each itemsByType.alphabet as |itemData id|}} - {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData}} + {{#each itemsByType.alphabet as |item id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} {{/each}}
    {{/unless}} diff --git a/templates/sheets/actor/tabs/creature-abilities.hbs b/templates/sheets/actor/tabs/creature-abilities.hbs index dc3ee119..b0ea8d9d 100644 --- a/templates/sheets/actor/tabs/creature-abilities.hbs +++ b/templates/sheets/actor/tabs/creature-abilities.hbs @@ -9,8 +9,8 @@ SPDX-License-Identifier: MIT {{#unless (isEmpty itemsByType.specialCreatureAbility)}}
      {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='specialCreatureAbility'}} - {{#each itemsByType.specialCreatureAbility as |itemData id|}} - {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData}} + {{#each itemsByType.specialCreatureAbility as |item id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} {{/each}}
    {{/unless}} diff --git a/templates/sheets/actor/tabs/description.hbs b/templates/sheets/actor/tabs/description.hbs index abb9471a..3f202525 100644 --- a/templates/sheets/actor/tabs/description.hbs +++ b/templates/sheets/actor/tabs/description.hbs @@ -5,6 +5,5 @@ SPDX-License-Identifier: MIT --}}
    - {{editor content=data.data.baseInfo.description target="data.baseInfo.description" button=true owner=owner - editable=editable}} + {{> systems/ds4/templates/sheets/actor/components/description.hbs}}
    diff --git a/templates/sheets/actor/tabs/effects.hbs b/templates/sheets/actor/tabs/effects.hbs index ed7fd761..b799fc48 100644 --- a/templates/sheets/actor/tabs/effects.hbs +++ b/templates/sheets/actor/tabs/effects.hbs @@ -6,7 +6,7 @@ SPDX-License-Identifier: MIT --}}
    - {{#unless (isEmpty data.effects)}} + {{#unless (isEmpty enrichedEffects)}}
      {{> systems/ds4/templates/sheets/actor/components/effect-list-header.hbs}} {{#each enrichedEffects as |effectData id| }} diff --git a/templates/sheets/actor/tabs/spells.hbs b/templates/sheets/actor/tabs/spells.hbs index 54ce2a0d..cee615e6 100644 --- a/templates/sheets/actor/tabs/spells.hbs +++ b/templates/sheets/actor/tabs/spells.hbs @@ -25,7 +25,7 @@ SPDX-License-Identifier: MIT {{/inline}} {{!-- -!-- Three templates based on the "unit" template for displaying values with unit. +!-- Two templates based on the "unit" template for displaying values with unit. !-- Both accept a `config` object holding the unitNames and unitAbbr instead of !-- directly handing over the latter two. !-- @param titleKey: The key of the localized title to use. @@ -35,11 +35,6 @@ SPDX-License-Identifier: MIT titleKey=titleKey}} {{/inline}} -{{#*inline "customTemporalUnit"}} -{{> unit unitNames=config.i18n.customTemporalUnits unitAbbrs=config.i18n.customTemporalUnitsAbbr unitDatum=unitDatum -titleKey=titleKey}} -{{/inline}} - {{#*inline "distanceUnit"}} {{> unit unitNames=config.i18n.distanceUnits unitAbbrs=config.i18n.distanceUnitsAbbr unitDatum=unitDatum titleKey=titleKey}} @@ -55,45 +50,48 @@ titleKey=titleKey}} {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hideDescription=true type='spell'}} {{!-- spell type --}} -
      {{localize 'DS4.SpellTypeAbbr'}}
      - {{!-- spell bonus --}} -
      {{localize 'DS4.SpellBonusAbbr'}}
      + {{!-- spell modifier --}} +
      {{localize + 'DS4.SpellModifierAbbr'}}
      {{!-- max. distance --}} -
      +
      {{!-- duration --}}
      {{!-- cooldown duration --}} -
      +
      {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - {{#each itemsByType.spell as |itemData id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData isEquipable=true + {{#each itemsByType.spell as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true hideDescription=true}} {{!-- spell type --}} + src="{{lookup @root/config.icons.spellTypes item.system.spellType}}" + title="{{lookup @root/config.i18n.spellTypes item.system.spellType}}" /> - {{!-- spell bonus --}} - + {{!-- spell modifier --}} +
      {{#if (eq item.system.spellModifier.complex + '')}}{{item.system.spellModifier.numerical}}{{else}}{{item.system.spellModifier.complex}}{{/if}} +
      {{!-- max. distance --}} - {{> distanceUnit titleKey='DS4.SpellMaxDistance' unitDatum=itemData.data.maxDistance - config=../../config}} + {{> distanceUnit titleKey='DS4.SpellDistance' unitDatum=item.system.maxDistance + config=@root/config}} {{!-- duration --}} - {{> customTemporalUnit titleKey='DS4.SpellDuration' unitDatum=itemData.data.duration config=../../config}} + {{> temporalUnit titleKey='DS4.SpellDuration' unitDatum=item.system.duration config=@root/config}} {{!-- cooldown duration --}} - {{> temporalUnit titleKey='DS4.SpellCooldownDuration' unitDatum=itemData.data.cooldownDuration - config=../../config}} +
      {{lookup @root/config.i18n.cooldownDurations + item.system.cooldownDuration}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} {{/each}}
    diff --git a/templates/sheets/item/components/effect-list-entry.hbs b/templates/sheets/item/components/effect-list-entry.hbs index 9d4a323e..47c452ce 100644 --- a/templates/sheets/item/components/effect-list-entry.hbs +++ b/templates/sheets/item/components/effect-list-entry.hbs @@ -9,12 +9,12 @@ SPDX-License-Identifier: MIT !-- @param effectData: The data of the item. --}}
  • - {{!-- icon --}} - {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.icon - alt=(localize "DS4.DocumentImageAltText" name=effectData.label) title=effectData.label}} + {{!-- img --}} + {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.img + alt=(localize "DS4.DocumentImageAltText" name=effectData.name) title=effectData.name}} - {{!-- label --}} -
    {{effectData.label}}
    + {{!-- name --}} +
    {{effectData.name}}
    {{!-- control button group --}} {{> systems/ds4/templates/sheets/shared/components/control-button-group.hbs documentType="effect" diff --git a/templates/sheets/item/components/effect-list-header.hbs b/templates/sheets/item/components/effect-list-header.hbs index 6b0cc803..625163a0 100644 --- a/templates/sheets/item/components/effect-list-header.hbs +++ b/templates/sheets/item/components/effect-list-header.hbs @@ -11,8 +11,8 @@ SPDX-License-Identifier: MIT {{!-- icon --}}
    - {{!-- label --}} -
    {{localize 'DS4.EffectLabel'}}
    + {{!-- name --}} +
    {{localize 'DS4.EffectName'}}
    {{!-- control buttons placeholder --}}
    diff --git a/templates/sheets/item/components/properties/armor.hbs b/templates/sheets/item/components/properties/armor.hbs index b226ff63..458bd65b 100644 --- a/templates/sheets/item/components/properties/armor.hbs +++ b/templates/sheets/item/components/properties/armor.hbs @@ -7,26 +7,18 @@ SPDX-License-Identifier: MIT

    {{localize 'DS4.ItemPropertiesArmor'}}

    - +
    - + {{selectOptions config.i18n.armorTypes selected=data.system.armorType}}
    - +
    - + {{selectOptions config.i18n.armorMaterialTypes selected=data.system.armorMaterialType}}
    diff --git a/templates/sheets/item/components/properties/equipable.hbs b/templates/sheets/item/components/properties/equipable.hbs index f8245089..899effd3 100644 --- a/templates/sheets/item/components/properties/equipable.hbs +++ b/templates/sheets/item/components/properties/equipable.hbs @@ -7,8 +7,8 @@ SPDX-License-Identifier: MIT

    {{localize 'DS4.ItemPropertiesEquipable'}}

    - - + +
    diff --git a/templates/sheets/item/components/properties/physical.hbs b/templates/sheets/item/components/properties/physical.hbs index 889e4895..bd15ac0e 100644 --- a/templates/sheets/item/components/properties/physical.hbs +++ b/templates/sheets/item/components/properties/physical.hbs @@ -7,32 +7,28 @@ SPDX-License-Identifier: MIT

    {{localize 'DS4.ItemPropertiesPhysical'}}

    - - + +
    - +
    - + {{selectOptions config.i18n.itemAvailabilities selected=data.system.availability}}
    {{#if isOwned}}
    - - + +
    - - + +
    {{/if}}
    diff --git a/templates/sheets/item/components/properties/protective.hbs b/templates/sheets/item/components/properties/protective.hbs index 7152eabf..50190196 100644 --- a/templates/sheets/item/components/properties/protective.hbs +++ b/templates/sheets/item/components/properties/protective.hbs @@ -7,8 +7,8 @@ SPDX-License-Identifier: MIT

    {{localize 'DS4.ItemPropertiesProtective'}}

    - - + +
    diff --git a/templates/sheets/item/components/properties/special-creature-ability.hbs b/templates/sheets/item/components/properties/special-creature-ability.hbs index 6dc2d3f5..293f2697 100644 --- a/templates/sheets/item/components/properties/special-creature-ability.hbs +++ b/templates/sheets/item/components/properties/special-creature-ability.hbs @@ -7,9 +7,9 @@ SPDX-License-Identifier: MIT

    {{localize 'DS4.ItemPropertiesSpecialCreatureAbility'}}

    -
    diff --git a/templates/sheets/item/components/properties/spell.hbs b/templates/sheets/item/components/properties/spell.hbs index bfeba19e..2d1069b8 100644 --- a/templates/sheets/item/components/properties/spell.hbs +++ b/templates/sheets/item/components/properties/spell.hbs @@ -7,106 +7,112 @@ SPDX-License-Identifier: MIT

    {{localize 'DS4.ItemPropertiesSpell'}}

    - - + +
    + +
    - +
    - +
    +
    +
    + +
    + +
    +
    +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    - +
    - + {{selectOptions config.i18n.cooldownDurations selected=data.system.cooldownDuration}}
    -
    - -
    - - -
    -
    -
    - -
    - - -
    -
    -
    - -
    - - -
    -
    -
    - -
    - - -
    -
    -
    - -
    - - - - - - +
    + +
    + {{#each config.i18n.spellGroups as |value key|}} +
    + + +
    + {{/each}}
    - - + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    +
    + +
    + {{data.system.price}} +
    diff --git a/templates/sheets/item/components/properties/talent.hbs b/templates/sheets/item/components/properties/talent.hbs index 3dce85cf..bb8e70b3 100644 --- a/templates/sheets/item/components/properties/talent.hbs +++ b/templates/sheets/item/components/properties/talent.hbs @@ -9,18 +9,18 @@ SPDX-License-Identifier: MIT
    - - - - + + + +
    - - - - {{data.data.rank.total}} + + + + {{data.system.rank.total}}
    diff --git a/templates/sheets/item/components/properties/weapon.hbs b/templates/sheets/item/components/properties/weapon.hbs index 0458d054..703a0c25 100644 --- a/templates/sheets/item/components/properties/weapon.hbs +++ b/templates/sheets/item/components/properties/weapon.hbs @@ -7,25 +7,21 @@ SPDX-License-Identifier: MIT

    {{localize 'DS4.ItemPropertiesWeapon'}}

    - +
    - + {{selectOptions config.i18n.attackTypes selected=data.system.attackType}}
    - - + +
    - - + +
    diff --git a/templates/sheets/item/tabs/description.hbs b/templates/sheets/item/tabs/description.hbs index 2bd1e97c..cde3089c 100644 --- a/templates/sheets/item/tabs/description.hbs +++ b/templates/sheets/item/tabs/description.hbs @@ -5,6 +5,6 @@ SPDX-License-Identifier: MIT --}}
    - {{editor content=data.data.description target="data.description" button=true owner=owner - editable=editable}} + {{editor data.system.description target="system.description" button=true owner=owner + editable=editable engine="prosemirror"}}
    diff --git a/templates/sheets/shared/components/add-button.hbs b/templates/sheets/shared/components/add-button.hbs index 1fc86419..1b7f0089 100644 --- a/templates/sheets/shared/components/add-button.hbs +++ b/templates/sheets/shared/components/add-button.hbs @@ -11,10 +11,12 @@ SPDX-License-Identifier: MIT !-- @param title: The title to use for the link element (will be localized) !-- @param type: An optional property to use as data-type attribute }} -
    +{{#if @root/editable}} + +{{/if}} diff --git a/templates/sheets/shared/components/control-button-group.hbs b/templates/sheets/shared/components/control-button-group.hbs index dffef3e0..007e28ae 100644 --- a/templates/sheets/shared/components/control-button-group.hbs +++ b/templates/sheets/shared/components/control-button-group.hbs @@ -13,8 +13,10 @@ SPDX-License-Identifier: MIT !-- @param deleteTitle: The title to use for the delete link element (will be localized) --}}
    + {{#if @root/editable}} + {{/if}}
    diff --git a/tools/bump-version.js b/tools/bump-version.js index 8038837b..825b6631 100644 --- a/tools/bump-version.js +++ b/tools/bump-version.js @@ -7,24 +7,30 @@ import semver from "semver"; import yargs from "yargs"; import { hideBin } from "yargs/helpers"; -const repository = "dungeonslayers/ds4"; -const gitlabURL = "https://git.f3l.de"; +const packageType = "system"; +const repositoryOwner = process.env.CI_REPO_OWNER; +const repositoryName = process.env.CI_REPO_NAME; +const repositoryURL = process.env.CI_REPO_URL; +const forgeURL = process.env.CI_FORGE_URL; -const getLicenseURL = (version) => `${gitlabURL}/${repository}/-/raw/${version}/LICENSE.md`; -const getReadmeURL = (version) => `${gitlabURL}/${repository}/-/raw/${version}/README.md`; -const getChangelogURL = (version) => `${gitlabURL}/${repository}/-/releases/${version}`; -const getDownloadURL = (version) => `${gitlabURL}/${repository}/-/releases/${version}/downloads/ds4.zip`; +const getManifestUrl = (channel) => + `${forgeURL}/api/packages/${repositoryOwner}/generic/${repositoryName}/${channel}/${packageType}.json`; +const getDownloadURL = (version) => `${repositoryURL}/releases/download/${version}/${repositoryName}.zip`; +const bugsURL = `${repositoryURL}/issues`; +const getChangelogURL = (version) => `${repositoryURL}/releases/tag/${version}`; +const getReadmeURL = (version) => `${repositoryURL}/raw/tag/${version}/README.md`; +const getLicenseURL = (version) => `${repositoryURL}/raw/tag/${version}/LICENSE.md`; -const manifestPath = "./system.json"; +const manifestPath = `${packageType}.json`; /** * Get the contents of the manifest file as object. * @returns {unknown} An object describing the manifest */ function getManifest() { - if (fs.existsSync(manifestPath)) { - return fs.readJSONSync(manifestPath); - } + if (fs.existsSync(manifestPath)) { + return fs.readJSONSync(manifestPath); + } } /** @@ -34,11 +40,20 @@ function getManifest() { * @returns {string | null} The target version */ function getTargetVersion(currentVersion, release) { - if (["major", "premajor", "minor", "preminor", "patch", "prepatch", "prerelease"].includes(release)) { - return semver.inc(currentVersion, release); - } else { - return semver.valid(release); - } + if (["major", "premajor", "minor", "preminor", "patch", "prepatch", "prerelease"].includes(release)) { + return semver.inc(currentVersion, release); + } else { + return semver.valid(release); + } +} + +/** + * Get the channel for a given version. + * @param {string} version The version for which to get the channel + * @returns {"latest" | "beta"} The channel for the version + */ +function getChannel(version) { + return version.includes("-") ? "beta" : "latest"; } /** @@ -46,40 +61,43 @@ function getTargetVersion(currentVersion, release) { * @param {semver.ReleaseType | string} release Either a semver release type or a valid semver version */ function bumpVersion(release) { - if (!release) { - throw new Error("Missing release type"); - } + if (!release) { + throw new Error("Missing release type"); + } - const packageJson = fs.readJSONSync("package.json"); - const manifest = getManifest(); - if (!manifest) throw new Error("Manifest JSON not found"); + const packageJson = fs.readJSONSync("package.json"); + const manifest = getManifest(); + if (!manifest) throw new Error("Manifest JSON not found"); - const currentVersion = packageJson.version; - const targetVersion = getTargetVersion(currentVersion, release); + const currentVersion = packageJson.version; + const targetVersion = getTargetVersion(currentVersion, release); - if (!targetVersion) { - throw new Error("Incorrect version arguments"); - } - if (targetVersion === currentVersion) { - throw new Error("Target version is identical to current version"); - } + if (!targetVersion) { + throw new Error("Incorrect version arguments"); + } + if (targetVersion === currentVersion) { + throw new Error("Target version is identical to current version"); + } - console.log(`Bumping version number to '${targetVersion}'`); - packageJson.version = targetVersion; - fs.writeJSONSync("package.json", packageJson, { spaces: 4 }); - manifest.license = getLicenseURL(targetVersion); - manifest.readme = getReadmeURL(targetVersion); - manifest.changelog = getChangelogURL(targetVersion); - manifest.version = targetVersion; - manifest.download = getDownloadURL(targetVersion); - fs.writeJSONSync(manifestPath, manifest, { spaces: 4 }); + console.log(`Bumping version number to '${targetVersion}'`); + packageJson.version = targetVersion; + fs.writeJSONSync("package.json", packageJson, { spaces: 2 }); + manifest.version = targetVersion; + manifest.url = repositoryURL; + manifest.manifest = getManifestUrl(getChannel(targetVersion)); + manifest.download = getDownloadURL(targetVersion); + manifest.bugs = bugsURL; + manifest.changelog = getChangelogURL(targetVersion); + manifest.readme = getReadmeURL(targetVersion); + manifest.license = getLicenseURL(targetVersion); + fs.writeJSONSync(manifestPath, manifest, { spaces: 2 }); } const argv = yargs(hideBin(process.argv)).usage("Usage: $0").option("release", { - alias: "r", - type: "string", - demandOption: true, - description: "Either a semver release type or a valid semver version", + alias: "r", + type: "string", + demandOption: true, + description: "Either a semver release type or a valid semver version", }).argv; const release = argv.r; bumpVersion(release); diff --git a/tools/convert-packs-to-json.js b/tools/convert-packs-to-json.js deleted file mode 100644 index 66f034c0..00000000 --- a/tools/convert-packs-to-json.js +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import promises from "node:fs/promises"; -import path from "node:path"; - -import { distDirectory, sourceDirectory } from "./const.js"; -import { convertPackFileToJSONFile } from "./json-pack-tools.js"; - -const packsDistDirectory = path.join(distDirectory, "packs"); -const packsSourceDirectory = "packs"; - -console.log(`Converting pack files in ${packsDistDirectory} to json files in ${packsSourceDirectory}:`); - -const conversionPromises = (await promises.readdir(packsDistDirectory, { withFileTypes: true })) - .filter((dirent) => dirent.isFile() && path.extname(dirent.name) === ".db") - .map(async (dirent) => convertPackFileToJSONFile(path.join(packsDistDirectory, dirent.name), packsSourceDirectory)); - -await Promise.all(conversionPromises); diff --git a/tools/json-pack-tools.js b/tools/json-pack-tools.js deleted file mode 100644 index 187ce9e5..00000000 --- a/tools/json-pack-tools.js +++ /dev/null @@ -1,95 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import promises from "node:fs/promises"; -import path from "node:path"; -import Datastore from "@seald-io/nedb"; - -/** - * Removes unwanted data from a pack entry - */ -function cleanPackEntry(entry, cleanSourceId = true) { - if (cleanSourceId) { - delete entry.flags?.core?.sourceId; - } - Object.keys(entry.flags).forEach((scope) => { - if (Object.keys(entry.flags[scope]).length === 0) { - delete entry.flags[scope]; - } - }); - if (entry.permission) entry.permission = { default: 0 }; - - const embeddedDocumentCollections = [ - "drawings", - "effects", - "items", - "lights", - "notes", - "results", - "sounds", - "templates", - "tiles", - "tokens", - "walls", - ]; - embeddedDocumentCollections - .flatMap((embeddedDocumentCollection) => entry[embeddedDocumentCollection] ?? []) - .forEach((embeddedEntry) => cleanPackEntry(embeddedEntry, false)); - return entry; -} - -/** - * Converts a JSON string containing an array to a Pack (NeDB) string. - * @param {string} jsonString The input JSON string - * @returns {string} The resulting Pack string - */ -export function convertJSONToPack(jsonString) { - return ( - JSON.parse(jsonString) - .map((entry) => cleanPackEntry(entry)) - .map((entry) => JSON.stringify(entry)) - .join("\n") + "\n" - ); -} - -/** - * Converts a pack file (NeDB) to a JSON string. - * @param {string} filename The name of the pack file - * @returns {Promise>} A promise that resolves to an array of the documents in the pack file - */ -function convertPackFileToJSON(filename) { - const db = new Datastore({ filename, autoload: true }); - return new Promise((resolve, reject) => { - db.find({}, (err, docs) => { - if (err) { - reject(err); - } else { - resolve( - JSON.stringify( - docs.map((entry) => cleanPackEntry(entry)), - undefined, - 4, - ) + "\n", - ); - } - }); - }); -} - -/** - * Converts a pack file (NeDB) to a JSON file and puts it in the given directory. If no directory is given, it is put - * into the same directory as the pack file. - * @param {string} filename The name of the pack file - * @param {string} [directory] A directory to put the json file into - * @returns {Promise} A promise that resolves once the JSON file has been written - */ -export async function convertPackFileToJSONFile(filename, directory) { - if (directory === undefined) { - directory = path.dirname(filename); - } - console.log(" ", path.basename(filename)); - const jsonFilePath = path.join(directory, `${path.basename(filename, path.extname(filename))}.json`); - const json = await convertPackFileToJSON(filename); - await promises.writeFile(jsonFilePath, json); -} diff --git a/tools/link-package.js b/tools/link-package.js index a305a9e2..7fb452e8 100644 --- a/tools/link-package.js +++ b/tools/link-package.js @@ -13,43 +13,43 @@ import { destinationDirectory, distDirectory, foundryconfigFile, name } from "./ * Get the data path of Foundry VTT based on what is configured in the {@link foundryconfigFile}. */ function getDataPath() { - const config = fs.readJSONSync(foundryconfigFile); + const config = fs.readJSONSync(foundryconfigFile); - if (config?.dataPath) { - if (!fs.existsSync(path.resolve(config.dataPath))) { - throw new Error("User data path invalid, no Data directory found"); - } - return path.resolve(config.dataPath); - } else { - throw new Error(`No user data path defined in ${foundryconfigFile}`); + if (config?.dataPath) { + if (!fs.existsSync(path.resolve(config.dataPath))) { + throw new Error("User data path invalid, no Data directory found"); } + return path.resolve(config.dataPath); + } else { + throw new Error(`No user data path defined in ${foundryconfigFile}`); + } } /** * Link the built package to the user data folder. * @param {boolean} clean Whether to remove the link instead of creating it */ async function linkPackage(clean) { - if (!fs.existsSync(path.resolve("system.json"))) { - throw new Error("Could not find system.json"); - } + if (!fs.existsSync(path.resolve("system.json"))) { + throw new Error("Could not find system.json"); + } - const linkDirectory = path.resolve(getDataPath(), "Data", destinationDirectory, name); + const linkDirectory = path.resolve(getDataPath(), "Data", destinationDirectory, name); - if (clean) { - console.log(`Removing link to built package at ${linkDirectory}.`); - await fs.remove(linkDirectory); - } else if (!fs.existsSync(linkDirectory)) { - console.log(`Linking built package to ${linkDirectory}.`); - await fs.ensureDir(path.resolve(linkDirectory, "..")); - await fs.symlink(path.resolve(".", distDirectory), linkDirectory); - } + if (clean) { + console.log(`Removing link to built package at ${linkDirectory}.`); + await fs.remove(linkDirectory); + } else if (!fs.existsSync(linkDirectory)) { + console.log(`Linking built package to ${linkDirectory}.`); + await fs.ensureDir(path.resolve(linkDirectory, "..")); + await fs.symlink(path.resolve(".", distDirectory), linkDirectory); + } } const argv = yargs(hideBin(process.argv)).usage("Usage: $0").option("clean", { - alias: "c", - type: "boolean", - default: false, - description: "Remove the link instead of creating it", + alias: "c", + type: "boolean", + default: false, + description: "Remove the link instead of creating it", }).argv; const clean = argv.c; await linkPackage(clean); diff --git a/tools/packs.sh b/tools/packs.sh new file mode 100755 index 00000000..3a77ca93 --- /dev/null +++ b/tools/packs.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: 2023 Johannes Loher +# +# SPDX-License-Identifier: MIT + +pack() { + packs=$(ls -1 ./packs) + for pack in $packs; do + pnpm exec fvtt package pack --type=System --id=ds4 --compendiumName=$pack --inputDirectory=./packs/$pack --outputDirectory=./dist/packs + done +} + +unpack() { + packs=$(ls -1 ./dist/packs) + rm -rf ./packs/* + for pack in $packs; do + pnpm exec fvtt package unpack --type=System --id=ds4 --compendiumName=$pack --inputDirectory=./dist/packs --outputDirectory=./packs/$pack + done +} + +case $1 in + "pack") pack + ;; + "unpack") unpack + ;; + *) echo "Usage: $0 " + ;; +esac diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index c394325f..b587f711 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,4 +1,4 @@ { - "extends": "./tsconfig.json", - "include": ["src", "spec", "*.js"] + "extends": "./tsconfig.json", + "include": ["src", "spec", "*.js"] } diff --git a/tsconfig.json b/tsconfig.json index b8fbff11..9a2ce2d3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,13 +1,20 @@ { - "compilerOptions": { - "target": "ES2021", - "lib": ["ES2021", "DOM"], - "types": ["@league-of-foundry-developers/foundry-vtt-types"], - "esModuleInterop": true, - "moduleResolution": "node", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noUncheckedIndexedAccess": true - }, - "include": ["src"] + "compilerOptions": { + "outDir": "dist", + "target": "ES2021", + "lib": ["ES2021", "DOM"], + "types": ["@types/jquery", "handlebars"], + "esModuleInterop": true, + "moduleResolution": "node", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + "resolveJsonModule": true, + "verbatimModuleSyntax": true, + "checkJs": false, + "allowJs": true, + "skipLibCheck": true + }, + "include": ["src", "client", "common"] } diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 00000000..244a02e5 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,11 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + setupFiles: ["./spec/setup.ts"], + }, +}); diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index f83951c5..00000000 --- a/yarn.lock +++ /dev/null @@ -1,8798 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 5 - cacheKey: 8 - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/code-frame@npm:7.16.7" - dependencies: - "@babel/highlight": ^7.16.7 - checksum: db2f7faa31bc2c9cf63197b481b30ea57147a5fc1a6fab60e5d6c02cdfbf6de8e17b5121f99917b3dabb5eeb572da078312e70697415940383efc140d4e0808b - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.16.4": - version: 7.16.8 - resolution: "@babel/compat-data@npm:7.16.8" - checksum: 10da2dac5ea9589c251412b00920889910e476c1ab24cd7095577635bc3a27c785151c89db4e26285fd39f509510ec29ab9d7e721f4fc16e4aec221cacde784b - languageName: node - linkType: hard - -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.7.2, @babel/core@npm:^7.8.0": - version: 7.16.12 - resolution: "@babel/core@npm:7.16.12" - dependencies: - "@babel/code-frame": ^7.16.7 - "@babel/generator": ^7.16.8 - "@babel/helper-compilation-targets": ^7.16.7 - "@babel/helper-module-transforms": ^7.16.7 - "@babel/helpers": ^7.16.7 - "@babel/parser": ^7.16.12 - "@babel/template": ^7.16.7 - "@babel/traverse": ^7.16.10 - "@babel/types": ^7.16.8 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.1.2 - semver: ^6.3.0 - source-map: ^0.5.0 - checksum: 29b56f3cb7c329fc038a2efaccf64ac3025835676b3d90f57f2265b6acd477a970114d09021b38d019ac8f20b2bb1596a9e79ce1f820d6b8cf0e4a802891817c - languageName: node - linkType: hard - -"@babel/generator@npm:^7.16.8, @babel/generator@npm:^7.7.2": - version: 7.16.8 - resolution: "@babel/generator@npm:7.16.8" - dependencies: - "@babel/types": ^7.16.8 - jsesc: ^2.5.1 - source-map: ^0.5.0 - checksum: 83af38b34735605c9d5f774c87a46c2cffaf666b28e9eeba883b2d7076412257e5c2264c26d9740ce44da6955fdaf857659391db02c012714a2a6dc19e403105 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-compilation-targets@npm:7.16.7" - dependencies: - "@babel/compat-data": ^7.16.4 - "@babel/helper-validator-option": ^7.16.7 - browserslist: ^4.17.5 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 7238aaee78c011a42fb5ca92e5eff098752f7b314c2111d7bb9cdd58792fcab1b9c819b59f6a0851dc210dc09dc06b30d130a23982753e70eb3111bc65204842 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-environment-visitor@npm:7.16.7" - dependencies: - "@babel/types": ^7.16.7 - checksum: c03a10105d9ebd1fe632a77356b2e6e2f3c44edba9a93b0dc3591b6a66bd7a2e323dd9502f9ce96fc6401234abff1907aa877b6674f7826b61c953f7c8204bbe - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-function-name@npm:7.16.7" - dependencies: - "@babel/helper-get-function-arity": ^7.16.7 - "@babel/template": ^7.16.7 - "@babel/types": ^7.16.7 - checksum: fc77cbe7b10cfa2a262d7a37dca575c037f20419dfe0c5d9317f589599ca24beb5f5c1057748011159149eaec47fe32338c6c6412376fcded68200df470161e1 - languageName: node - linkType: hard - -"@babel/helper-get-function-arity@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-get-function-arity@npm:7.16.7" - dependencies: - "@babel/types": ^7.16.7 - checksum: 25d969fb207ff2ad5f57a90d118f6c42d56a0171022e200aaa919ba7dc95ae7f92ec71cdea6c63ef3629a0dc962ab4c78e09ca2b437185ab44539193f796e0c3 - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-hoist-variables@npm:7.16.7" - dependencies: - "@babel/types": ^7.16.7 - checksum: 6ae1641f4a751cd9045346e3f61c3d9ec1312fd779ab6d6fecfe2a96e59a481ad5d7e40d2a840894c13b3fd6114345b157f9e3062fc5f1580f284636e722de60 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-module-imports@npm:7.16.7" - dependencies: - "@babel/types": ^7.16.7 - checksum: ddd2c4a600a2e9a4fee192ab92bf35a627c5461dbab4af31b903d9ba4d6b6e59e0ff3499fde4e2e9a0eebe24906f00b636f8b4d9bd72ff24d50e6618215c3212 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-module-transforms@npm:7.16.7" - dependencies: - "@babel/helper-environment-visitor": ^7.16.7 - "@babel/helper-module-imports": ^7.16.7 - "@babel/helper-simple-access": ^7.16.7 - "@babel/helper-split-export-declaration": ^7.16.7 - "@babel/helper-validator-identifier": ^7.16.7 - "@babel/template": ^7.16.7 - "@babel/traverse": ^7.16.7 - "@babel/types": ^7.16.7 - checksum: 6e930ce776c979f299cdbeaf80187f4ab086d75287b96ecc1c6896d392fcb561065f0d6219fc06fa79b4ceb4bbdc1a9847da8099aba9b077d0a9e583500fb673 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.16.7 - resolution: "@babel/helper-plugin-utils@npm:7.16.7" - checksum: d08dd86554a186c2538547cd537552e4029f704994a9201d41d82015c10ed7f58f9036e8d1527c3760f042409163269d308b0b3706589039c5f1884619c6d4ce - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-simple-access@npm:7.16.7" - dependencies: - "@babel/types": ^7.16.7 - checksum: 8d22c46c5ec2ead0686c4d5a3d1d12b5190c59be676bfe0d9d89df62b437b51d1a3df2ccfb8a77dded2e585176ebf12986accb6d45a18cff229eef3b10344f4b - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-split-export-declaration@npm:7.16.7" - dependencies: - "@babel/types": ^7.16.7 - checksum: e10aaf135465c55114627951b79115f24bc7af72ecbb58d541d66daf1edaee5dde7cae3ec8c3639afaf74526c03ae3ce723444e3b5b3dc77140c456cd84bcaa1 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-validator-identifier@npm:7.16.7" - checksum: dbb3db9d184343152520a209b5684f5e0ed416109cde82b428ca9c759c29b10c7450657785a8b5c5256aa74acc6da491c1f0cf6b784939f7931ef82982051b69 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-validator-option@npm:7.16.7" - checksum: c5ccc451911883cc9f12125d47be69434f28094475c1b9d2ada7c3452e6ac98a1ee8ddd364ca9e3f9855fcdee96cdeafa32543ebd9d17fee7a1062c202e80570 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helpers@npm:7.16.7" - dependencies: - "@babel/template": ^7.16.7 - "@babel/traverse": ^7.16.7 - "@babel/types": ^7.16.7 - checksum: 75504c76b66a29b91f954fcc0867dfe275a4cfba5b44df6d64405df74ea72f967fccfa63d62c31c423c5502d113290000c581e0e4858a214f0303d7ecf55c29f - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.16.7": - version: 7.16.10 - resolution: "@babel/highlight@npm:7.16.10" - dependencies: - "@babel/helper-validator-identifier": ^7.16.7 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 1f1bdd752a90844f4efc22166a46303fb651ba0fd75a06daba3ebae2575ab3edc1da9827c279872a3aaf305f50a18473c5fa1966752726a2b253065fd4c0745e - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.10, @babel/parser@npm:^7.16.12, @babel/parser@npm:^7.16.7": - version: 7.16.12 - resolution: "@babel/parser@npm:7.16.12" - bin: - parser: ./bin/babel-parser.js - checksum: af287f0f3dfa564958a7dddfeb62e08c0de9ce9bd8447fcde0997da26ec477bf19f37161b9d970e2c7e0d1f77e441258907d3347beddd0d42cae85ed46947703 - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 - languageName: node - linkType: hard - -"@babel/plugin-syntax-bigint@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.8.3": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-meta@npm:^7.8.3": - version: 7.10.4 - resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.8.3": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.8.3": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.16.7 - resolution: "@babel/plugin-syntax-typescript@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": ^7.16.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 661e636060609ede9a402e22603b01784c21fabb0a637e65f561c8159351fe0130bbc11fdefe31902107885e3332fc34d95eb652ac61d3f61f2d61f5da20609e - languageName: node - linkType: hard - -"@babel/template@npm:^7.16.7, @babel/template@npm:^7.3.3": - version: 7.16.7 - resolution: "@babel/template@npm:7.16.7" - dependencies: - "@babel/code-frame": ^7.16.7 - "@babel/parser": ^7.16.7 - "@babel/types": ^7.16.7 - checksum: 10cd112e89276e00f8b11b55a51c8b2f1262c318283a980f4d6cdb0286dc05734b9aaeeb9f3ad3311900b09bc913e02343fcaa9d4a4f413964aaab04eb84ac4a - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.16.10, @babel/traverse@npm:^7.16.7, @babel/traverse@npm:^7.7.2": - version: 7.16.10 - resolution: "@babel/traverse@npm:7.16.10" - dependencies: - "@babel/code-frame": ^7.16.7 - "@babel/generator": ^7.16.8 - "@babel/helper-environment-visitor": ^7.16.7 - "@babel/helper-function-name": ^7.16.7 - "@babel/helper-hoist-variables": ^7.16.7 - "@babel/helper-split-export-declaration": ^7.16.7 - "@babel/parser": ^7.16.10 - "@babel/types": ^7.16.8 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 58f52314f8a02157cd3004712e703e6b22dff57cee4bc1ab1954c511c6f885fd7763ea68d2d5f006891bc7b77b1f2e9c8c7cb0354f580c8343d5559ed971d087 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.7, @babel/types@npm:^7.16.8, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": - version: 7.16.8 - resolution: "@babel/types@npm:7.16.8" - dependencies: - "@babel/helper-validator-identifier": ^7.16.7 - to-fast-properties: ^2.0.0 - checksum: 4f6a187b2924df70e21d6e6c0822f91b1b936fe060bc92bb477b93bd8a712c88fe41a73f85c0ec53b033353374fe33e773b04ffc340ad36afd8f647dd05c4ee1 - languageName: node - linkType: hard - -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 - languageName: node - linkType: hard - -"@commitlint/cli@npm:16.1.0": - version: 16.1.0 - resolution: "@commitlint/cli@npm:16.1.0" - dependencies: - "@commitlint/format": ^16.0.0 - "@commitlint/lint": ^16.0.0 - "@commitlint/load": ^16.1.0 - "@commitlint/read": ^16.0.0 - "@commitlint/types": ^16.0.0 - lodash: ^4.17.19 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - yargs: ^17.0.0 - bin: - commitlint: cli.js - checksum: 58dced3f3eb6960d1f91949cefb631bc00f588d2510230ab5050c51b98083aa5626e11a22f6aef85f09c001f86a4d8baed0bf54182ab05231ebd203b03229d03 - languageName: node - linkType: hard - -"@commitlint/config-conventional@npm:16.0.0": - version: 16.0.0 - resolution: "@commitlint/config-conventional@npm:16.0.0" - dependencies: - conventional-changelog-conventionalcommits: ^4.3.1 - checksum: a0c923c506eed8b460503247efcecb64f7376c0fcfd9a05330651334d2b0b38a41db2698b1886198ec1e71bcf67dad4e190253e684a3cb668c7cfc76e9e959d5 - languageName: node - linkType: hard - -"@commitlint/config-validator@npm:^16.1.0": - version: 16.1.0 - resolution: "@commitlint/config-validator@npm:16.1.0" - dependencies: - "@commitlint/types": ^16.0.0 - ajv: ^6.12.6 - checksum: 410f80e4cf6257a811b5352069a1bfc22cd0d9827da93d6cc67889f28d6827c6c03495b524f57ac455365dabc57baa0555e2795778cb8bda37955c4bb5e254c6 - languageName: node - linkType: hard - -"@commitlint/ensure@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/ensure@npm:16.0.0" - dependencies: - "@commitlint/types": ^16.0.0 - lodash: ^4.17.19 - checksum: 1e1fdf3ad62cf459118cff9474b161ad101dac02e2c32c22ef2177de8170015729d1b930287648213b3851fa3239c4a88496ae95a82daf726097bfb31c7a3d64 - languageName: node - linkType: hard - -"@commitlint/execute-rule@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/execute-rule@npm:16.0.0" - checksum: d7f93d597adb580ac0c5edc604e7330014c50e7ac7054a14ca86cafbe76ab28dfd25be65777f72bbfa4ffc35639949a46523434796c5dc093a49e8a103670f91 - languageName: node - linkType: hard - -"@commitlint/format@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/format@npm:16.0.0" - dependencies: - "@commitlint/types": ^16.0.0 - chalk: ^4.0.0 - checksum: 3ed6b379c1d5fd168badbcdcca1558f5591131f920e141adcb9f3a207638bc7ca3b3b41e216ee76d2ecf5b0ed2893a6700069a955a94c86002c461a648f8e0e6 - languageName: node - linkType: hard - -"@commitlint/is-ignored@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/is-ignored@npm:16.0.0" - dependencies: - "@commitlint/types": ^16.0.0 - semver: 7.3.5 - checksum: d8d29b1ae6e3721ec65cf2b25656f11d7438eeca6b32572d6b12b6effb19ee697c9fa810958b5b806c243ebbb3714a53e1323b62ab1aeab5730f40ae77af3470 - languageName: node - linkType: hard - -"@commitlint/lint@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/lint@npm:16.0.0" - dependencies: - "@commitlint/is-ignored": ^16.0.0 - "@commitlint/parse": ^16.0.0 - "@commitlint/rules": ^16.0.0 - "@commitlint/types": ^16.0.0 - checksum: 1c9dbcdc230386e39f32492436f558d7c8235f5d96ab3f990f70c6ba36044cc16214e0bea989d1d8b9a9fba22d3c8c8ade86ea69a1f7a75683a967a1f211b866 - languageName: node - linkType: hard - -"@commitlint/load@npm:^16.1.0": - version: 16.1.0 - resolution: "@commitlint/load@npm:16.1.0" - dependencies: - "@commitlint/config-validator": ^16.1.0 - "@commitlint/execute-rule": ^16.0.0 - "@commitlint/resolve-extends": ^16.1.0 - "@commitlint/types": ^16.0.0 - chalk: ^4.0.0 - cosmiconfig: ^7.0.0 - cosmiconfig-typescript-loader: ^1.0.0 - lodash: ^4.17.19 - resolve-from: ^5.0.0 - typescript: ^4.4.3 - checksum: 154d7cc7281ef528732b0be81857c27cada0f3d026a588d3ebd00281721db1ba89ce595d01ded986429fe71c01007e33c5c365bbe12178476092786da6409619 - languageName: node - linkType: hard - -"@commitlint/message@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/message@npm:16.0.0" - checksum: 6dfbef02900b0eb554f3c5fe97697c3f46a185cda42c7ea04a431de82a17a0eeee9dcaf332ffa79748ffa3660f16d92429015cd039e0324a5e1ee341a919402b - languageName: node - linkType: hard - -"@commitlint/parse@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/parse@npm:16.0.0" - dependencies: - "@commitlint/types": ^16.0.0 - conventional-changelog-angular: ^5.0.11 - conventional-commits-parser: ^3.2.2 - checksum: 1d31e044b99fc9b1de9ee698bade0a6dc04ba514d5c677a7181ac379e7899b0975f4523b8831c7080109c2acb4bf8457b12bc094d06c6d18a8053c571056b90e - languageName: node - linkType: hard - -"@commitlint/read@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/read@npm:16.0.0" - dependencies: - "@commitlint/top-level": ^16.0.0 - "@commitlint/types": ^16.0.0 - fs-extra: ^10.0.0 - git-raw-commits: ^2.0.0 - checksum: 12763e124936af9d0bc9fee71749b5caf02e9e087985b762239b4c25994676c6c1921fe7ec70e07d384b9b77e521913a64f885c9d1034b6715bf8ad92aabdf60 - languageName: node - linkType: hard - -"@commitlint/resolve-extends@npm:^16.1.0": - version: 16.1.0 - resolution: "@commitlint/resolve-extends@npm:16.1.0" - dependencies: - "@commitlint/config-validator": ^16.1.0 - "@commitlint/types": ^16.0.0 - import-fresh: ^3.0.0 - lodash: ^4.17.19 - resolve-from: ^5.0.0 - resolve-global: ^1.0.0 - checksum: bffeefb73095fe22f09115c25ab4617d28e6aa49877adcfc0f5a5d44553ff07a135e7cc811715afee2ba40e5e34a294ac6ba5aec3e68246b5264e60887ea15c8 - languageName: node - linkType: hard - -"@commitlint/rules@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/rules@npm:16.0.0" - dependencies: - "@commitlint/ensure": ^16.0.0 - "@commitlint/message": ^16.0.0 - "@commitlint/to-lines": ^16.0.0 - "@commitlint/types": ^16.0.0 - execa: ^5.0.0 - checksum: e76dc2dea9aca44c06ed84ed8881650f1bd4883d525ad0b51688bc4eb94ea399aa59614fb6b217a09082b67993758a0610e4f461bc9e60e4a21e100a340a007f - languageName: node - linkType: hard - -"@commitlint/to-lines@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/to-lines@npm:16.0.0" - checksum: ebac0b64fb670461c8b7d653e9bd98bc8f0ad3de58d5b95f3d5715a6d36fb9d9b620c450f06538efae813c185f5459aa88ccb7e6a0faadde9b748647723deb5f - languageName: node - linkType: hard - -"@commitlint/top-level@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/top-level@npm:16.0.0" - dependencies: - find-up: ^5.0.0 - checksum: 76a99a9b4d311b490d9f03a3f309c7300b32e6020ce688185e604a9ba7ed9701a01308083a28b3a046c8e3d091d88dd2d33e39c71c5b450ee7eb35fc73d7b606 - languageName: node - linkType: hard - -"@commitlint/types@npm:^16.0.0": - version: 16.0.0 - resolution: "@commitlint/types@npm:16.0.0" - dependencies: - chalk: ^4.0.0 - checksum: 2b25087c41f2bbe6dceea8903ad30be1edaa79ebe5825c69e83a1b058c1d659be5db3764327fec598fffbb16a9aa4bd16fff54e373ca3fd076a31abceb61cd50 - languageName: node - linkType: hard - -"@cspotcode/source-map-consumer@npm:0.8.0": - version: 0.8.0 - resolution: "@cspotcode/source-map-consumer@npm:0.8.0" - checksum: c0c16ca3d2f58898f1bd74c4f41a189dbcc202e642e60e489cbcc2e52419c4e89bdead02c886a12fb13ea37798ede9e562b2321df997ebc210ae9bd881561b4e - languageName: node - linkType: hard - -"@cspotcode/source-map-support@npm:0.7.0": - version: 0.7.0 - resolution: "@cspotcode/source-map-support@npm:0.7.0" - dependencies: - "@cspotcode/source-map-consumer": 0.8.0 - checksum: 9faddda7757cd778b5fd6812137b2cc265810043680d6399acc20441668fafcdc874053be9dccd0d9110087287bfad27eb3bf342f72bceca9aa9059f5d0c4be8 - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^1.0.5": - version: 1.0.5 - resolution: "@eslint/eslintrc@npm:1.0.5" - dependencies: - ajv: ^6.12.4 - debug: ^4.3.2 - espree: ^9.2.0 - globals: ^13.9.0 - ignore: ^4.0.6 - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - minimatch: ^3.0.4 - strip-json-comments: ^3.1.1 - checksum: b35b50d7b65bd8acd92a05b6fb15ac62c0cefa40dfef0324ca5bf8632bf3679bab6e173c53b3ad1e1d837701cecdbd9c144b35f46588cdf4e046a9caa272488d - languageName: node - linkType: hard - -"@gar/promisify@npm:^1.0.1": - version: 1.1.2 - resolution: "@gar/promisify@npm:1.1.2" - checksum: d05081e0887a49c178b75ee3067bd6ee086f73c154d121b854fb2e044e8a89cb1cbb6de3a0dd93a519b80f0531fda68b099dd7256205f7fbb3490324342f2217 - languageName: node - linkType: hard - -"@guanghechen/rollup-plugin-copy@npm:1.8.6": - version: 1.8.6 - resolution: "@guanghechen/rollup-plugin-copy@npm:1.8.6" - dependencies: - chalk: ^4.1.2 - fs-extra: ^10.0.0 - globby: ^11.0.4 - is-plain-object: ^5.0.0 - peerDependencies: - rollup: ^2.64.0 - checksum: b9ea14264a80620eecfc4d11c488cbc95f97633f66bd3f2e9e203873a4d520dba2ea980d67523fe8a83ed1acc0b547a85581baad6fc631a90b6ddd57bb155ff2 - languageName: node - linkType: hard - -"@humanwhocodes/config-array@npm:^0.9.2": - version: 0.9.2 - resolution: "@humanwhocodes/config-array@npm:0.9.2" - dependencies: - "@humanwhocodes/object-schema": ^1.2.1 - debug: ^4.1.1 - minimatch: ^3.0.4 - checksum: 28a9e2974c50a86765cb6cc96e03d29187ea33fdaba62c4f35db89002e3cfbd340e64c9f6cf869e33e2e5cdcc06e78763458f4178d38a6f30aea1308787ca706 - languageName: node - linkType: hard - -"@humanwhocodes/object-schema@npm:^1.2.1": - version: 1.2.1 - resolution: "@humanwhocodes/object-schema@npm:1.2.1" - checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1 - languageName: node - linkType: hard - -"@hutson/parse-repository-url@npm:^3.0.0": - version: 3.0.2 - resolution: "@hutson/parse-repository-url@npm:3.0.2" - checksum: 39992c5f183c5ca3d761d6ed9dfabcb79b5f3750bf1b7f3532e1dc439ca370138bbd426ee250fdaba460bc948e6761fbefd484b8f4f36885d71ded96138340d1 - languageName: node - linkType: hard - -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" - dependencies: - camelcase: ^5.3.1 - find-up: ^4.1.0 - get-package-type: ^0.1.0 - js-yaml: ^3.13.1 - resolve-from: ^5.0.0 - checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 - languageName: node - linkType: hard - -"@istanbuljs/schema@npm:^0.1.2": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 - languageName: node - linkType: hard - -"@jest/console@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/console@npm:27.5.1" - dependencies: - "@jest/types": ^27.5.1 - "@types/node": "*" - chalk: ^4.0.0 - jest-message-util: ^27.5.1 - jest-util: ^27.5.1 - slash: ^3.0.0 - checksum: 7cb20f06a34b09734c0342685ec53aa4c401fe3757c13a9c58fce76b971a322eb884f6de1068ef96f746e5398e067371b89515a07c268d4440a867c87748a706 - languageName: node - linkType: hard - -"@jest/core@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/core@npm:27.5.1" - dependencies: - "@jest/console": ^27.5.1 - "@jest/reporters": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - emittery: ^0.8.1 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - jest-changed-files: ^27.5.1 - jest-config: ^27.5.1 - jest-haste-map: ^27.5.1 - jest-message-util: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-resolve-dependencies: ^27.5.1 - jest-runner: ^27.5.1 - jest-runtime: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 - jest-watcher: ^27.5.1 - micromatch: ^4.0.4 - rimraf: ^3.0.0 - slash: ^3.0.0 - strip-ansi: ^6.0.0 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 904a94ad8f1b43cd6b48de3b0226659bff3696150ff8cf7680fc2faffdc8a115203bb9ab6e817c1f79f9d6a81f67953053cbc64d8a4604f2e0c42a04c28cf126 - languageName: node - linkType: hard - -"@jest/environment@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/environment@npm:27.5.1" - dependencies: - "@jest/fake-timers": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - jest-mock: ^27.5.1 - checksum: 2a9e18c35a015508dbec5b90b21c150230fa6c1c8cb8fabe029d46ee2ca4c40eb832fb636157da14c66590d0a4c8a2c053226b041f54a44507d6f6a89abefd66 - languageName: node - linkType: hard - -"@jest/fake-timers@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/fake-timers@npm:27.5.1" - dependencies: - "@jest/types": ^27.5.1 - "@sinonjs/fake-timers": ^8.0.1 - "@types/node": "*" - jest-message-util: ^27.5.1 - jest-mock: ^27.5.1 - jest-util: ^27.5.1 - checksum: 02a0561ed2f4586093facd4ae500b74694f187ac24d4a00e949a39a1c5325bca8932b4fcb0388a2c5ed0656506fc1cf51fd3e32cdd48cea7497ad9c6e028aba8 - languageName: node - linkType: hard - -"@jest/globals@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/globals@npm:27.5.1" - dependencies: - "@jest/environment": ^27.5.1 - "@jest/types": ^27.5.1 - expect: ^27.5.1 - checksum: 087f97047e9dcf555f76fe2ce54aee681e005eaa837a0c0c2d251df6b6412c892c9df54cb871b180342114389a5ff895a4e52e6e6d3d0015bf83c02a54f64c3c - languageName: node - linkType: hard - -"@jest/reporters@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/reporters@npm:27.5.1" - dependencies: - "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - chalk: ^4.0.0 - collect-v8-coverage: ^1.0.0 - exit: ^0.1.2 - glob: ^7.1.2 - graceful-fs: ^4.2.9 - istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^5.1.0 - istanbul-lib-report: ^3.0.0 - istanbul-lib-source-maps: ^4.0.0 - istanbul-reports: ^3.1.3 - jest-haste-map: ^27.5.1 - jest-resolve: ^27.5.1 - jest-util: ^27.5.1 - jest-worker: ^27.5.1 - slash: ^3.0.0 - source-map: ^0.6.0 - string-length: ^4.0.1 - terminal-link: ^2.0.0 - v8-to-istanbul: ^8.1.0 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: faba5eafb86e62b62e152cafc8812d56308f9d1e8b77f3a7dcae4a8803a20a60a0909cc43ed73363ef649bf558e4fb181c7a336d144c89f7998279d1882bb69e - languageName: node - linkType: hard - -"@jest/source-map@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/source-map@npm:27.5.1" - dependencies: - callsites: ^3.0.0 - graceful-fs: ^4.2.9 - source-map: ^0.6.0 - checksum: 4fb1e743b602841babf7e22bd84eca34676cb05d4eb3b604cae57fc59e406099f5ac759ac1a0d04d901237d143f0f4f234417306e823bde732a1d19982230862 - languageName: node - linkType: hard - -"@jest/test-result@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/test-result@npm:27.5.1" - dependencies: - "@jest/console": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/istanbul-lib-coverage": ^2.0.0 - collect-v8-coverage: ^1.0.0 - checksum: 338f7c509d6a3bc6d7dd7388c8f6f548b87638e171dc1fddfedcacb4e8950583288832223ba688058cbcf874b937d22bdc0fa88f79f5fc666f77957e465c06a5 - languageName: node - linkType: hard - -"@jest/test-sequencer@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/test-sequencer@npm:27.5.1" - dependencies: - "@jest/test-result": ^27.5.1 - graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 - jest-runtime: ^27.5.1 - checksum: f21f9c8bb746847f7f89accfd29d6046eec1446f0b54e4694444feaa4df379791f76ef0f5a4360aafcbc73b50bc979f68b8a7620de404019d3de166be6720cb0 - languageName: node - linkType: hard - -"@jest/transform@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/transform@npm:27.5.1" - dependencies: - "@babel/core": ^7.1.0 - "@jest/types": ^27.5.1 - babel-plugin-istanbul: ^6.1.1 - chalk: ^4.0.0 - convert-source-map: ^1.4.0 - fast-json-stable-stringify: ^2.0.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-util: ^27.5.1 - micromatch: ^4.0.4 - pirates: ^4.0.4 - slash: ^3.0.0 - source-map: ^0.6.1 - write-file-atomic: ^3.0.0 - checksum: a22079121aedea0f20a03a9c026be971f7b92adbfb4d5fd1fb67be315741deac4f056936d7c72a53b24aa5a1071bc942c003925fd453bf3f6a0ae5da6384e137 - languageName: node - linkType: hard - -"@jest/types@npm:^27.4.2": - version: 27.4.2 - resolution: "@jest/types@npm:27.4.2" - dependencies: - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^16.0.0 - chalk: ^4.0.0 - checksum: 1191022023e32763063cc1c8b1143fa316fb05db2f9698280a7bdbafcabd989e5fd64f8eb875b8a2e54c53f25dba45ed2eea8ced394d9e484da0fda674cd17a5 - languageName: node - linkType: hard - -"@jest/types@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/types@npm:27.5.1" - dependencies: - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^16.0.0 - chalk: ^4.0.0 - checksum: d1f43cc946d87543ddd79d49547aab2399481d34025d5c5f2025d3d99c573e1d9832fa83cef25e9d9b07a8583500229d15bbb07b8e233d127d911d133e2f14b1 - languageName: node - linkType: hard - -"@league-of-foundry-developers/foundry-vtt-types@npm:9.249.0": - version: 9.249.0 - resolution: "@league-of-foundry-developers/foundry-vtt-types@npm:9.249.0" - dependencies: - "@types/jquery": ~3.5.9 - "@types/simple-peer": ~9.11.1 - handlebars: 4.7.7 - pixi-particles: 4.3.1 - pixi.js: 5.3.11 - socket.io-client: 4.3.2 - tinymce: 5.10.1 - checksum: 7382eab7726edc9c3867180eca43e84e59d16e1312f2386eb160360f64895be8f82c9338a1e2210869a737ce061fc336101c7cb30f22ac8ffd4b5144ff1dc13d - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: ^1.1.9 - checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: ^1.6.0 - checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^1.0.0": - version: 1.1.0 - resolution: "@npmcli/fs@npm:1.1.0" - dependencies: - "@gar/promisify": ^1.0.1 - semver: ^7.3.5 - checksum: e435b883b4f8da8c95a820f458cabb7d86582406eed5ad79fc689000d3e2df17e1f475c4903627272c001357cabc70d8b4c62520cbdae8cfab1dfdd51949f408 - languageName: node - linkType: hard - -"@npmcli/move-file@npm:^1.0.1": - version: 1.1.2 - resolution: "@npmcli/move-file@npm:1.1.2" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 - languageName: node - linkType: hard - -"@pixi/accessibility@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/accessibility@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: e64407bd08d472ccee9896aac21768cf5bad6fe52b75af4e7758168a153bd767c0e3e9959e646c86901acae77e9dfe4c05059075b5841000b7a2de50dd2d7083 - languageName: node - linkType: hard - -"@pixi/app@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/app@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - checksum: c4fce95715380fe8fcea99c92e1f0a2e98a172b3e6ac691d658b31d5a950bafd23753e982106e8be08c5db4b7872df156ea779f47f15b7fb2afdbef40dc3fa56 - languageName: node - linkType: hard - -"@pixi/constants@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/constants@npm:5.3.11" - checksum: ed23c735858a3a506ece0bea1afb3fac2ba261cb9722f17b15e9a4dcc8f70f3906a7cb90c94c255e7e7ece62d3447e68462975c3a30d2cb908f3632b4f97a891 - languageName: node - linkType: hard - -"@pixi/core@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/core@npm:5.3.11" - dependencies: - "@pixi/constants": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/runner": 5.3.11 - "@pixi/settings": 5.3.11 - "@pixi/ticker": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: 865f26fa07397f67c0b418b7844576adff49aea47e4548b6122541c92da15744d128c681eb0c11c584906ba269485f816a8c0e0a4d6cb5521a2a488dfe4cfb40 - languageName: node - linkType: hard - -"@pixi/display@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/display@npm:5.3.11" - dependencies: - "@pixi/math": 5.3.11 - "@pixi/settings": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: 83db7f10fe610104bca5b71031abe3dfdd8946fd4e1a3957f2f9c1ca61ebbd3b7ab04915e9ced78997b88817063da42ae7c5aea527ad70959eb320966f70f92b - languageName: node - linkType: hard - -"@pixi/extract@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/extract@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: 15d68bed15e29c4d49f39bc33c9097b05eeb7b374a6a1f54177eaf0079e9882e4d96e3cbf61951ab6474b458fcdc36010de776ef7eeaaf9505464bfff89498e4 - languageName: node - linkType: hard - -"@pixi/filter-alpha@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/filter-alpha@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - checksum: c5348cc46125f443effd41ed46ccd8312b8a797fad5898ca3460d1c2f2146287881f8b18d1953b444cca6969ad1cbf60792c9d84434cc396e147bcc57f7a9d01 - languageName: node - linkType: hard - -"@pixi/filter-blur@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/filter-blur@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/settings": 5.3.11 - checksum: ff28b39f63c63cc9cb16d566ffb1543272830f3f566b677da22f47ad211ad594359fb07504280d80f9a7bfd1818409cf3cd9563c689057731d7e0fd105a3f988 - languageName: node - linkType: hard - -"@pixi/filter-color-matrix@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/filter-color-matrix@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - checksum: 5f76a7de0f9935fa16cbb66a18b430fa73a71d787f55334c2ba538bc58b11339ee0bfed0ccbe53c7693d6110fad5e88cb569af973849328b307e5314717130e7 - languageName: node - linkType: hard - -"@pixi/filter-displacement@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/filter-displacement@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/math": 5.3.11 - checksum: 03436312e1dd860accd6c801feea8d0a868e5b90de8c49edc28d40cf71ba4da293b4c027d0a71897c9aec884db132cb4c7d22fd18a05da5248e4ab35fccd0df9 - languageName: node - linkType: hard - -"@pixi/filter-fxaa@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/filter-fxaa@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - checksum: 02a16119e4796e9d1bf01768358cc244c24d71d22e229b5eec9b31968771a07d0fdf11196de7b59d34b9c075245d16b3c794b0eb02fc7e5e27b22e703ea0ed27 - languageName: node - linkType: hard - -"@pixi/filter-noise@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/filter-noise@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - checksum: 7d27c5af18a096418ced42f9f668577db39e4b30c7fad540d7ba31fd8a59c16d8926680ff6c3523c3e4b2a9fc4a7b46694dc0d547863cdf2763b28dac4c06455 - languageName: node - linkType: hard - -"@pixi/graphics@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/graphics@npm:5.3.11" - dependencies: - "@pixi/constants": 5.3.11 - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/sprite": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: 31014dd5b9b05dd6d048a6a74c261f5e368b0e558aceaf21a90df38b321495b75f5caf2fe7e148fbad25b5db2998a76c66f816a4247d4e8d6c222a8b740b14b4 - languageName: node - linkType: hard - -"@pixi/interaction@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/interaction@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/ticker": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: 2dc86690b85a614d062fe33dd1607ecb920e491bbb8822e28afef48ff745de1aa796b144225f887f6c391a96ab98c760e4b2081f621d9ccebdf59b4d63b9ded5 - languageName: node - linkType: hard - -"@pixi/loaders@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/loaders@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/utils": 5.3.11 - resource-loader: ^3.0.1 - checksum: 032e111c2dee5fdd26388ab95695f1800f9892ceb286248c4543d3b94b412390c6aa77d5f7b3118ae93a99b97b27db6b41e5459c67229cb5c22fcf3ef5f798c9 - languageName: node - linkType: hard - -"@pixi/math@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/math@npm:5.3.11" - checksum: 594557c1620ccee3e643b780cd66c0e0a01f4e2513d01e1f97fc9297cc8cdd9f0371360d578a6e16d8c4ee3d852a7770bbfcd26cc12f8c38f7d8a82b81dd76ec - languageName: node - linkType: hard - -"@pixi/mesh-extras@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/mesh-extras@npm:5.3.11" - dependencies: - "@pixi/constants": 5.3.11 - "@pixi/core": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/mesh": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: 8c8188be1c978670f7c06b6de85d1d18b93eca321f17611830e88157958b40ac888490cf20a33e2fe3a85e57f0b654e7208dea3a4aa340330f1eb4a4c6029c7e - languageName: node - linkType: hard - -"@pixi/mesh@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/mesh@npm:5.3.11" - dependencies: - "@pixi/constants": 5.3.11 - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/settings": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: 161748cd29cd8522254577f556d0dde09198f17ff0fd5abc78aeea173f281c73cd4816eed134cab69a6ec41b0909cbdeb7c513aae696815605cdb67b8cc2e367 - languageName: node - linkType: hard - -"@pixi/mixin-cache-as-bitmap@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/mixin-cache-as-bitmap@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/settings": 5.3.11 - "@pixi/sprite": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: ea0999df8da2373f1617ad0d1f72e6f95d3d7501aad2f4808adf781d9df4d2b31540ad43d599b709872c0e6af9489d8531274153eaca5fa105173b6666057580 - languageName: node - linkType: hard - -"@pixi/mixin-get-child-by-name@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/mixin-get-child-by-name@npm:5.3.11" - dependencies: - "@pixi/display": 5.3.11 - checksum: 3c8d852728d0fb311923ac641cabefb31dcb31d2184e3ff6d6a152b7b662fce477c4f209f1a1947a086e46f59f44089072ef5c6d9798de016bd116b7502640f9 - languageName: node - linkType: hard - -"@pixi/mixin-get-global-position@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/mixin-get-global-position@npm:5.3.11" - dependencies: - "@pixi/display": 5.3.11 - "@pixi/math": 5.3.11 - checksum: 2be4698114f7061758efe3e2dad93a0216dfacf5cba4d20dc11105b55a4e69f26ef0d84c11d9670f157da11e235eb501d51018188176fd10c42955e7bf95bae0 - languageName: node - linkType: hard - -"@pixi/particles@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/particles@npm:5.3.11" - dependencies: - "@pixi/constants": 5.3.11 - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: 2b866a2998f6295f88b21451a1088a9d32f75bd5c3cdae10bff5a47bc6846ff69ac7e07db87a3346b6dbfc1c49fb5e4ea0df69aebd815f2fa5a4f43e49c89a17 - languageName: node - linkType: hard - -"@pixi/polyfill@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/polyfill@npm:5.3.11" - dependencies: - es6-promise-polyfill: ^1.2.0 - object-assign: ^4.1.1 - checksum: b9e69c974eab3ecba755c0b10c776aa6aac40eafec459fd205a786d1abbcf77c5ae05c6cde9381bc5d99830c284bfb746c56b09aedd4bed367063d3183b4722c - languageName: node - linkType: hard - -"@pixi/prepare@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/prepare@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - "@pixi/graphics": 5.3.11 - "@pixi/settings": 5.3.11 - "@pixi/text": 5.3.11 - "@pixi/ticker": 5.3.11 - checksum: eeb13f4c2eaff00f990e5f9d55593334a04a72ee1edf120b2b626e429e8e260514c371fc69dc87ee1c61355d9a6310d3daf56ec772ca1cd5976c2d94047e0552 - languageName: node - linkType: hard - -"@pixi/runner@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/runner@npm:5.3.11" - checksum: decbf8853a5634b3de2260321b813e5165ac23ff1eb1431ad50e69a0531d04fadd4693f80c0c1e0673380b15376b7840407ebafe404b95247c8d9187978f1de2 - languageName: node - linkType: hard - -"@pixi/settings@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/settings@npm:5.3.11" - dependencies: - ismobilejs: ^1.1.0 - checksum: b45a10c0a556b3737f9b0442364635d36c8dfd351337f55829e4049e6f120ad5c201b242eb49c17a817c3348b085b7506e00438c0169c2951a9b7dba94ddc497 - languageName: node - linkType: hard - -"@pixi/sprite-animated@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/sprite-animated@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/sprite": 5.3.11 - "@pixi/ticker": 5.3.11 - checksum: e821e5882961e5e65abe950f7d3600622a76b5f188b83280d1dbb2d9434847fe6a8f204cc63e1f87805ded804f3e9992f6b779d1561868df530f33c5d71da3ef - languageName: node - linkType: hard - -"@pixi/sprite-tiling@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/sprite-tiling@npm:5.3.11" - dependencies: - "@pixi/constants": 5.3.11 - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/sprite": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: 2a3b82fb89a92be9413573ebe507a416485735de47d99ae4f9037cfec8619947b86fb53c4ba0d5c007d5b4e0148d8d83ffd9338a1ef2691b8c8d8dae05a77ebe - languageName: node - linkType: hard - -"@pixi/sprite@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/sprite@npm:5.3.11" - dependencies: - "@pixi/constants": 5.3.11 - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/settings": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: 6e4c5f108db8d49f005e61801bf94bb12173bfefd2e0c803851530c27d31f8c0a78e60bd9f07a469e06154bf22f5f6a1da5aabf7119c9e1448534df0e42e4398 - languageName: node - linkType: hard - -"@pixi/spritesheet@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/spritesheet@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/loaders": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: a1782b7b25ed355eba78850f764189f5cc433a8cf737b9ca54bb896afb47fb66cb329dab91072e2914b3d0f981f65e4788657e5f5ac8995c3ecdfde870f29890 - languageName: node - linkType: hard - -"@pixi/text-bitmap@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/text-bitmap@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - "@pixi/loaders": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/mesh": 5.3.11 - "@pixi/settings": 5.3.11 - "@pixi/text": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: c901ebaf47720369e080c85065b879a1a80e725d782c43d7d4873569a73d7d5e9543cd5a8a71550c4a7dd13cf5497361f7ecd527edb5208aaf7cdc8d8d7310dd - languageName: node - linkType: hard - -"@pixi/text@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/text@npm:5.3.11" - dependencies: - "@pixi/core": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/settings": 5.3.11 - "@pixi/sprite": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: 583cd3534ac8682e96e55f511325ed01e817c812db92262afab03581ad82e8d7b3444ee858673236c8069af2c6c25efc166a67ef0bf3f2ef8ecedf7c1c910347 - languageName: node - linkType: hard - -"@pixi/ticker@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/ticker@npm:5.3.11" - dependencies: - "@pixi/settings": 5.3.11 - checksum: 45a4b6f1b43c70f09f9b050bf28afbeda155c30d33d9666a1698f6b884a376505c37b508408068f4fb74abaff61529a395d73dd64e437a376cada95f647832fe - languageName: node - linkType: hard - -"@pixi/utils@npm:5.3.11": - version: 5.3.11 - resolution: "@pixi/utils@npm:5.3.11" - dependencies: - "@pixi/constants": 5.3.11 - "@pixi/settings": 5.3.11 - earcut: ^2.1.5 - eventemitter3: ^3.1.0 - url: ^0.11.0 - checksum: b107c782b9c27a25a2e04e4ce12f78022a65ffb71133f4e9e7840f9cf653852d382d940635f27f284b0081692eaea39a310f1ce14d1d6ed1216e2738ac3b3f61 - languageName: node - linkType: hard - -"@rollup/plugin-typescript@npm:8.3.0": - version: 8.3.0 - resolution: "@rollup/plugin-typescript@npm:8.3.0" - dependencies: - "@rollup/pluginutils": ^3.1.0 - resolve: ^1.17.0 - peerDependencies: - rollup: ^2.14.0 - tslib: "*" - typescript: ">=3.7.0" - checksum: f8253a775389f29feadf639c2e04d87bddb4c30126b0d95b9e17bfffa2addad1b6275cb8dead40604348ea7ac0128fe4394413bc3b2129c4a545f93eb4585149 - languageName: node - linkType: hard - -"@rollup/pluginutils@npm:^3.1.0": - version: 3.1.0 - resolution: "@rollup/pluginutils@npm:3.1.0" - dependencies: - "@types/estree": 0.0.39 - estree-walker: ^1.0.1 - picomatch: ^2.2.2 - peerDependencies: - rollup: ^1.20.0||^2.0.0 - checksum: 8be16e27863c219edbb25a4e6ec2fe0e1e451d9e917b6a43cf2ae5bc025a6b8faaa40f82a6e53b66d0de37b58ff472c6c3d57a83037ae635041f8df959d6d9aa - languageName: node - linkType: hard - -"@rollup/pluginutils@npm:^4.1.2": - version: 4.1.2 - resolution: "@rollup/pluginutils@npm:4.1.2" - dependencies: - estree-walker: ^2.0.1 - picomatch: ^2.2.2 - checksum: 498d67e7b48c707e3e0d9f7ddaa405833d77575b2d9607cd1914be40455ed534235e0512f9d046bf0e4ed1740e7816fd32ab1c673195e897c4fa180bcbfd7283 - languageName: node - linkType: hard - -"@seald-io/binary-search-tree@npm:^1.0.2": - version: 1.0.2 - resolution: "@seald-io/binary-search-tree@npm:1.0.2" - checksum: 957315cbe4c7af17a6830753e933d23fddae4620e55070a179b8c3e4582021e75a171da1094a5931be4deea41c059a5f233bd76e13689afb7c4447a8d5358be7 - languageName: node - linkType: hard - -"@seald-io/nedb@npm:2.2.1": - version: 2.2.1 - resolution: "@seald-io/nedb@npm:2.2.1" - dependencies: - "@seald-io/binary-search-tree": ^1.0.2 - async: 0.2.10 - localforage: ^1.9.0 - checksum: 26c32c05e30b3e692d02fd0de7496dde808cc03cdf40049616da61f346ab9c2a0a2b25997bce09ca5b069318d526a3ccff7e4705efadf4c719ad0f357bf271e2 - languageName: node - linkType: hard - -"@sinonjs/commons@npm:^1.7.0": - version: 1.8.3 - resolution: "@sinonjs/commons@npm:1.8.3" - dependencies: - type-detect: 4.0.8 - checksum: 6159726db5ce6bf9f2297f8427f7ca5b3dff45b31e5cee23496f1fa6ef0bb4eab878b23fb2c5e6446381f6a66aba4968ef2fc255c1180d753d4b8c271636a2e5 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^8.0.1": - version: 8.1.0 - resolution: "@sinonjs/fake-timers@npm:8.1.0" - dependencies: - "@sinonjs/commons": ^1.7.0 - checksum: 09b5a158ce013a6c37613258bad79ca4efeb99b1f59c41c73cca36cac00b258aefcf46eeea970fccf06b989414d86fe9f54c1102272c0c3bdd51a313cea80949 - languageName: node - linkType: hard - -"@socket.io/base64-arraybuffer@npm:~1.0.2": - version: 1.0.2 - resolution: "@socket.io/base64-arraybuffer@npm:1.0.2" - checksum: fa3e58c7581643d0557969cd3bece20e198596df77968ff29ede6be329d488e65104bef900e68a67f39d8855abfa59baa2b08d96fb856504bd01cbdd8f52249c - languageName: node - linkType: hard - -"@socket.io/component-emitter@npm:~3.0.0": - version: 3.0.0 - resolution: "@socket.io/component-emitter@npm:3.0.0" - checksum: b5e909dbb16bcf27958d1bfb8319f3255f3a50f62fde78ecf9a584f39f916b928fdc5661519892eea912da082c6413d671c1e67bde70725c75ee62956aa67c26 - languageName: node - linkType: hard - -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 - languageName: node - linkType: hard - -"@trysound/sax@npm:0.2.0": - version: 0.2.0 - resolution: "@trysound/sax@npm:0.2.0" - checksum: 11226c39b52b391719a2a92e10183e4260d9651f86edced166da1d95f39a0a1eaa470e44d14ac685ccd6d3df7e2002433782872c0feeb260d61e80f21250e65c - languageName: node - linkType: hard - -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.8 - resolution: "@tsconfig/node10@npm:1.0.8" - checksum: b8d5fffbc6b17ef64ef74f7fdbccee02a809a063ade785c3648dae59406bc207f70ea2c4296f92749b33019fa36a5ae716e42e49cc7f1bbf0fd147be0d6b970a - languageName: node - linkType: hard - -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.9 - resolution: "@tsconfig/node12@npm:1.0.9" - checksum: a01b2400ab3582b86b589c6d31dcd0c0656f333adecde85d6d7d4086adb059808b82692380bb169546d189bf771ae21d02544a75b57bd6da4a5dd95f8567bec9 - languageName: node - linkType: hard - -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.1 - resolution: "@tsconfig/node14@npm:1.0.1" - checksum: 976345e896c0f059867f94f8d0f6ddb8b1844fb62bf36b727de8a9a68f024857e5db97ed51d3325e23e0616a5e48c034ff51a8d595b3fe7e955f3587540489be - languageName: node - linkType: hard - -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.2 - resolution: "@tsconfig/node16@npm:1.0.2" - checksum: ca94d3639714672bbfd55f03521d3f56bb6a25479bd425da81faf21f13e1e9d15f40f97377dedbbf477a5841c5b0c8f4cd1b391f33553d750b9202c54c2c07aa - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14": - version: 7.1.18 - resolution: "@types/babel__core@npm:7.1.18" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: 2e5b5d7c84f347d3789575486e58b0df5c91613abc3d27e716274aba3048518e07e1f068250ba829e2ed58532ccc88da595ce95ba2688e7bbcd7c25a3c6627ed - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.6.4 - resolution: "@types/babel__generator@npm:7.6.4" - dependencies: - "@babel/types": ^7.0.0 - checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.1 - resolution: "@types/babel__template@npm:7.4.1" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6": - version: 7.14.2 - resolution: "@types/babel__traverse@npm:7.14.2" - dependencies: - "@babel/types": ^7.3.0 - checksum: a797ea09c72307569e3ee08aa3900ca744ce3091114084f2dc59b67a45ee7d01df7865252790dbfa787a7915ce892cdc820c9b920f3683292765fc656b08dc63 - languageName: node - linkType: hard - -"@types/cssnano@npm:^5.0.0": - version: 5.0.0 - resolution: "@types/cssnano@npm:5.0.0" - dependencies: - postcss: ^8 - checksum: 7d05401db3c419a0bdab9a2889e5a8568dca33b9fedb4cb0ba883d13d76f436cc99f0b25317630cd10d4f1700577a70b76e83a37684589e3541a05aa3b31662f - languageName: node - linkType: hard - -"@types/estree@npm:0.0.39": - version: 0.0.39 - resolution: "@types/estree@npm:0.0.39" - checksum: 412fb5b9868f2c418126451821833414189b75cc6bf84361156feed733e3d92ec220b9d74a89e52722e03d5e241b2932732711b7497374a404fad49087adc248 - languageName: node - linkType: hard - -"@types/fs-extra@npm:9.0.13": - version: 9.0.13 - resolution: "@types/fs-extra@npm:9.0.13" - dependencies: - "@types/node": "*" - checksum: add79e212acd5ac76b97b9045834e03a7996aef60a814185e0459088fd290519a3c1620865d588fa36c4498bf614210d2a703af5cf80aa1dbc125db78f6edac3 - languageName: node - linkType: hard - -"@types/graceful-fs@npm:^4.1.2": - version: 4.1.5 - resolution: "@types/graceful-fs@npm:4.1.5" - dependencies: - "@types/node": "*" - checksum: d076bb61f45d0fc42dee496ef8b1c2f8742e15d5e47e90e20d0243386e426c04d4efd408a48875ab432f7960b4ce3414db20ed0fbbfc7bcc89d84e574f6e045a - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.4 - resolution: "@types/istanbul-lib-coverage@npm:2.0.4" - checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.0 - resolution: "@types/istanbul-lib-report@npm:3.0.0" - dependencies: - "@types/istanbul-lib-coverage": "*" - checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.1 - resolution: "@types/istanbul-reports@npm:3.0.1" - dependencies: - "@types/istanbul-lib-report": "*" - checksum: f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 - languageName: node - linkType: hard - -"@types/jest@npm:27.4.0": - version: 27.4.0 - resolution: "@types/jest@npm:27.4.0" - dependencies: - jest-diff: ^27.0.0 - pretty-format: ^27.0.0 - checksum: d2350267f954f9a2e4a15e5f02fbf19a77abfb9fd9e57a954de1fb0e9a0d3d5f8d3646ac7d9c42aeb4b4d828d2e70624ec149c85bb50a48634a54eed8429e1f8 - languageName: node - linkType: hard - -"@types/jquery@npm:~3.5.9": - version: 3.5.13 - resolution: "@types/jquery@npm:3.5.13" - dependencies: - "@types/sizzle": "*" - checksum: cb4e6aacaf36905049d5ac93da1fabed17da285fafe38c88feba89d7c9912e108c934ea05c908b87ae199f2830e5e002a72d0cc8aaef4a33539581d0a7a6abe8 - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.9": - version: 7.0.9 - resolution: "@types/json-schema@npm:7.0.9" - checksum: 259d0e25f11a21ba5c708f7ea47196bd396e379fddb79c76f9f4f62c945879dc21657904914313ec2754e443c5018ea8372362f323f30e0792897fdb2098a705 - languageName: node - linkType: hard - -"@types/minimist@npm:^1.2.0": - version: 1.2.2 - resolution: "@types/minimist@npm:1.2.2" - checksum: b8da83c66eb4aac0440e64674b19564d9d86c80ae273144db9681e5eeff66f238ade9515f5006ffbfa955ceff8b89ad2bd8ec577d7caee74ba101431fb07045d - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 17.0.10 - resolution: "@types/node@npm:17.0.10" - checksum: 979e83d642a2b4f18fa1a4233f884822c05abc7acd0836024aa964187f8446432b21f7913e72fe2b3927c4a811c27a0b6cd60ac7c4ac6a6762cfbab70782aa6a - languageName: node - linkType: hard - -"@types/normalize-package-data@npm:^2.4.0": - version: 2.4.1 - resolution: "@types/normalize-package-data@npm:2.4.1" - checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 - languageName: node - linkType: hard - -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b - languageName: node - linkType: hard - -"@types/prettier@npm:^2.1.5": - version: 2.4.3 - resolution: "@types/prettier@npm:2.4.3" - checksum: b240434daabac54700c862b0bb52a83fec396e0e9c847447119ba41fd8404d79aadfa174e6306fb094b29efadac586344b7606c3a71c286b71755ab2579d54df - languageName: node - linkType: hard - -"@types/simple-peer@npm:~9.11.1": - version: 9.11.4 - resolution: "@types/simple-peer@npm:9.11.4" - dependencies: - "@types/node": "*" - checksum: 13cea3c319b2f02b80a3ae5b051714840e8c75e4884b22242991ba0116f2ef10ccdc588853299b1320608ac191ea575544c00e173988ead53c5de96f3131b2fc - languageName: node - linkType: hard - -"@types/sizzle@npm:*": - version: 2.3.3 - resolution: "@types/sizzle@npm:2.3.3" - checksum: 586a9fb1f6ff3e325e0f2cc1596a460615f0bc8a28f6e276ac9b509401039dd242fa8b34496d3a30c52f5b495873922d09a9e76c50c2ab2bcc70ba3fb9c4e160 - languageName: node - linkType: hard - -"@types/stack-utils@npm:^2.0.0": - version: 2.0.1 - resolution: "@types/stack-utils@npm:2.0.1" - checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 - languageName: node - linkType: hard - -"@types/yargs-parser@npm:*": - version: 20.2.1 - resolution: "@types/yargs-parser@npm:20.2.1" - checksum: 1d039e64494a7a61ddd278349a3dc60b19f99ff0517425696e796f794e4252452b9d62178e69755ad03f439f9dc0c8c3d7b3a1201b3a24e134bac1a09fa11eaa - languageName: node - linkType: hard - -"@types/yargs@npm:^16.0.0": - version: 16.0.4 - resolution: "@types/yargs@npm:16.0.4" - dependencies: - "@types/yargs-parser": "*" - checksum: caa21d2c957592fe2184a8368c8cbe5a82a6c2e2f2893722e489f842dc5963293d2f3120bc06fe3933d60a3a0d1e2eb269649fd6b1947fe1820f8841ba611dd9 - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:5.11.0": - version: 5.11.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.11.0" - dependencies: - "@typescript-eslint/scope-manager": 5.11.0 - "@typescript-eslint/type-utils": 5.11.0 - "@typescript-eslint/utils": 5.11.0 - debug: ^4.3.2 - functional-red-black-tree: ^1.0.1 - ignore: ^5.1.8 - regexpp: ^3.2.0 - semver: ^7.3.5 - tsutils: ^3.21.0 - peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: fa546ba4397f3e693870c39d1e8df6feccb728a7092be6312b78806a64c4ff4648cff0462503d3e510e8b173b9704c19e78d2a7af790ab1c0309782e33a89c32 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:5.11.0": - version: 5.11.0 - resolution: "@typescript-eslint/parser@npm:5.11.0" - dependencies: - "@typescript-eslint/scope-manager": 5.11.0 - "@typescript-eslint/types": 5.11.0 - "@typescript-eslint/typescript-estree": 5.11.0 - debug: ^4.3.2 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 521b6e701d877dc0514c6a3992f4900aa6fea28ba7c0bc03c634dad2b50aa195401e45683dfebd9e8492a857cd84bba3b585d8fe8d0cd1d7e2720372c34c50a3 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.10.0": - version: 5.10.0 - resolution: "@typescript-eslint/scope-manager@npm:5.10.0" - dependencies: - "@typescript-eslint/types": 5.10.0 - "@typescript-eslint/visitor-keys": 5.10.0 - checksum: 934cbb4a03d383537fda05b926eeba0597d63ef1c65328d55abe20a060b6559ba2017825e167dc2093a23d675c37aaa2056dec1747b17f0fbca419fba68f8d0f - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.11.0": - version: 5.11.0 - resolution: "@typescript-eslint/scope-manager@npm:5.11.0" - dependencies: - "@typescript-eslint/types": 5.11.0 - "@typescript-eslint/visitor-keys": 5.11.0 - checksum: bf7feaed495ed4cafa1b89a2b73781b30061d019e1c1b3765dc8006e7f36b537f6f451e37c77400067771318b4f0c5915804084dc6299ea7c6ecde2daf0aca1c - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:5.11.0": - version: 5.11.0 - resolution: "@typescript-eslint/type-utils@npm:5.11.0" - dependencies: - "@typescript-eslint/utils": 5.11.0 - debug: ^4.3.2 - tsutils: ^3.21.0 - peerDependencies: - eslint: "*" - peerDependenciesMeta: - typescript: - optional: true - checksum: fd570806d82874289ded6bfd90ff5414d4365b95b4a2e911f7ff2fee6e2c7675d0f2f71580c24cb8be733c3dfe2cd33eedff99ae2aa50f61b1b5af76499074eb - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.10.0": - version: 5.10.0 - resolution: "@typescript-eslint/types@npm:5.10.0" - checksum: 269988cbb1772616ade3af5f70a3c4d7871c90fa04fbc4ed8b1148ec0a6853f2d51609fe51aa797486bfe9b704a4c4a3410e6225470db18850d3469a7db5a63b - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.11.0": - version: 5.11.0 - resolution: "@typescript-eslint/types@npm:5.11.0" - checksum: b1531481da75a6c89510ad03f3db68e4797b25438bb902ee322bd1c154b83396016271cc00356dcdbc300a8ee421493aae803b8c716f36d7b4808fe045ae3a2a - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.10.0": - version: 5.10.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.10.0" - dependencies: - "@typescript-eslint/types": 5.10.0 - "@typescript-eslint/visitor-keys": 5.10.0 - debug: ^4.3.2 - globby: ^11.0.4 - is-glob: ^4.0.3 - semver: ^7.3.5 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 1097fd5a96857a285020a2c5ee7abb7e5984771ac44b61b5d500724dc3ff88030e4e5340fcd872779b1307fbb224240d6543babb901559675efcab20a2dc70dc - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.11.0": - version: 5.11.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.11.0" - dependencies: - "@typescript-eslint/types": 5.11.0 - "@typescript-eslint/visitor-keys": 5.11.0 - debug: ^4.3.2 - globby: ^11.0.4 - is-glob: ^4.0.3 - semver: ^7.3.5 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 7bda55501c586efd7f8065b4158016486d8af92b8419931fbea7cec9bfe074075de8cdebec8baa1ac8a5c3f973599b9dd44a51fced1792176e49cd60cc8e5442 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.11.0": - version: 5.11.0 - resolution: "@typescript-eslint/utils@npm:5.11.0" - dependencies: - "@types/json-schema": ^7.0.9 - "@typescript-eslint/scope-manager": 5.11.0 - "@typescript-eslint/types": 5.11.0 - "@typescript-eslint/typescript-estree": 5.11.0 - eslint-scope: ^5.1.1 - eslint-utils: ^3.0.0 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 5ab1a15db1e0a2fbb857a8a16325459ad3d5239066f2641aa93ad9f7d08252d3a4ca6ae356c51cba1c6c81a65d84883436566b01932fa55b64a69796b950900d - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:^5.10.0": - version: 5.10.0 - resolution: "@typescript-eslint/utils@npm:5.10.0" - dependencies: - "@types/json-schema": ^7.0.9 - "@typescript-eslint/scope-manager": 5.10.0 - "@typescript-eslint/types": 5.10.0 - "@typescript-eslint/typescript-estree": 5.10.0 - eslint-scope: ^5.1.1 - eslint-utils: ^3.0.0 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 9c53b0e47b922210c5dc0c7ac045206062ad4f21f9bf03ef091894d3fcfe9fde7e72c70a97b5073a54a42b7628943dd8dcef00bd3285ebd63039909888dea84a - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.10.0": - version: 5.10.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.10.0" - dependencies: - "@typescript-eslint/types": 5.10.0 - eslint-visitor-keys: ^3.0.0 - checksum: 9b99c6be709c59be6a1705f0244aad732a5e523af8b8eb87e5dd6a3d27a027329bf2617aa6f15a36f79bce4215ac09277e144737a0d8d674e93b073b36fd963e - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.11.0": - version: 5.11.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.11.0" - dependencies: - "@typescript-eslint/types": 5.11.0 - eslint-visitor-keys: ^3.0.0 - checksum: 8f0b6fe1e86bc93825a137be3220f57e3a4bee410cca5d35963a0cd416750b31291a73c4294676d94ed0f5066b4cfb3a8f512d409881daa550d1645f4381eb21 - languageName: node - linkType: hard - -"JSONStream@npm:^1.0.4": - version: 1.3.5 - resolution: "JSONStream@npm:1.3.5" - dependencies: - jsonparse: ^1.2.0 - through: ">=2.2.7 <3" - bin: - JSONStream: ./bin.js - checksum: 2605fa124260c61bad38bb65eba30d2f72216a78e94d0ab19b11b4e0327d572b8d530c0c9cc3b0764f727ad26d39e00bf7ebad57781ca6368394d73169c59e46 - languageName: node - linkType: hard - -"abab@npm:^2.0.3, abab@npm:^2.0.5": - version: 2.0.5 - resolution: "abab@npm:2.0.5" - checksum: 0ec951b46d5418c2c2f923021ec193eaebdb4e802ffd5506286781b454be722a13a8430f98085cd3e204918401d9130ec6cc8f5ae19be315b3a0e857d83196e1 - languageName: node - linkType: hard - -"abbrev@npm:1": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 - languageName: node - linkType: hard - -"acorn-globals@npm:^6.0.0": - version: 6.0.0 - resolution: "acorn-globals@npm:6.0.0" - dependencies: - acorn: ^7.1.1 - acorn-walk: ^7.1.1 - checksum: 72d95e5b5e585f9acd019b993ab8bbba68bb3cbc9d9b5c1ebb3c2f1fe5981f11deababfb4949f48e6262f9c57878837f5958c0cca396f81023814680ca878042 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.1": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 - languageName: node - linkType: hard - -"acorn-walk@npm:^7.1.1": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f - languageName: node - linkType: hard - -"acorn-walk@npm:^8.1.1": - version: 8.2.0 - resolution: "acorn-walk@npm:8.2.0" - checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 - languageName: node - linkType: hard - -"acorn@npm:^7.1.1": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 1860f23c2107c910c6177b7b7be71be350db9e1080d814493fae143ae37605189504152d1ba8743ba3178d0b37269ce1ffc42b101547fdc1827078f82671e407 - languageName: node - linkType: hard - -"acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.7.0": - version: 8.7.0 - resolution: "acorn@npm:8.7.0" - bin: - acorn: bin/acorn - checksum: e0f79409d68923fbf1aa6d4166f3eedc47955320d25c89a20cc822e6ba7c48c5963d5bc657bc242d68f7a4ac9faf96eef033e8f73656da6c640d4219935fdfd0 - languageName: node - linkType: hard - -"add-stream@npm:^1.0.0": - version: 1.0.0 - resolution: "add-stream@npm:1.0.0" - checksum: 3e9e8b0b8f0170406d7c3a9a39bfbdf419ccccb0fd2a396338c0fda0a339af73bf738ad414fc520741de74517acf0dd92b4a36fd3298a47fd5371eee8f2c5a06 - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.1.3": - version: 4.2.0 - resolution: "agentkeepalive@npm:4.2.0" - dependencies: - debug: ^4.1.0 - depd: ^1.1.2 - humanize-ms: ^1.2.1 - checksum: 89806f83ceebbcaabf6bd581a8dce4870910fd2a11f66df8f505b4cd4ce4ca5ab9e6eec8d11ce8531a6b60f6748b75b0775e0e2fa33871503ef00d535418a19a - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - -"ajv@npm:^6.10.0, ajv@npm:^6.12.4, ajv@npm:^6.12.6": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - 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 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 - languageName: node - linkType: hard - -"alphanum-sort@npm:^1.0.2": - version: 1.0.2 - resolution: "alphanum-sort@npm:1.0.2" - checksum: 5a32d0b3c0944e65d22ff3ae2f88d7a4f8d88a78a703033caeae33f2944915e053d283d02f630dc94823edc7757148ecdcf39fd687a5117bda5c10133a03a7d8 - languageName: node - linkType: hard - -"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: ^0.21.3 - checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 - languageName: node - linkType: hard - -"ansi-styles@npm:^5.0.0": - version: 5.2.0 - resolution: "ansi-styles@npm:5.2.0" - checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 - languageName: node - linkType: hard - -"ansi-styles@npm:^6.0.0": - version: 6.1.0 - resolution: "ansi-styles@npm:6.1.0" - checksum: 7a7f8528c07a9d20c3a92bccd2b6bc3bb4d26e5cb775c02826921477377bd495d615d61f710d56216344b6238d1d11ef2b0348e146c5b128715578bfb3217229 - languageName: node - linkType: hard - -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": - version: 3.1.2 - resolution: "anymatch@npm:3.1.2" - dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 - languageName: node - linkType: hard - -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 - languageName: node - linkType: hard - -"are-we-there-yet@npm:^2.0.0": - version: 2.0.0 - resolution: "are-we-there-yet@npm:2.0.0" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c - languageName: node - linkType: hard - -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 544af8dd3f60546d3e4aff084d451b96961d2267d668670199692f8d054f0415d86fc5497d0e641e91546f0aa920e7c29e5250e99fc89f5552a34b5d93b77f43 - languageName: node - linkType: hard - -"argparse@npm:^1.0.7": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: ~1.0.2 - checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced - languageName: node - linkType: hard - -"array-ify@npm:^1.0.0": - version: 1.0.0 - resolution: "array-ify@npm:1.0.0" - checksum: c0502015b319c93dd4484f18036bcc4b654eb76a4aa1f04afbcef11ac918859bb1f5d71ba1f0f1141770db9eef1a4f40f1761753650873068010bbf7bcdae4a4 - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d - languageName: node - linkType: hard - -"arrify@npm:^1.0.1": - version: 1.0.1 - resolution: "arrify@npm:1.0.1" - checksum: 745075dd4a4624ff0225c331dacb99be501a515d39bcb7c84d24660314a6ec28e68131b137e6f7e16318170842ce97538cd298fc4cd6b2cc798e0b957f2747e7 - languageName: node - linkType: hard - -"astral-regex@npm:^2.0.0": - version: 2.0.0 - resolution: "astral-regex@npm:2.0.0" - checksum: 876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 - languageName: node - linkType: hard - -"async@npm:0.2.10": - version: 0.2.10 - resolution: "async@npm:0.2.10" - checksum: 9ea83419ba67dc4ecf42d4eb0d93ce0ac80a67cabb612f160ed096aef5d001e3184ec9e9be5d4dc39b2c51a34e2ae16f9b21d737068b0f615fccb4eea16d0138 - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be - languageName: node - linkType: hard - -"babel-jest@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-jest@npm:27.5.1" - dependencies: - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/babel__core": ^7.1.14 - babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^27.5.1 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - slash: ^3.0.0 - peerDependencies: - "@babel/core": ^7.8.0 - checksum: 4e93e6e9fb996cc5f1505e924eb8e8cc7b25c294ba9629762a2715390f48af6a4c14dbb84cd9730013ac0e03267a5a9aa2fb6318c544489cda7f50f4e506def4 - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.1.1": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@istanbuljs/load-nyc-config": ^1.0.0 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-instrument: ^5.0.4 - test-exclude: ^6.0.0 - checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-plugin-jest-hoist@npm:27.5.1" - dependencies: - "@babel/template": ^7.3.3 - "@babel/types": ^7.3.3 - "@types/babel__core": ^7.0.0 - "@types/babel__traverse": ^7.0.6 - checksum: 709c17727aa8fd3be755d256fb514bf945a5c2ea6017f037d80280fc44ae5fe7dfeebf63d8412df53796455c2c216119d628d8cc90b099434fd819005943d058 - languageName: node - linkType: hard - -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.0.1 - resolution: "babel-preset-current-node-syntax@npm:1.0.1" - dependencies: - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-bigint": ^7.8.3 - "@babel/plugin-syntax-class-properties": ^7.8.3 - "@babel/plugin-syntax-import-meta": ^7.8.3 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.8.3 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.8.3 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-top-level-await": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: d118c2742498c5492c095bc8541f4076b253e705b5f1ad9a2e7d302d81a84866f0070346662355c8e25fc02caa28dc2da8d69bcd67794a0d60c4d6fab6913cc8 - languageName: node - linkType: hard - -"babel-preset-jest@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-preset-jest@npm:27.5.1" - dependencies: - babel-plugin-jest-hoist: ^27.5.1 - babel-preset-current-node-syntax: ^1.0.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 251bcea11c18fd9672fec104eadb45b43f117ceeb326fa7345ced778d4c1feab29343cd7a87a1dcfae4997d6c851a8b386d7f7213792da6e23b74f4443a8976d - languageName: node - linkType: hard - -"backo2@npm:~1.0.2": - version: 1.0.2 - resolution: "backo2@npm:1.0.2" - checksum: fda8d0a0f4810068d23715f2f45153146d6ee8f62dd827ce1e0b6cc3c8328e84ad61e11399a83931705cef702fe7cbb457856bf99b9bd10c4ed57b0786252385 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 - languageName: node - linkType: hard - -"boolbase@npm:^1.0.0": - version: 1.0.0 - resolution: "boolbase@npm:1.0.0" - checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 - languageName: node - linkType: hard - -"braces@npm:^3.0.1, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"browser-process-hrtime@npm:^1.0.0": - version: 1.0.0 - resolution: "browser-process-hrtime@npm:1.0.0" - checksum: e30f868cdb770b1201afb714ad1575dd86366b6e861900884665fb627109b3cc757c40067d3bfee1ff2a29c835257ea30725a8018a9afd02ac1c24b408b1e45f - languageName: node - linkType: hard - -"browserslist@npm:^4.0.0, browserslist@npm:^4.16.0, browserslist@npm:^4.16.6, browserslist@npm:^4.17.5": - version: 4.19.1 - resolution: "browserslist@npm:4.19.1" - dependencies: - caniuse-lite: ^1.0.30001286 - electron-to-chromium: ^1.4.17 - escalade: ^3.1.1 - node-releases: ^2.0.1 - picocolors: ^1.0.0 - bin: - browserslist: cli.js - checksum: c0777fd483691638fd6801e16c9d809e1d65f6d2b06db2e806654be51045cbab1452a89841a2c5caea2cbe19d621b4f1d391cffbb24512aa33280039ab345875 - languageName: node - linkType: hard - -"bs-logger@npm:0.x": - version: 0.2.6 - resolution: "bs-logger@npm:0.2.6" - dependencies: - fast-json-stable-stringify: 2.x - checksum: d34bdaf68c64bd099ab97c3ea608c9ae7d3f5faa1178b3f3f345acd94e852e608b2d4f9103fb2e503f5e69780e98293df41691b84be909b41cf5045374d54606 - languageName: node - linkType: hard - -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: ^0.4.0 - checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb - languageName: node - linkType: hard - -"cacache@npm:^15.2.0": - version: 15.3.0 - resolution: "cacache@npm:15.3.0" - 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 - checksum: a07327c27a4152c04eb0a831c63c00390d90f94d51bb80624a66f4e14a6b6360bbf02a84421267bd4d00ca73ac9773287d8d7169e8d2eafe378d2ce140579db8 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 - languageName: node - linkType: hard - -"callsites@npm:^3.0.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 - languageName: node - linkType: hard - -"camelcase-keys@npm:^6.2.2": - version: 6.2.2 - resolution: "camelcase-keys@npm:6.2.2" - dependencies: - camelcase: ^5.3.1 - map-obj: ^4.0.0 - quick-lru: ^4.0.1 - checksum: 43c9af1adf840471e54c68ab3e5fe8a62719a6b7dbf4e2e86886b7b0ff96112c945736342b837bd2529ec9d1c7d1934e5653318478d98e0cf22c475c04658e2a - languageName: node - linkType: hard - -"camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b - languageName: node - linkType: hard - -"camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d - languageName: node - linkType: hard - -"caniuse-api@npm:^3.0.0": - version: 3.0.0 - resolution: "caniuse-api@npm:3.0.0" - dependencies: - browserslist: ^4.0.0 - caniuse-lite: ^1.0.0 - lodash.memoize: ^4.1.2 - lodash.uniq: ^4.5.0 - checksum: db2a229383b20d0529b6b589dde99d7b6cb56ba371366f58cbbfa2929c9f42c01f873e2b6ef641d4eda9f0b4118de77dbb2805814670bdad4234bf08e720b0b4 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001286": - version: 1.0.30001301 - resolution: "caniuse-lite@npm:1.0.30001301" - checksum: 0e359f2c682bed35521902ce7fc91136c485de4c1e1e33272d6fbb7cdf77178df7649960a9b69ce9da12022aadd7a0037b3c9b3594c41146d58216654dc9a236 - languageName: node - linkType: hard - -"chalk@npm:^2.0.0, chalk@npm:^2.4.1": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 - languageName: node - linkType: hard - -"chalk@npm:^4.0.0, chalk@npm:^4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc - languageName: node - linkType: hard - -"char-regex@npm:^1.0.2": - version: 1.0.2 - resolution: "char-regex@npm:1.0.2" - checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 - languageName: node - linkType: hard - -"chokidar@npm:>=3.0.0 <4.0.0": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" - dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.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 - dependenciesMeta: - fsevents: - optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0": - version: 3.3.0 - resolution: "ci-info@npm:3.3.0" - checksum: c3d86fe374938ecda5093b1ba39acb535d8309185ba3f23587747c6a057e63f45419b406d880304dbc0e1d72392c9a33e42fe9a1e299209bc0ded5efaa232b66 - languageName: node - linkType: hard - -"cjs-module-lexer@npm:^1.0.0": - version: 1.2.2 - resolution: "cjs-module-lexer@npm:1.2.2" - checksum: 977f3f042bd4f08e368c890d91eecfbc4f91da0bc009a3c557bc4dfbf32022ad1141244ac1178d44de70fc9f3dea7add7cd9a658a34b9fae98a55d8f92331ce5 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - -"cli-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "cli-cursor@npm:3.1.0" - dependencies: - restore-cursor: ^3.1.0 - checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 - languageName: node - linkType: hard - -"cli-truncate@npm:^2.1.0": - version: 2.1.0 - resolution: "cli-truncate@npm:2.1.0" - dependencies: - slice-ansi: ^3.0.0 - string-width: ^4.2.0 - checksum: bf1e4e6195392dc718bf9cd71f317b6300dc4a9191d052f31046b8773230ece4fa09458813bf0e3455a5e68c0690d2ea2c197d14a8b85a7b5e01c97f4b5feb5d - languageName: node - linkType: hard - -"cli-truncate@npm:^3.1.0": - version: 3.1.0 - resolution: "cli-truncate@npm:3.1.0" - dependencies: - slice-ansi: ^5.0.0 - string-width: ^5.0.0 - checksum: c3243e41974445691c63f8b405df1d5a24049dc33d324fe448dc572e561a7b772ae982692900b1a5960901cc4fc7def25a629b9c69a4208ee89d12ab3332617a - languageName: node - linkType: hard - -"cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" - dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - wrap-ansi: ^7.0.0 - checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f - languageName: node - linkType: hard - -"co@npm:^4.6.0": - version: 4.6.0 - resolution: "co@npm:4.6.0" - checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 - languageName: node - linkType: hard - -"collect-v8-coverage@npm:^1.0.0": - version: 1.0.1 - resolution: "collect-v8-coverage@npm:1.0.1" - checksum: 4efe0a1fccd517b65478a2364b33dadd0a43fc92a56f59aaece9b6186fe5177b2de471253587de7c91516f07c7268c2f6770b6cbcffc0e0ece353b766ec87e55 - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 - languageName: node - linkType: hard - -"color-support@npm:^1.1.2": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b - languageName: node - linkType: hard - -"colord@npm:^2.9.1": - version: 2.9.2 - resolution: "colord@npm:2.9.2" - checksum: 2aa6a9b3abbce74ba3c563886cfeb433ea0d7df5ad6f4a560005eddab1ddf7c0fc98f39b09b599767a19c86dd3837b77f66f036e479515d4b17347006dbd6d9f - languageName: node - linkType: hard - -"colorette@npm:^2.0.16": - version: 2.0.16 - resolution: "colorette@npm:2.0.16" - checksum: cd55596a3a2d1071c1a28eee7fd8a5387593ff1bd10a3e8d0a6221499311fe34a9f2b9272d77c391e0e003dcdc8934fb2f8d106e7ef1f7516f8060c901d41a27 - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c - languageName: node - linkType: hard - -"commander@npm:^2.20.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e - languageName: node - linkType: hard - -"commander@npm:^7.2.0": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc - languageName: node - linkType: hard - -"commander@npm:^8.3.0": - version: 8.3.0 - resolution: "commander@npm:8.3.0" - checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 - languageName: node - linkType: hard - -"compare-func@npm:^2.0.0": - version: 2.0.0 - resolution: "compare-func@npm:2.0.0" - dependencies: - array-ify: ^1.0.0 - dot-prop: ^5.1.0 - checksum: fb71d70632baa1e93283cf9d80f30ac97f003aabee026e0b4426c9716678079ef5fea7519b84d012cbed938c476493866a38a79760564a9e21ae9433e40e6f0d - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af - languageName: node - linkType: hard - -"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed - languageName: node - linkType: hard - -"conventional-changelog-angular@npm:^5.0.11, conventional-changelog-angular@npm:^5.0.12": - version: 5.0.13 - resolution: "conventional-changelog-angular@npm:5.0.13" - dependencies: - compare-func: ^2.0.0 - q: ^1.5.1 - checksum: 6ed4972fce25a50f9f038c749cc9db501363131b0fb2efc1fccecba14e4b1c80651d0d758d4c350a609f32010c66fa343eefd49c02e79e911884be28f53f3f90 - languageName: node - linkType: hard - -"conventional-changelog-atom@npm:^2.0.8": - version: 2.0.8 - resolution: "conventional-changelog-atom@npm:2.0.8" - dependencies: - q: ^1.5.1 - checksum: 12ecbd928f8c261f9afaac067fcc0cf10ff6ac8505e4285dc3d9959ee072a8937ac942d505e850dce27c4527046009adb22b498ba0b10802916d2c7d2dc1f7bc - languageName: node - linkType: hard - -"conventional-changelog-cli@npm:2.2.2": - version: 2.2.2 - resolution: "conventional-changelog-cli@npm:2.2.2" - dependencies: - add-stream: ^1.0.0 - conventional-changelog: ^3.1.24 - lodash: ^4.17.15 - meow: ^8.0.0 - tempfile: ^3.0.0 - bin: - conventional-changelog: cli.js - checksum: 749562d3ebc48eaf8f37c79fa2c0502abb58ca52adda3a495058d995456f33e039d4f65555e95c7d88e313d2bf0afcef339c8b19a71ebe51bc8ee05340e9fffd - languageName: node - linkType: hard - -"conventional-changelog-codemirror@npm:^2.0.8": - version: 2.0.8 - resolution: "conventional-changelog-codemirror@npm:2.0.8" - dependencies: - q: ^1.5.1 - checksum: cf331db40cc54c2353b0189aba26a2b959cb08b059bf2a81245272027371519c9acc90d574295782985829c50f0c52da60c952c70ec6dbd70e9e17affeb61453 - languageName: node - linkType: hard - -"conventional-changelog-conventionalcommits@npm:4.6.3, conventional-changelog-conventionalcommits@npm:^4.3.1, conventional-changelog-conventionalcommits@npm:^4.5.0": - version: 4.6.3 - resolution: "conventional-changelog-conventionalcommits@npm:4.6.3" - dependencies: - compare-func: ^2.0.0 - lodash: ^4.17.15 - q: ^1.5.1 - checksum: 7b8e8a21ebb56f9aaa510e12917b7c609202072c3e71089e0a09630c37c2e8146cdb04364809839b0e3eb55f807fe84d03b2079500b37f6186d505848be5c562 - languageName: node - linkType: hard - -"conventional-changelog-core@npm:^4.2.1": - version: 4.2.4 - resolution: "conventional-changelog-core@npm:4.2.4" - dependencies: - add-stream: ^1.0.0 - conventional-changelog-writer: ^5.0.0 - conventional-commits-parser: ^3.2.0 - dateformat: ^3.0.0 - get-pkg-repo: ^4.0.0 - git-raw-commits: ^2.0.8 - git-remote-origin-url: ^2.0.0 - git-semver-tags: ^4.1.1 - lodash: ^4.17.15 - normalize-package-data: ^3.0.0 - q: ^1.5.1 - read-pkg: ^3.0.0 - read-pkg-up: ^3.0.0 - through2: ^4.0.0 - checksum: 56d5194040495ea316e53fd64cb3614462c318f0fe54b1bf25aba6fba9b3d51cb9fdf7ac5b766f17e5529a3f90e317257394e00b0a9a5ce42caf3a59f82afb3a - languageName: node - linkType: hard - -"conventional-changelog-ember@npm:^2.0.9": - version: 2.0.9 - resolution: "conventional-changelog-ember@npm:2.0.9" - dependencies: - q: ^1.5.1 - checksum: 30c7bd48ce995e39fc91bcd8c719b2bee10cb408c246a6a7de6cec44a3ca12afe5a86f57f55aa1fd2c64beb484c68013d16658047e6273f130c1c80e7dad38e9 - languageName: node - linkType: hard - -"conventional-changelog-eslint@npm:^3.0.9": - version: 3.0.9 - resolution: "conventional-changelog-eslint@npm:3.0.9" - dependencies: - q: ^1.5.1 - checksum: 402ae73a8c5390405d4f902819f630f56fa7dfa8f6bef77b3b5f2fb7c8bd17f64ad83edbacc030cfef5b84400ab722d4f166dd906296a4d286e66205c1bd8a3f - languageName: node - linkType: hard - -"conventional-changelog-express@npm:^2.0.6": - version: 2.0.6 - resolution: "conventional-changelog-express@npm:2.0.6" - dependencies: - q: ^1.5.1 - checksum: c139fa9878971455cce9904a195d92f770679d24a88ef07a016a6954e28f0f237ec59e45f2591b2fc9b8e10fd46c30150ddf0ce50a2cb03be85cae0ee64d4cdd - languageName: node - linkType: hard - -"conventional-changelog-jquery@npm:^3.0.11": - version: 3.0.11 - resolution: "conventional-changelog-jquery@npm:3.0.11" - dependencies: - q: ^1.5.1 - checksum: df1145467c75e8e61f35ed24d7539e8b7dcdc810b86267b0173420c8955590cca139eb51f89ac255d70c632433d996b0ed227cb1acdf59537f3d2f4ad9c770d3 - languageName: node - linkType: hard - -"conventional-changelog-jshint@npm:^2.0.9": - version: 2.0.9 - resolution: "conventional-changelog-jshint@npm:2.0.9" - dependencies: - compare-func: ^2.0.0 - q: ^1.5.1 - checksum: ec96144b75fdb84c4a6f7db9b671dc258d964cd7aa35f9b00539e42bbe05601a9127c17cf0dcc315ae81a0dd20fe795d9d41dd90373928d24b33f065728eb2e2 - languageName: node - linkType: hard - -"conventional-changelog-preset-loader@npm:^2.3.4": - version: 2.3.4 - resolution: "conventional-changelog-preset-loader@npm:2.3.4" - checksum: 23a889b7fcf6fe7653e61f32a048877b2f954dcc1e0daa2848c5422eb908e6f24c78372f8d0d2130b5ed941c02e7010c599dccf44b8552602c6c8db9cb227453 - languageName: node - linkType: hard - -"conventional-changelog-writer@npm:^5.0.0": - version: 5.0.1 - resolution: "conventional-changelog-writer@npm:5.0.1" - dependencies: - conventional-commits-filter: ^2.0.7 - dateformat: ^3.0.0 - handlebars: ^4.7.7 - json-stringify-safe: ^5.0.1 - lodash: ^4.17.15 - meow: ^8.0.0 - semver: ^6.0.0 - split: ^1.0.0 - through2: ^4.0.0 - bin: - conventional-changelog-writer: cli.js - checksum: 5c0129db44577f14b1f8de225b62a392a9927ba7fe3422cb21ad71a771b8472bd03badb7c87cb47419913abc3f2ce3759b69f59550cdc6f7a7b0459015b3b44c - languageName: node - linkType: hard - -"conventional-changelog@npm:^3.1.24": - version: 3.1.25 - resolution: "conventional-changelog@npm:3.1.25" - dependencies: - conventional-changelog-angular: ^5.0.12 - conventional-changelog-atom: ^2.0.8 - conventional-changelog-codemirror: ^2.0.8 - conventional-changelog-conventionalcommits: ^4.5.0 - conventional-changelog-core: ^4.2.1 - conventional-changelog-ember: ^2.0.9 - conventional-changelog-eslint: ^3.0.9 - conventional-changelog-express: ^2.0.6 - conventional-changelog-jquery: ^3.0.11 - conventional-changelog-jshint: ^2.0.9 - conventional-changelog-preset-loader: ^2.3.4 - checksum: 1ea18378120cca9fd459f58ed2cf59170773cbfb2fcecad2504c7c44af076c368950013fa16f5e9428f1d723bea4c16e0c48170e152568b73b254a9c1bb93287 - languageName: node - linkType: hard - -"conventional-commits-filter@npm:^2.0.7": - version: 2.0.7 - resolution: "conventional-commits-filter@npm:2.0.7" - dependencies: - lodash.ismatch: ^4.4.0 - modify-values: ^1.0.0 - checksum: feb567f680a6da1baaa1ef3cff393b3c56a5828f77ab9df5e70626475425d109a6fee0289b4979223c62bbd63bf9c98ef532baa6fcb1b66ee8b5f49077f5d46c - languageName: node - linkType: hard - -"conventional-commits-parser@npm:^3.2.0, conventional-commits-parser@npm:^3.2.2": - version: 3.2.4 - resolution: "conventional-commits-parser@npm:3.2.4" - dependencies: - JSONStream: ^1.0.4 - is-text-path: ^1.0.1 - lodash: ^4.17.15 - meow: ^8.0.0 - split2: ^3.0.0 - through2: ^4.0.0 - bin: - conventional-commits-parser: cli.js - checksum: 1627ff203bc9586d89e47a7fe63acecf339aba74903b9114e23d28094f79d4e2d6389bf146ae561461dcba8fc42e7bc228165d2b173f15756c43f1d32bc50bfd - languageName: node - linkType: hard - -"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": - version: 1.8.0 - resolution: "convert-source-map@npm:1.8.0" - dependencies: - safe-buffer: ~5.1.1 - checksum: 985d974a2d33e1a2543ada51c93e1ba2f73eaed608dc39f229afc78f71dcc4c8b7d7c684aa647e3c6a3a204027444d69e53e169ce94e8d1fa8d7dee80c9c8fed - languageName: node - linkType: hard - -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 - languageName: node - linkType: hard - -"cosmiconfig-typescript-loader@npm:^1.0.0": - version: 1.0.3 - resolution: "cosmiconfig-typescript-loader@npm:1.0.3" - dependencies: - cosmiconfig: ^7 - ts-node: ^10.4.0 - peerDependencies: - "@types/node": "*" - cosmiconfig: ">=7" - typescript: ">=3" - checksum: 04ff1b23298d1e53d98266668fee8a433cd88b1d22a0bbf1cbfa90fdf0a73f8c68538ad628152dd6ea37eb4651bdf892fb1118fa602c87a009ffce256f43fe4b - languageName: node - linkType: hard - -"cosmiconfig@npm:^7, cosmiconfig@npm:^7.0.0, cosmiconfig@npm:^7.0.1": - version: 7.0.1 - resolution: "cosmiconfig@npm:7.0.1" - dependencies: - "@types/parse-json": ^4.0.0 - import-fresh: ^3.2.1 - parse-json: ^5.0.0 - path-type: ^4.0.0 - yaml: ^1.10.0 - checksum: 4be63e7117955fd88333d7460e4c466a90f556df6ef34efd59034d2463484e339666c41f02b523d574a797ec61f4a91918c5b89a316db2ea2f834e0d2d09465b - languageName: node - linkType: hard - -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff - languageName: node - linkType: hard - -"cross-spawn@npm:^6.0.5": - version: 6.0.5 - resolution: "cross-spawn@npm:6.0.5" - dependencies: - nice-try: ^1.0.4 - path-key: ^2.0.1 - semver: ^5.5.0 - shebang-command: ^1.2.0 - which: ^1.2.9 - checksum: f893bb0d96cd3d5751d04e67145bdddf25f99449531a72e82dcbbd42796bbc8268c1076c6b3ea51d4d455839902804b94bc45dfb37ecbb32ea8e54a6741c3ab9 - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: ^3.1.0 - shebang-command: ^2.0.0 - which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 - languageName: node - linkType: hard - -"css-declaration-sorter@npm:^6.0.3": - version: 6.1.4 - resolution: "css-declaration-sorter@npm:6.1.4" - dependencies: - timsort: ^0.3.0 - peerDependencies: - postcss: ^8.0.9 - checksum: 72800a234f0d4facf44a5b504170749b854cd3bd6bf16d0955b3e70a1b613cec0192f585a81e8db1f03c035b13ca9494698a7eaaf861150db51c2f8f643e8ffb - languageName: node - linkType: hard - -"css-select@npm:^4.1.3": - version: 4.2.1 - resolution: "css-select@npm:4.2.1" - dependencies: - boolbase: ^1.0.0 - css-what: ^5.1.0 - domhandler: ^4.3.0 - domutils: ^2.8.0 - nth-check: ^2.0.1 - checksum: 6617193ec7c332217204c4ea371d332c6845603fda415e36032e7e9e18206d7c368a14e3c57532082314d2689955b01122aa1097c1c52b6c1cab7ad90970d3c6 - languageName: node - linkType: hard - -"css-tree@npm:^1.1.2, css-tree@npm:^1.1.3": - version: 1.1.3 - resolution: "css-tree@npm:1.1.3" - dependencies: - mdn-data: 2.0.14 - source-map: ^0.6.1 - checksum: 79f9b81803991b6977b7fcb1588799270438274d89066ce08f117f5cdb5e20019b446d766c61506dd772c839df84caa16042d6076f20c97187f5abe3b50e7d1f - languageName: node - linkType: hard - -"css-what@npm:^5.1.0": - version: 5.1.0 - resolution: "css-what@npm:5.1.0" - checksum: 0b75d1bac95c885c168573c85744a6c6843d8c33345f54f717218b37ea6296b0e99bb12105930ea170fd4a921990392a7c790c16c585c1d8960c49e2b7ec39f7 - languageName: node - linkType: hard - -"cssesc@npm:^3.0.0": - version: 3.0.0 - resolution: "cssesc@npm:3.0.0" - bin: - cssesc: bin/cssesc - checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 - languageName: node - linkType: hard - -"cssnano-preset-default@npm:^5.1.10": - version: 5.1.10 - resolution: "cssnano-preset-default@npm:5.1.10" - dependencies: - css-declaration-sorter: ^6.0.3 - cssnano-utils: ^3.0.0 - postcss-calc: ^8.2.0 - postcss-colormin: ^5.2.3 - postcss-convert-values: ^5.0.2 - postcss-discard-comments: ^5.0.1 - postcss-discard-duplicates: ^5.0.1 - postcss-discard-empty: ^5.0.1 - postcss-discard-overridden: ^5.0.2 - postcss-merge-longhand: ^5.0.4 - postcss-merge-rules: ^5.0.4 - postcss-minify-font-values: ^5.0.2 - postcss-minify-gradients: ^5.0.4 - postcss-minify-params: ^5.0.3 - postcss-minify-selectors: ^5.1.1 - postcss-normalize-charset: ^5.0.1 - postcss-normalize-display-values: ^5.0.2 - postcss-normalize-positions: ^5.0.2 - postcss-normalize-repeat-style: ^5.0.2 - postcss-normalize-string: ^5.0.2 - postcss-normalize-timing-functions: ^5.0.2 - postcss-normalize-unicode: ^5.0.2 - postcss-normalize-url: ^5.0.4 - postcss-normalize-whitespace: ^5.0.2 - postcss-ordered-values: ^5.0.3 - postcss-reduce-initial: ^5.0.2 - postcss-reduce-transforms: ^5.0.2 - postcss-svgo: ^5.0.3 - postcss-unique-selectors: ^5.0.2 - peerDependencies: - postcss: ^8.2.15 - checksum: c5170319bdd915faf36e71ace4a6e7c755258b4084fd3e6fcc46c2fd3256bb583fe582c36a3c06b2b78bc7075539ae1da7bdc3051e6b94189326f31c85ca503e - languageName: node - linkType: hard - -"cssnano-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "cssnano-utils@npm:3.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 7a730c8e5411cf7dd2bb516fd7158488263a9ea6a50b7b2d284cd46714a9a880d3a415d3026760830a5b11adb818f3bde9c1ded907b9daf5cc5cd9d9e8a33e7e - languageName: node - linkType: hard - -"cssnano@npm:^5.0.15": - version: 5.0.15 - resolution: "cssnano@npm:5.0.15" - dependencies: - cssnano-preset-default: ^5.1.10 - lilconfig: ^2.0.3 - yaml: ^1.10.2 - peerDependencies: - postcss: ^8.2.15 - checksum: 7b4d5d8a00b28a7dceab4d8f23d3d8e71ec8c26d445b828f70ca151bda1fe5ff033279d28064620c3f2b7a0b015f99c7887ccae505cf8c87219dcbe4bf7de30b - languageName: node - linkType: hard - -"csso@npm:^4.2.0": - version: 4.2.0 - resolution: "csso@npm:4.2.0" - dependencies: - css-tree: ^1.1.2 - checksum: 380ba9663da3bcea58dee358a0d8c4468bb6539be3c439dc266ac41c047217f52fd698fb7e4b6b6ccdfb8cf53ef4ceed8cc8ceccb8dfca2aa628319826b5b998 - languageName: node - linkType: hard - -"cssom@npm:^0.4.4": - version: 0.4.4 - resolution: "cssom@npm:0.4.4" - checksum: e3bc1076e7ee4213d4fef05e7ae03bfa83dc05f32611d8edc341f4ecc3d9647b89c8245474c7dd2cdcdb797a27c462e99da7ad00a34399694559f763478ff53f - languageName: node - linkType: hard - -"cssom@npm:~0.3.6": - version: 0.3.8 - resolution: "cssom@npm:0.3.8" - checksum: 24beb3087c76c0d52dd458be9ee1fbc80ac771478a9baef35dd258cdeb527c68eb43204dd439692bb2b1ae5272fa5f2946d10946edab0d04f1078f85e06bc7f6 - languageName: node - linkType: hard - -"cssstyle@npm:^2.3.0": - version: 2.3.0 - resolution: "cssstyle@npm:2.3.0" - dependencies: - cssom: ~0.3.6 - checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3 - languageName: node - linkType: hard - -"dargs@npm:^7.0.0": - version: 7.0.0 - resolution: "dargs@npm:7.0.0" - checksum: b8f1e3cba59c42e1f13a114ad4848c3fc1cf7470f633ee9e9f1043762429bc97d91ae31b826fb135eefde203a3fdb20deb0c0a0222ac29d937b8046085d668d1 - languageName: node - linkType: hard - -"data-urls@npm:^2.0.0": - version: 2.0.0 - resolution: "data-urls@npm:2.0.0" - dependencies: - abab: ^2.0.3 - whatwg-mimetype: ^2.3.0 - whatwg-url: ^8.0.0 - checksum: 97caf828aac25e25e04ba6869db0f99c75e6859bb5b424ada28d3e7841941ebf08ddff3c1b1bb4585986bd507a5d54c2a716853ea6cb98af877400e637393e71 - languageName: node - linkType: hard - -"dateformat@npm:^3.0.0": - version: 3.0.3 - resolution: "dateformat@npm:3.0.3" - checksum: ca4911148abb09887bd9bdcd632c399b06f3ecad709a18eb594d289a1031982f441e08e281db77ffebcb2cbcbfa1ac578a7cbfbf8743f41009aa5adc1846ed34 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:~4.3.1, debug@npm:~4.3.2": - version: 4.3.3 - resolution: "debug@npm:4.3.3" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 14472d56fe4a94dbcfaa6dbed2dd3849f1d72ba78104a1a328047bb564643ca49df0224c3a17fa63533fd11dd3d4c8636cd861191232a2c6735af00cc2d4de16 - languageName: node - linkType: hard - -"decamelize-keys@npm:^1.1.0": - version: 1.1.0 - resolution: "decamelize-keys@npm:1.1.0" - dependencies: - decamelize: ^1.1.0 - map-obj: ^1.0.0 - checksum: 8bc5d32e035a072f5dffc1f1f3d26ca7ab1fb44a9cade34c97ab6cd1e62c81a87e718101e96de07d78cecda20a3fdb955df958e46671ccad01bb8dcf0de2e298 - languageName: node - linkType: hard - -"decamelize@npm:^1.1.0": - version: 1.2.0 - resolution: "decamelize@npm:1.2.0" - checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa - languageName: node - linkType: hard - -"decimal.js@npm:^10.2.1": - version: 10.3.1 - resolution: "decimal.js@npm:10.3.1" - checksum: 0351ac9f05fe050f23227aa6a4573bee2d58fa7378fcf28d969a8c789525032effb488a90320fd3fe86a66e17b4bc507d811b15eada5b7f0e7ec5d2af4c24a59 - languageName: node - linkType: hard - -"decode-uri-component@npm:^0.2.0": - version: 0.2.0 - resolution: "decode-uri-component@npm:0.2.0" - checksum: f3749344ab9305ffcfe4bfe300e2dbb61fc6359e2b736812100a3b1b6db0a5668cba31a05e4b45d4d63dbf1a18dfa354cd3ca5bb3ededddabb8cd293f4404f94 - languageName: node - linkType: hard - -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 - languageName: node - linkType: hard - -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 - languageName: node - linkType: hard - -"deepmerge@npm:^4.2.2": - version: 4.2.2 - resolution: "deepmerge@npm:4.2.2" - checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3": - version: 1.1.3 - resolution: "define-properties@npm:1.1.3" - dependencies: - object-keys: ^1.0.12 - checksum: da80dba55d0cd76a5a7ab71ef6ea0ebcb7b941f803793e4e0257b384cb772038faa0c31659d244e82c4342edef841c1a1212580006a05a5068ee48223d787317 - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd - languageName: node - linkType: hard - -"depd@npm:^1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 - languageName: node - linkType: hard - -"detect-newline@npm:^3.0.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 - languageName: node - linkType: hard - -"diff-sequences@npm:^27.4.0": - version: 27.4.0 - resolution: "diff-sequences@npm:27.4.0" - checksum: 66d04033e8632eeacdd029b4ecaf87d233d475e4b0cd1cee035eda99e70e1a7f803507d72f2677990ef526f28a2f6e5709af8d94dcdc0682b8884a3a646190a1 - languageName: node - linkType: hard - -"diff-sequences@npm:^27.5.1": - version: 27.5.1 - resolution: "diff-sequences@npm:27.5.1" - checksum: a00db5554c9da7da225db2d2638d85f8e41124eccbd56cbaefb3b276dcbb1c1c2ad851c32defe2055a54a4806f030656cbf6638105fd6ce97bb87b90b32a33ca - languageName: node - linkType: hard - -"diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: f2c09b0ce4e6b301c221addd83bf3f454c0bc00caa3dd837cf6c127d6edf7223aa2bbe3b688feea110b7f262adbfc845b757c44c8a9f8c0c5b15d8fa9ce9d20d - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: ^4.0.0 - checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: ^2.0.2 - checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce - languageName: node - linkType: hard - -"dom-serializer@npm:^1.0.1": - version: 1.3.2 - resolution: "dom-serializer@npm:1.3.2" - dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.2.0 - entities: ^2.0.0 - checksum: bff48714944d67b160db71ba244fb0f3fe72e77ef2ec8414e2eeb56f2d926e404a13456b8b83a5392e217ba47dec2ec0c368801b31481813e94d185276c3e964 - languageName: node - linkType: hard - -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": - version: 2.2.0 - resolution: "domelementtype@npm:2.2.0" - checksum: 24cb386198640cd58aa36f8c987f2ea61859929106d06ffcc8f547e70cb2ed82a6dc56dcb8252b21fba1f1ea07df6e4356d60bfe57f77114ca1aed6828362629 - languageName: node - linkType: hard - -"domexception@npm:^2.0.1": - version: 2.0.1 - resolution: "domexception@npm:2.0.1" - dependencies: - webidl-conversions: ^5.0.0 - checksum: d638e9cb05c52999f1b2eb87c374b03311ea5b1d69c2f875bc92da73e17db60c12142b45c950228642ff7f845c536b65305483350d080df59003a653da80b691 - languageName: node - linkType: hard - -"domhandler@npm:^4.2.0, domhandler@npm:^4.3.0": - version: 4.3.0 - resolution: "domhandler@npm:4.3.0" - dependencies: - domelementtype: ^2.2.0 - checksum: d2a2dbf40dd99abf936b65ad83c6b530afdb3605a87cad37a11b5d9220e68423ebef1b86c89e0f6d93ffaf315cc327cf1a988652e7a9a95cce539e3984f4c64d - languageName: node - linkType: hard - -"domutils@npm:^2.8.0": - version: 2.8.0 - resolution: "domutils@npm:2.8.0" - dependencies: - dom-serializer: ^1.0.1 - domelementtype: ^2.2.0 - domhandler: ^4.2.0 - checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 - languageName: node - linkType: hard - -"dot-prop@npm:^5.1.0": - version: 5.3.0 - resolution: "dot-prop@npm:5.3.0" - dependencies: - is-obj: ^2.0.0 - checksum: d5775790093c234ef4bfd5fbe40884ff7e6c87573e5339432870616331189f7f5d86575c5b5af2dcf0f61172990f4f734d07844b1f23482fff09e3c4bead05ea - languageName: node - linkType: hard - -"dungeonslayers4@workspace:.": - version: 0.0.0-use.local - resolution: "dungeonslayers4@workspace:." - dependencies: - "@commitlint/cli": 16.1.0 - "@commitlint/config-conventional": 16.0.0 - "@guanghechen/rollup-plugin-copy": 1.8.6 - "@league-of-foundry-developers/foundry-vtt-types": 9.249.0 - "@rollup/plugin-typescript": 8.3.0 - "@seald-io/nedb": 2.2.1 - "@types/fs-extra": 9.0.13 - "@types/jest": 27.4.0 - "@typescript-eslint/eslint-plugin": 5.11.0 - "@typescript-eslint/parser": 5.11.0 - conventional-changelog-cli: 2.2.2 - conventional-changelog-conventionalcommits: 4.6.3 - eslint: 8.8.0 - eslint-config-prettier: 8.3.0 - eslint-plugin-jest: 26.1.0 - eslint-plugin-prettier: 4.0.0 - fs-extra: 10.0.0 - husky: 7.0.4 - jest: 27.5.1 - jest-junit: 13.0.0 - lint-staged: 12.3.3 - npm-run-all: 4.1.5 - prettier: 2.5.1 - rimraf: 3.0.2 - rollup: 2.67.2 - rollup-plugin-styles: 4.0.0 - rollup-plugin-terser: 7.0.2 - sass: 1.49.7 - semver: 7.3.5 - ts-jest: 27.1.3 - tslib: 2.3.1 - typescript: 4.4.4 - yargs: 17.3.1 - languageName: unknown - linkType: soft - -"earcut@npm:^2.1.5": - version: 2.2.3 - resolution: "earcut@npm:2.2.3" - checksum: 4e3bab80366c49e0332a0bb061649a3b9354dcbfa636155c7eee250be0670d7139d53f2aebbcf90788507c71b76ec1713c20e36527f202b9abb79c9e5858ec35 - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.17": - version: 1.4.51 - resolution: "electron-to-chromium@npm:1.4.51" - checksum: dad1fd5faad1eed0206951429290ff0343eebfcabc201600dc0aeda7a2de07e0db697728fcd0b9e14f9c5f8cd5ec4841acda3179c5b2f8cdea09a5e81c634313 - languageName: node - linkType: hard - -"emittery@npm:^0.8.1": - version: 0.8.1 - resolution: "emittery@npm:0.8.1" - checksum: 2457e8c7b0688bb006126f2c025b2655abe682f66b184954122a8a065b5277f9813d49d627896a10b076b81c513ec5f491fd9c14fbd42c04b95ca3c9f3c365ee - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 - languageName: node - linkType: hard - -"encoding@npm:^0.1.12": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - -"engine.io-client@npm:~6.0.1": - version: 6.0.3 - resolution: "engine.io-client@npm:6.0.3" - dependencies: - "@socket.io/component-emitter": ~3.0.0 - debug: ~4.3.1 - engine.io-parser: ~5.0.0 - has-cors: 1.1.0 - parseqs: 0.0.6 - parseuri: 0.0.6 - ws: ~8.2.3 - xmlhttprequest-ssl: ~2.0.0 - yeast: 0.1.2 - checksum: 11a70dba629e47981966f4b43e839327adc2444ce77d3476dcb93281712e92f972e3fdf97f2c298b3887f17d38ee609f022a470b6d2d255beccd471fa366603d - languageName: node - linkType: hard - -"engine.io-parser@npm:~5.0.0": - version: 5.0.3 - resolution: "engine.io-parser@npm:5.0.3" - dependencies: - "@socket.io/base64-arraybuffer": ~1.0.2 - checksum: 88d664420a441dd02db17d110f7bbbd9efe971747918150bf666b82ee138df596a2f5038f461c8a01864c83af67cb202548364e4174543f8c0bf5f4776ca6e0d - languageName: node - linkType: hard - -"entities@npm:^2.0.0": - version: 2.2.0 - resolution: "entities@npm:2.2.0" - checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 - languageName: node - linkType: hard - -"es-abstract@npm:^1.19.1": - version: 1.19.1 - resolution: "es-abstract@npm:1.19.1" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - get-intrinsic: ^1.1.1 - get-symbol-description: ^1.0.0 - has: ^1.0.3 - has-symbols: ^1.0.2 - internal-slot: ^1.0.3 - is-callable: ^1.2.4 - is-negative-zero: ^2.0.1 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.1 - is-string: ^1.0.7 - is-weakref: ^1.0.1 - object-inspect: ^1.11.0 - object-keys: ^1.1.1 - object.assign: ^4.1.2 - string.prototype.trimend: ^1.0.4 - string.prototype.trimstart: ^1.0.4 - unbox-primitive: ^1.0.1 - checksum: b6be8410672c5364db3fb01eb786e30c7b4bb32b4af63d381c08840f4382c4a168e7855cd338bf59d4f1a1a1138f4d748d1fd40ec65aaa071876f9e9fbfed949 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed - languageName: node - linkType: hard - -"es6-promise-polyfill@npm:^1.2.0": - version: 1.2.0 - resolution: "es6-promise-polyfill@npm:1.2.0" - checksum: b6022782ffdfa9c75d08e8b77580ea18908baa3c43a63f86a792d9c5cfa0c1e851de28743c44d6b5df11a8fc25f1be28bf3494bc1ff3bf9336204696897ee772 - languageName: node - linkType: hard - -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 - languageName: node - linkType: hard - -"escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" - dependencies: - esprima: ^4.0.1 - estraverse: ^5.2.0 - esutils: ^2.0.2 - optionator: ^0.8.1 - source-map: ~0.6.1 - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef - languageName: node - linkType: hard - -"eslint-config-prettier@npm:8.3.0": - version: 8.3.0 - resolution: "eslint-config-prettier@npm:8.3.0" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: df4cea3032671995bb5ab07e016169072f7fa59f44a53251664d9ca60951b66cdc872683b5c6a3729c91497c11490ca44a79654b395dd6756beb0c3903a37196 - languageName: node - linkType: hard - -"eslint-plugin-jest@npm:26.1.0": - version: 26.1.0 - resolution: "eslint-plugin-jest@npm:26.1.0" - dependencies: - "@typescript-eslint/utils": ^5.10.0 - peerDependencies: - "@typescript-eslint/eslint-plugin": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - "@typescript-eslint/eslint-plugin": - optional: true - jest: - optional: true - checksum: 5d796092640202dd519c44c4270a335e7b5e7cd74f36b41754c2a9ed007a0110f4cc9b4b721dafe6724b3f93a3c9d27f9a0267c7e2a86e0f71a4a9f920897adc - languageName: node - linkType: hard - -"eslint-plugin-prettier@npm:4.0.0": - version: 4.0.0 - resolution: "eslint-plugin-prettier@npm:4.0.0" - dependencies: - prettier-linter-helpers: ^1.0.0 - peerDependencies: - eslint: ">=7.28.0" - prettier: ">=2.0.0" - peerDependenciesMeta: - eslint-config-prettier: - optional: true - checksum: 03d69177a3c21fa2229c7e427ce604429f0b20ab7f411e2e824912f572a207c7f5a41fd1f0a95b9b8afe121e291c1b1f1dc1d44c7aad4b0837487f9c19f5210d - languageName: node - linkType: hard - -"eslint-scope@npm:^5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb - languageName: node - linkType: hard - -"eslint-scope@npm:^7.1.0": - version: 7.1.0 - resolution: "eslint-scope@npm:7.1.0" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^5.2.0 - checksum: 2070470a0725438ed47075b2574a4c03cf59aa32648da8cff9e3548c84f6b0079cfdb9ee1dd7ab0bfe97011f64b2af5bfd4b69cf14a1292130dec661eec7914a - languageName: node - linkType: hard - -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" - dependencies: - eslint-visitor-keys: ^2.0.0 - peerDependencies: - eslint: ">=5" - checksum: 0668fe02f5adab2e5a367eee5089f4c39033af20499df88fe4e6aba2015c20720404d8c3d6349b6f716b08fdf91b9da4e5d5481f265049278099c4c836ccb619 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.0.0": - version: 2.1.0 - resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.1.0, eslint-visitor-keys@npm:^3.2.0": - version: 3.2.0 - resolution: "eslint-visitor-keys@npm:3.2.0" - checksum: fdadbb26f9e6417d3db7ad4f00bb0d573b6031c32fa72e8cdae32d038223faaeddff2ee443c90cb489bf774e75bff765c00912b8f9106d65e4f202ccd78c1b18 - languageName: node - linkType: hard - -"eslint@npm:8.8.0": - version: 8.8.0 - resolution: "eslint@npm:8.8.0" - dependencies: - "@eslint/eslintrc": ^1.0.5 - "@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.0 - eslint-utils: ^3.0.0 - eslint-visitor-keys: ^3.2.0 - espree: ^9.3.0 - 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 - checksum: 41a7e85bf84cf9f2d758ef3e8d08020a39a2836703728b59535684681349bd021c2c6e24174462b844a914870d707d2151e0371198899d957b444de91adaa435 - languageName: node - linkType: hard - -"espree@npm:^9.2.0, espree@npm:^9.3.0": - version: 9.3.0 - resolution: "espree@npm:9.3.0" - dependencies: - acorn: ^8.7.0 - acorn-jsx: ^5.3.1 - eslint-visitor-keys: ^3.1.0 - checksum: c0f1885c4eab652f9be08eb9228cea0df046b559b29d4aed8d6590ea9bd60177d4cb245d204a6f737a79a096861bb4ab8e480aeb8c1dbafef5beec1157353ce4 - languageName: node - linkType: hard - -"esprima@npm:^4.0.0, esprima@npm:^4.0.1": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 - languageName: node - linkType: hard - -"esquery@npm:^1.4.0": - version: 1.4.0 - resolution: "esquery@npm:1.4.0" - dependencies: - estraverse: ^5.1.0 - checksum: a0807e17abd7fbe5fbd4fab673038d6d8a50675cdae6b04fbaa520c34581be0c5fa24582990e8acd8854f671dd291c78bb2efb9e0ed5b62f33bac4f9cf820210 - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: ^5.2.0 - checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 - languageName: node - linkType: hard - -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 - languageName: node - linkType: hard - -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b - languageName: node - linkType: hard - -"estree-walker@npm:^1.0.1": - version: 1.0.1 - resolution: "estree-walker@npm:1.0.1" - checksum: 7e70da539691f6db03a08e7ce94f394ce2eef4180e136d251af299d41f92fb2d28ebcd9a6e393e3728d7970aeb5358705ddf7209d52fbcb2dd4693f95dcf925f - languageName: node - linkType: hard - -"estree-walker@npm:^2.0.1": - version: 2.0.2 - resolution: "estree-walker@npm:2.0.2" - checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 - languageName: node - linkType: hard - -"eventemitter3@npm:^3.1.0": - version: 3.1.2 - resolution: "eventemitter3@npm:3.1.2" - checksum: 81e4e82b8418f5cfd986d2b4a2fa5397ac4eb8134e09bcb47005545e22fdf8e9e61d5c053d34651112245aae411bdfe6d0ad5511da0400743fef5fc38bfcfbe3 - languageName: node - linkType: hard - -"eventemitter3@npm:^4.0.4": - version: 4.0.7 - resolution: "eventemitter3@npm:4.0.7" - checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 - languageName: node - linkType: hard - -"execa@npm:^5.0.0, execa@npm:^5.1.1": - version: 5.1.1 - resolution: "execa@npm:5.1.1" - dependencies: - cross-spawn: ^7.0.3 - get-stream: ^6.0.0 - human-signals: ^2.1.0 - is-stream: ^2.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^4.0.1 - onetime: ^5.1.2 - signal-exit: ^3.0.3 - strip-final-newline: ^2.0.0 - checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 - languageName: node - linkType: hard - -"exit@npm:^0.1.2": - version: 0.1.2 - resolution: "exit@npm:0.1.2" - checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 - languageName: node - linkType: hard - -"expect@npm:^27.5.1": - version: 27.5.1 - resolution: "expect@npm:27.5.1" - dependencies: - "@jest/types": ^27.5.1 - jest-get-type: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - checksum: b2c66beb52de53ef1872165aace40224e722bca3c2274c54cfa74b6d617d55cf0ccdbf36783ccd64dbea501b280098ed33fd0b207d4f15bc03cd3c7a24364a6a - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d - languageName: node - linkType: hard - -"fast-diff@npm:^1.1.2": - version: 1.2.0 - resolution: "fast-diff@npm:1.2.0" - checksum: 1b5306eaa9e826564d9e5ffcd6ebd881eb5f770b3f977fcbf38f05c824e42172b53c79920e8429c54eb742ce15a0caf268b0fdd5b38f6de52234c4a8368131ae - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.9": - version: 3.2.11 - resolution: "fast-glob@npm:3.2.11" - 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 - checksum: f473105324a7780a20c06de842e15ddbb41d3cb7e71d1e4fe6e8373204f22245d54f5ab9e2061e6a1c613047345954d29b022e0e76f5c28b1df9858179a0e6d7 - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb - languageName: node - linkType: hard - -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.13.0 - resolution: "fastq@npm:1.13.0" - dependencies: - reusify: ^1.0.4 - checksum: 32cf15c29afe622af187d12fc9cd93e160a0cb7c31a3bb6ace86b7dea3b28e7b72acde89c882663f307b2184e14782c6c664fa315973c03626c7d4bff070bb0b - languageName: node - linkType: hard - -"fb-watchman@npm:^2.0.0": - version: 2.0.1 - resolution: "fb-watchman@npm:2.0.1" - dependencies: - bser: 2.1.1 - checksum: 8510230778ab3a51c27dffb1b76ef2c24fab672a42742d3c0a45c2e9d1e5f20210b1fbca33486088da4a9a3958bde96b5aec0a63aac9894b4e9df65c88b2cbd6 - languageName: node - linkType: hard - -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" - dependencies: - flat-cache: ^3.0.4 - checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 - languageName: node - linkType: hard - -"filter-obj@npm:^1.1.0": - version: 1.1.0 - resolution: "filter-obj@npm:1.1.0" - checksum: cf2104a7c45ff48e7f505b78a3991c8f7f30f28bd8106ef582721f321f1c6277f7751aacd5d83026cb079d9d5091082f588d14a72e7c5d720ece79118fa61e10 - languageName: node - linkType: hard - -"find-up@npm:^2.0.0": - version: 2.1.0 - resolution: "find-up@npm:2.1.0" - dependencies: - locate-path: ^2.0.0 - checksum: 43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd - languageName: node - linkType: hard - -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: ^5.0.0 - path-exists: ^4.0.0 - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 - languageName: node - linkType: hard - -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 - languageName: node - linkType: hard - -"flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" - dependencies: - flatted: ^3.1.0 - rimraf: ^3.0.2 - checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 - languageName: node - linkType: hard - -"flatted@npm:^3.1.0": - version: 3.2.4 - resolution: "flatted@npm:3.2.4" - checksum: 7d33846428ab337ec81ef9b8b9103894c1c81f5f67feb32bd4ed106fbc47da60d56edb42efd36c9f1f30a010272aeccd34ec1ffacfe9dfdff19673b1d4df481b - languageName: node - linkType: hard - -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d - languageName: node - linkType: hard - -"fs-extra@npm:10.0.0, fs-extra@npm:^10.0.0": - version: 10.0.0 - resolution: "fs-extra@npm:10.0.0" - dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: 5285a3d8f34b917cf2b66af8c231a40c1623626e9d701a20051d3337be16c6d7cac94441c8b3732d47a92a2a027886ca93c69b6a4ae6aee3c89650d2a8880c0a - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 - languageName: node - linkType: hard - -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" - dependencies: - node-gyp: latest - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a - languageName: node - linkType: hard - -"functional-red-black-tree@npm:^1.0.1": - version: 1.0.1 - resolution: "functional-red-black-tree@npm:1.0.1" - checksum: ca6c170f37640e2d94297da8bb4bf27a1d12bea3e00e6a3e007fd7aa32e37e000f5772acf941b4e4f3cf1c95c3752033d0c509af157ad8f526e7f00723b9eb9f - languageName: node - linkType: hard - -"gauge@npm:^4.0.0": - version: 4.0.0 - resolution: "gauge@npm:4.0.0" - dependencies: - ansi-regex: ^5.0.1 - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.2 - console-control-strings: ^1.0.0 - has-unicode: ^2.0.1 - signal-exit: ^3.0.0 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.2 - checksum: 637b34c84f518defa89319dbef68211a24e9302182ad2a619e3be1be5b7dcf2a962c8359e889294af667440f4722e7e6e61671859e00bd8ec280a136ded89b25 - languageName: node - linkType: hard - -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1": - version: 1.1.1 - resolution: "get-intrinsic@npm:1.1.1" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.1 - checksum: a9fe2ca8fa3f07f9b0d30fb202bcd01f3d9b9b6b732452e79c48e79f7d6d8d003af3f9e38514250e3553fdc83c61650851cb6870832ac89deaaceb08e3721a17 - languageName: node - linkType: hard - -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 - languageName: node - linkType: hard - -"get-pkg-repo@npm:^4.0.0": - version: 4.2.1 - resolution: "get-pkg-repo@npm:4.2.1" - dependencies: - "@hutson/parse-repository-url": ^3.0.0 - hosted-git-info: ^4.0.0 - through2: ^2.0.0 - yargs: ^16.2.0 - bin: - get-pkg-repo: src/cli.js - checksum: 5abf169137665e45b09a857b33ad2fdcf2f4a09f0ecbd0ebdd789a7ce78c39186a21f58621127eb724d2d4a3a7ee8e6bd4ac7715efda01ad5200665afc218e0d - languageName: node - linkType: hard - -"get-stream@npm:^6.0.0": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad - languageName: node - linkType: hard - -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 - languageName: node - linkType: hard - -"git-raw-commits@npm:^2.0.0, git-raw-commits@npm:^2.0.8": - version: 2.0.11 - resolution: "git-raw-commits@npm:2.0.11" - dependencies: - dargs: ^7.0.0 - lodash: ^4.17.15 - meow: ^8.0.0 - split2: ^3.0.0 - through2: ^4.0.0 - bin: - git-raw-commits: cli.js - checksum: c178af43633684106179793b6e3473e1d2bb50bb41d04e2e285ea4eef342ca4090fee6bc8a737552fde879d22346c90de5c49f18c719a0f38d4c934f258a0f79 - languageName: node - linkType: hard - -"git-remote-origin-url@npm:^2.0.0": - version: 2.0.0 - resolution: "git-remote-origin-url@npm:2.0.0" - dependencies: - gitconfiglocal: ^1.0.0 - pify: ^2.3.0 - checksum: 85263a09c044b5f4fe2acc45cbb3c5331ab2bd4484bb53dfe7f3dd593a4bf90a9786a2e00b9884524331f50b3da18e8c924f01c2944087fc7f342282c4437b73 - languageName: node - linkType: hard - -"git-semver-tags@npm:^4.1.1": - version: 4.1.1 - resolution: "git-semver-tags@npm:4.1.1" - dependencies: - meow: ^8.0.0 - semver: ^6.0.0 - bin: - git-semver-tags: cli.js - checksum: e16d02a515c0f88289a28b5bf59bf42c0dc053765922d3b617ae4b50546bd4f74a25bf3ad53b91cb6c1159319a2e92533b160c573b856c2629125c8b26b3b0e3 - languageName: node - linkType: hard - -"gitconfiglocal@npm:^1.0.0": - version: 1.0.0 - resolution: "gitconfiglocal@npm:1.0.0" - dependencies: - ini: ^1.3.2 - checksum: e6d2764c15bbab6d1d1000d1181bb907f6b3796bb04f63614dba571b18369e0ecb1beaf27ce8da5b24307ef607e3a5f262a67cb9575510b9446aac697d421beb - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e - languageName: node - linkType: hard - -"glob-parent@npm:^6.0.1": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: ^4.0.3 - checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 - languageName: node - linkType: hard - -"glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4": - version: 7.2.0 - resolution: "glob@npm:7.2.0" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.0.4 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134 - languageName: node - linkType: hard - -"global-dirs@npm:^0.1.1": - version: 0.1.1 - resolution: "global-dirs@npm:0.1.1" - dependencies: - ini: ^1.3.4 - checksum: 10624f5a8ddb8634c22804c6b24f93fb591c3639a6bc78e3584e01a238fc6f7b7965824184e57d63f6df36980b6c191484ad7bc6c35a1599b8f1d64be64c2a4a - languageName: node - linkType: hard - -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e - languageName: node - linkType: hard - -"globals@npm:^13.6.0, globals@npm:^13.9.0": - version: 13.12.0 - resolution: "globals@npm:13.12.0" - dependencies: - type-fest: ^0.20.2 - checksum: 1f959abb11117916468a1afcba527eead152900cad652c8383c4e8976daea7ec55e1ee30c086f48d1b8655719f214e9d92eca083c3a43b5543bc4056e7e5fccf - languageName: node - linkType: hard - -"globby@npm:^11.0.4": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - 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 - checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.9 - resolution: "graceful-fs@npm:4.2.9" - checksum: 68ea4e07ff2c041ada184f9278b830375f8e0b75154e3f080af6b70f66172fabb4108d19b3863a96b53fc068a310b9b6493d86d1291acc5f3861eb4b79d26ad6 - languageName: node - linkType: hard - -"handlebars@npm:4.7.7, handlebars@npm:^4.7.7": - version: 4.7.7 - resolution: "handlebars@npm:4.7.7" - dependencies: - minimist: ^1.2.5 - neo-async: ^2.6.0 - source-map: ^0.6.1 - uglify-js: ^3.1.4 - wordwrap: ^1.0.0 - dependenciesMeta: - uglify-js: - optional: true - bin: - handlebars: bin/handlebars - checksum: 1e79a43f5e18d15742977cb987923eab3e2a8f44f2d9d340982bcb69e1735ed049226e534d7c1074eaddaf37e4fb4f471a8adb71cddd5bc8cf3f894241df5cee - languageName: node - linkType: hard - -"hard-rejection@npm:^2.1.0": - version: 2.1.0 - resolution: "hard-rejection@npm:2.1.0" - checksum: 7baaf80a0c7fff4ca79687b4060113f1529589852152fa935e6787a2bc96211e784ad4588fb3048136ff8ffc9dfcf3ae385314a5b24db32de20bea0d1597f9dc - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1": - version: 1.0.1 - resolution: "has-bigints@npm:1.0.1" - checksum: 44ab55868174470065d2e0f8f6def1c990d12b82162a8803c679699fa8a39f966e336f2a33c185092fe8aea7e8bf2e85f1c26add5f29d98f2318bd270096b183 - languageName: node - linkType: hard - -"has-cors@npm:1.1.0": - version: 1.1.0 - resolution: "has-cors@npm:1.1.0" - checksum: 549ce94113fd23895b22d71ade9809918577b8558cd4d701fe79045d8b1d58d87eba870260b28f6a3229be933a691c55653afd496d0fc52e98fd2ff577f01197 - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2": - version: 1.0.2 - resolution: "has-symbols@npm:1.0.2" - checksum: 2309c426071731be792b5be43b3da6fb4ed7cbe8a9a6bcfca1862587709f01b33d575ce8f5c264c1eaad09fca2f9a8208c0a2be156232629daa2dd0c0740976b - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c - languageName: node - linkType: hard - -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 - languageName: node - linkType: hard - -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 - languageName: node - linkType: hard - -"hosted-git-info@npm:^2.1.4": - version: 2.8.9 - resolution: "hosted-git-info@npm:2.8.9" - checksum: c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd - languageName: node - linkType: hard - -"hosted-git-info@npm:^4.0.0, hosted-git-info@npm:^4.0.1": - version: 4.1.0 - resolution: "hosted-git-info@npm:4.1.0" - dependencies: - lru-cache: ^6.0.0 - checksum: c3f87b3c2f7eb8c2748c8f49c0c2517c9a95f35d26f4bf54b2a8cba05d2e668f3753548b6ea366b18ec8dadb4e12066e19fa382a01496b0ffa0497eb23cbe461 - languageName: node - linkType: hard - -"html-encoding-sniffer@npm:^2.0.1": - version: 2.0.1 - resolution: "html-encoding-sniffer@npm:2.0.1" - dependencies: - whatwg-encoding: ^1.0.5 - checksum: bf30cce461015ed7e365736fcd6a3063c7bc016a91f74398ef6158886970a96333938f7c02417ab3c12aa82e3e53b40822145facccb9ddfbcdc15a879ae4d7ba - languageName: node - linkType: hard - -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.0": - version: 4.1.0 - resolution: "http-cache-semantics@npm:4.1.0" - checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "https-proxy-agent@npm:5.0.0" - dependencies: - agent-base: 6 - debug: 4 - checksum: 165bfb090bd26d47693597661298006841ab733d0c7383a8cb2f17373387a94c903a3ac687090aa739de05e379ab6f868bae84ab4eac288ad85c328cd1ec9e53 - languageName: node - linkType: hard - -"human-signals@npm:^2.1.0": - version: 2.1.0 - resolution: "human-signals@npm:2.1.0" - checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - -"husky@npm:7.0.4": - version: 7.0.4 - resolution: "husky@npm:7.0.4" - bin: - husky: lib/bin.js - checksum: c6ec4af63da2c9522da8674a20ad9b48362cc92704896cc8a58c6a2a39d797feb2b806f93fbd83a6d653fbdceb2c3b6e0b602c6b2e8565206ffc2882ef7db9e9 - languageName: node - linkType: hard - -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf - languageName: node - linkType: hard - -"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": - version: 5.1.0 - resolution: "icss-utils@npm:5.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 - languageName: node - linkType: hard - -"ignore@npm:^4.0.6": - version: 4.0.6 - resolution: "ignore@npm:4.0.6" - checksum: 248f82e50a430906f9ee7f35e1158e3ec4c3971451dd9f99c9bc1548261b4db2b99709f60ac6c6cac9333494384176cc4cc9b07acbe42d52ac6a09cad734d800 - languageName: node - linkType: hard - -"ignore@npm:^5.1.8, ignore@npm:^5.2.0": - version: 5.2.0 - resolution: "ignore@npm:5.2.0" - checksum: 6b1f926792d614f64c6c83da3a1f9c83f6196c2839aa41e1e32dd7b8d174cef2e329d75caabb62cb61ce9dc432f75e67d07d122a037312db7caa73166a1bdb77 - languageName: node - linkType: hard - -"immediate@npm:~3.0.5": - version: 3.0.6 - resolution: "immediate@npm:3.0.6" - checksum: f9b3486477555997657f70318cc8d3416159f208bec4cca3ff3442fd266bc23f50f0c9bd8547e1371a6b5e82b821ec9a7044a4f7b944798b25aa3cc6d5e63e62 - languageName: node - linkType: hard - -"immutable@npm:^4.0.0": - version: 4.0.0 - resolution: "immutable@npm:4.0.0" - checksum: 4b5e9181e4d5fa06728a481835ec09c86367e5d03268666c95b522b7644ab891098022e4479a43c4c81a68f2ed82f10751ce5d33e208d7b873b6e7f9dfaf4d87 - languageName: node - linkType: hard - -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" - dependencies: - parent-module: ^1.0.0 - resolve-from: ^4.0.0 - checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa - languageName: node - linkType: hard - -"import-local@npm:^3.0.2": - version: 3.1.0 - resolution: "import-local@npm:3.1.0" - dependencies: - pkg-dir: ^4.2.0 - resolve-cwd: ^3.0.0 - bin: - import-local-fixture: fixtures/cli.js - checksum: bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:~2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 - languageName: node - linkType: hard - -"ini@npm:^1.3.2, ini@npm:^1.3.4": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" - dependencies: - get-intrinsic: ^1.1.0 - has: ^1.0.3 - side-channel: ^1.0.4 - checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf - languageName: node - linkType: hard - -"ip@npm:^1.1.5": - version: 1.1.5 - resolution: "ip@npm:1.1.5" - checksum: 30133981f082a060a32644f6a7746e9ba7ac9e2bc07ecc8bbdda3ee8ca9bec1190724c390e45a1ee7695e7edfd2a8f7dda2c104ec5f7ac5068c00648504c7e5a - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.4, is-callable@npm:^1.2.4": - version: 1.2.4 - resolution: "is-callable@npm:1.2.4" - checksum: 1a28d57dc435797dae04b173b65d6d1e77d4f16276e9eff973f994eadcfdc30a017e6a597f092752a083c1103cceb56c91e3dadc6692fedb9898dfaba701575f - languageName: node - linkType: hard - -"is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1": - version: 2.8.1 - resolution: "is-core-module@npm:2.8.1" - dependencies: - has: ^1.0.3 - checksum: 418b7bc10768a73c41c7ef497e293719604007f88934a6ffc5f7c78702791b8528102fb4c9e56d006d69361549b3d9519440214a74aefc7e0b79e5e4411d377f - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^4.0.0": - version: 4.0.0 - resolution: "is-fullwidth-code-point@npm:4.0.0" - checksum: 8ae89bf5057bdf4f57b346fb6c55e9c3dd2549983d54191d722d5c739397a903012cc41a04ee3403fd872e811243ef91a7c5196da7b5841dc6b6aae31a264a8d - languageName: node - linkType: hard - -"is-generator-fn@npm:^2.0.0": - version: 2.1.0 - resolution: "is-generator-fn@npm:2.1.0" - checksum: a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 - languageName: node - linkType: hard - -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: ^2.1.1 - checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.1": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.6 - resolution: "is-number-object@npm:1.0.6" - dependencies: - has-tostringtag: ^1.0.0 - checksum: c697704e8fc2027fc41cb81d29805de4e8b6dc9c3efee93741dbf126a8ecc8443fef85adbc581415ae7e55d325e51d0a942324ae35c829131748cce39cba55f3 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a - languageName: node - linkType: hard - -"is-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "is-obj@npm:2.0.0" - checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 - languageName: node - linkType: hard - -"is-plain-obj@npm:^1.1.0": - version: 1.1.0 - resolution: "is-plain-obj@npm:1.1.0" - checksum: 0ee04807797aad50859652a7467481816cbb57e5cc97d813a7dcd8915da8195dc68c436010bf39d195226cde6a2d352f4b815f16f26b7bf486a5754290629931 - languageName: node - linkType: hard - -"is-plain-object@npm:^5.0.0": - version: 5.0.0 - resolution: "is-plain-object@npm:5.0.0" - checksum: e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c - languageName: node - linkType: hard - -"is-potential-custom-element-name@npm:^1.0.1": - version: 1.0.1 - resolution: "is-potential-custom-element-name@npm:1.0.1" - checksum: ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab - languageName: node - linkType: hard - -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "is-shared-array-buffer@npm:1.0.1" - checksum: 2ffb92533e64e2876e6cfe6906871d28400b6f1a53130fe652ec8007bc0e5044d05e7af8e31bdc992fbba520bd92938cfbeedd0f286be92f250c7c76191c4d90 - languageName: node - linkType: hard - -"is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 - languageName: node - linkType: hard - -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 - languageName: node - linkType: hard - -"is-text-path@npm:^1.0.1": - version: 1.0.1 - resolution: "is-text-path@npm:1.0.1" - dependencies: - text-extensions: ^1.0.0 - checksum: fb5d78752c22b3f73a7c9540768f765ffcfa38c9e421e2b9af869565307fa1ae5e3d3a2ba016a43549742856846566d327da406e94a5846ec838a288b1704fd2 - languageName: node - linkType: hard - -"is-typedarray@npm:^1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.1": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de - languageName: node - linkType: hard - -"isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 - languageName: node - linkType: hard - -"ismobilejs@npm:^1.1.0": - version: 1.1.1 - resolution: "ismobilejs@npm:1.1.1" - checksum: 937479c4ae13306f41391e0f57611b0835bc57325750b446cb12ed844d697407f66f050ebf7446538cc3aae9575df6382243224be3032c1574b61e2f955d8417 - languageName: node - linkType: hard - -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.0 - resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": - version: 5.1.0 - resolution: "istanbul-lib-instrument@npm:5.1.0" - dependencies: - "@babel/core": ^7.12.3 - "@babel/parser": ^7.14.7 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-coverage: ^3.2.0 - semver: ^6.3.0 - checksum: 8b82e733c69fe9f94d2e21f3e5760c9bedb110329aa75df4bd40df95f1cac3bf38767e43f35b125cc547ceca7376b72ce7d95cc5238b7e9088345c7b589233d3 - languageName: node - linkType: hard - -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-report@npm:3.0.0" - dependencies: - istanbul-lib-coverage: ^3.0.0 - make-dir: ^3.0.0 - supports-color: ^7.1.0 - checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b - languageName: node - linkType: hard - -"istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.1 - resolution: "istanbul-lib-source-maps@npm:4.0.1" - dependencies: - debug: ^4.1.1 - istanbul-lib-coverage: ^3.0.0 - source-map: ^0.6.1 - checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.1.3": - version: 3.1.3 - resolution: "istanbul-reports@npm:3.1.3" - dependencies: - html-escaper: ^2.0.0 - istanbul-lib-report: ^3.0.0 - checksum: ef6e0d9ed05ecab1974c6eb46cc2a12d8570911934192db4ed40cf1978449240ea80aae32c4dd5555b67407cdf860212d1a9e415443af69641aa57ed1da5ebbb - languageName: node - linkType: hard - -"jest-changed-files@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-changed-files@npm:27.5.1" - dependencies: - "@jest/types": ^27.5.1 - execa: ^5.0.0 - throat: ^6.0.1 - checksum: 95e9dc74c3ca688ef85cfeab270f43f8902721a6c8ade6ac2459459a77890c85977f537d6fb809056deaa6d9c3f075fa7d2699ff5f3bf7d3fda17c3760b79b15 - languageName: node - linkType: hard - -"jest-circus@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-circus@npm:27.5.1" - dependencies: - "@jest/environment": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - dedent: ^0.7.0 - expect: ^27.5.1 - is-generator-fn: ^2.0.0 - jest-each: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - jest-runtime: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 - pretty-format: ^27.5.1 - slash: ^3.0.0 - stack-utils: ^2.0.3 - throat: ^6.0.1 - checksum: 6192dccbccb3a6acfa361cbb97bdbabe94864ccf3d885932cfd41f19534329d40698078cf9be1489415e8234255d6ea9f9aff5396b79ad842a6fca6e6fc08fd0 - languageName: node - linkType: hard - -"jest-cli@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-cli@npm:27.5.1" - dependencies: - "@jest/core": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 - chalk: ^4.0.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - import-local: ^3.0.2 - jest-config: ^27.5.1 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 - prompts: ^2.0.1 - yargs: ^16.2.0 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 6c0a69fb48e500241409e09ff743ed72bc6578d7769e2c994724e7ef1e5587f6c1f85dc429e93b98ae38a365222993ee70f0acc2199358992120900984f349e5 - languageName: node - linkType: hard - -"jest-config@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-config@npm:27.5.1" - dependencies: - "@babel/core": ^7.8.0 - "@jest/test-sequencer": ^27.5.1 - "@jest/types": ^27.5.1 - babel-jest: ^27.5.1 - chalk: ^4.0.0 - ci-info: ^3.2.0 - deepmerge: ^4.2.2 - glob: ^7.1.1 - graceful-fs: ^4.2.9 - jest-circus: ^27.5.1 - jest-environment-jsdom: ^27.5.1 - jest-environment-node: ^27.5.1 - jest-get-type: ^27.5.1 - jest-jasmine2: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-runner: ^27.5.1 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 - micromatch: ^4.0.4 - parse-json: ^5.2.0 - pretty-format: ^27.5.1 - slash: ^3.0.0 - strip-json-comments: ^3.1.1 - peerDependencies: - ts-node: ">=9.0.0" - peerDependenciesMeta: - ts-node: - optional: true - checksum: 1188fd46c0ed78cbe3175eb9ad6712ccf74a74be33d9f0d748e147c107f0889f8b701fbff1567f31836ae18597dacdc43d6a8fc30dd34ade6c9229cc6c7cb82d - languageName: node - linkType: hard - -"jest-diff@npm:^27.0.0": - version: 27.4.6 - resolution: "jest-diff@npm:27.4.6" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^27.4.0 - jest-get-type: ^27.4.0 - pretty-format: ^27.4.6 - checksum: cf6b7e80e3c64a7c71ab209c0325bbda175991aed985ecee7652df9d6540e4959089038e208c04ab05391c9ddf07adc72f0c8c26cc4cee6fa17f76f500e2bf43 - languageName: node - linkType: hard - -"jest-diff@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-diff@npm:27.5.1" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^27.5.1 - jest-get-type: ^27.5.1 - pretty-format: ^27.5.1 - checksum: 8be27c1e1ee57b2bb2bef9c0b233c19621b4c43d53a3c26e2c00a4e805eb4ea11fe1694a06a9fb0e80ffdcfdc0d2b1cb0b85920b3f5c892327ecd1e7bd96b865 - languageName: node - linkType: hard - -"jest-docblock@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-docblock@npm:27.5.1" - dependencies: - detect-newline: ^3.0.0 - checksum: c0fed6d55b229d8bffdd8d03f121dd1a3be77c88f50552d374f9e1ea3bde57bf6bea017a0add04628d98abcb1bfb48b456438eeca8a74ef0053f4dae3b95d29c - languageName: node - linkType: hard - -"jest-each@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-each@npm:27.5.1" - dependencies: - "@jest/types": ^27.5.1 - chalk: ^4.0.0 - jest-get-type: ^27.5.1 - jest-util: ^27.5.1 - pretty-format: ^27.5.1 - checksum: b5a6d8730fd938982569c9e0b42bdf3c242f97b957ed8155a6473b5f7b540970f8685524e7f53963dc1805319f4b6602abfc56605590ca19d55bd7a87e467e63 - languageName: node - linkType: hard - -"jest-environment-jsdom@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-environment-jsdom@npm:27.5.1" - dependencies: - "@jest/environment": ^27.5.1 - "@jest/fake-timers": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - jest-mock: ^27.5.1 - jest-util: ^27.5.1 - jsdom: ^16.6.0 - checksum: bc104aef7d7530d0740402aa84ac812138b6d1e51fe58adecce679f82b99340ddab73e5ec68fa079f33f50c9ddec9728fc9f0ddcca2ad6f0b351eed2762cc555 - languageName: node - linkType: hard - -"jest-environment-node@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-environment-node@npm:27.5.1" - dependencies: - "@jest/environment": ^27.5.1 - "@jest/fake-timers": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - jest-mock: ^27.5.1 - jest-util: ^27.5.1 - checksum: 0f988330c4f3eec092e3fb37ea753b0c6f702e83cd8f4d770af9c2bf964a70bc45fbd34ec6fdb6d71ce98a778d9f54afd673e63f222e4667fff289e8069dba39 - languageName: node - linkType: hard - -"jest-get-type@npm:^27.4.0": - version: 27.4.0 - resolution: "jest-get-type@npm:27.4.0" - checksum: bb9b70e420009fdaed3026d5bccd01569f92c7500f9f544d862796d4f4efa93ced5484864b2f272c7748bfb5bfd3268d48868b169c51ab45fe5b45b9519b6e46 - languageName: node - linkType: hard - -"jest-get-type@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-get-type@npm:27.5.1" - checksum: 63064ab70195c21007d897c1157bf88ff94a790824a10f8c890392e7d17eda9c3900513cb291ca1c8d5722cad79169764e9a1279f7c8a9c4cd6e9109ff04bbc0 - languageName: node - linkType: hard - -"jest-haste-map@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-haste-map@npm:27.5.1" - dependencies: - "@jest/types": ^27.5.1 - "@types/graceful-fs": ^4.1.2 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.3.2 - graceful-fs: ^4.2.9 - jest-regex-util: ^27.5.1 - jest-serializer: ^27.5.1 - jest-util: ^27.5.1 - jest-worker: ^27.5.1 - micromatch: ^4.0.4 - walker: ^1.0.7 - dependenciesMeta: - fsevents: - optional: true - checksum: e092a1412829a9254b4725531ee72926de530f77fda7b0d9ea18008fb7623c16f72e772d8e93be71cac9e591b2c6843a669610887dd2c89bd9eb528856e3ab47 - languageName: node - linkType: hard - -"jest-jasmine2@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-jasmine2@npm:27.5.1" - dependencies: - "@jest/environment": ^27.5.1 - "@jest/source-map": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - expect: ^27.5.1 - is-generator-fn: ^2.0.0 - jest-each: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - jest-runtime: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 - pretty-format: ^27.5.1 - throat: ^6.0.1 - checksum: b716adf253ceb73db661936153394ab90d7f3a8ba56d6189b7cd4df8e4e2a4153b4e63ebb5d36e29ceb0f4c211d5a6f36ab7048c6abbd881c8646567e2ab8e6d - languageName: node - linkType: hard - -"jest-junit@npm:13.0.0": - version: 13.0.0 - resolution: "jest-junit@npm:13.0.0" - dependencies: - mkdirp: ^1.0.4 - strip-ansi: ^6.0.1 - uuid: ^8.3.2 - xml: ^1.0.1 - checksum: d3a1bf6e98250837d1a9939cd54f29a7bd4fb835af30e92d0d544300fbe634eb86d2b018c79a7a35b123d933bf3e6c96ba13c0161cdefbf66fc3ab771707572e - languageName: node - linkType: hard - -"jest-leak-detector@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-leak-detector@npm:27.5.1" - dependencies: - jest-get-type: ^27.5.1 - pretty-format: ^27.5.1 - checksum: 5c9689060960567ddaf16c570d87afa760a461885765d2c71ef4f4857bbc3af1482c34e3cce88e50beefde1bf35e33530b020480752057a7e3dbb1ca0bae359f - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-matcher-utils@npm:27.5.1" - dependencies: - chalk: ^4.0.0 - jest-diff: ^27.5.1 - jest-get-type: ^27.5.1 - pretty-format: ^27.5.1 - checksum: bb2135fc48889ff3fe73888f6cc7168ddab9de28b51b3148f820c89fdfd2effdcad005f18be67d0b9be80eda208ad47290f62f03d0a33f848db2dd0273c8217a - languageName: node - linkType: hard - -"jest-message-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-message-util@npm:27.5.1" - dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^27.5.1 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^27.5.1 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: eb6d637d1411c71646de578c49826b6da8e33dd293e501967011de9d1916d53d845afbfb52a5b661ff1c495be7c13f751c48c7f30781fd94fbd64842e8195796 - languageName: node - linkType: hard - -"jest-mock@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-mock@npm:27.5.1" - dependencies: - "@jest/types": ^27.5.1 - "@types/node": "*" - checksum: f5b5904bb1741b4a1687a5f492535b7b1758dc26534c72a5423305f8711292e96a601dec966df81bb313269fb52d47227e29f9c2e08324d79529172f67311be0 - languageName: node - linkType: hard - -"jest-pnp-resolver@npm:^1.2.2": - version: 1.2.2 - resolution: "jest-pnp-resolver@npm:1.2.2" - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: bd85dcc0e76e0eb0c3d56382ec140f08d25ff4068cda9d0e360bb78fb176cb726d0beab82dc0e8694cafd09f55fee7622b8bcb240afa5fad301f4ed3eebb4f47 - languageName: node - linkType: hard - -"jest-regex-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-regex-util@npm:27.5.1" - checksum: d45ca7a9543616a34f7f3079337439cf07566e677a096472baa2810e274b9808b76767c97b0a4029b8a5b82b9d256dee28ef9ad4138b2b9e5933f6fac106c418 - languageName: node - linkType: hard - -"jest-resolve-dependencies@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-resolve-dependencies@npm:27.5.1" - dependencies: - "@jest/types": ^27.5.1 - jest-regex-util: ^27.5.1 - jest-snapshot: ^27.5.1 - checksum: c67af97afad1da88f5530317c732bbd1262d1225f6cd7f4e4740a5db48f90ab0bd8564738ac70d1a43934894f9aef62205c1b8f8ee89e5c7a737e6a121ee4c25 - languageName: node - linkType: hard - -"jest-resolve@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-resolve@npm:27.5.1" - dependencies: - "@jest/types": ^27.5.1 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 - jest-pnp-resolver: ^1.2.2 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 - resolve: ^1.20.0 - resolve.exports: ^1.1.0 - slash: ^3.0.0 - checksum: 735830e7265b20a348029738680bb2f6e37f80ecea86cda869a4c318ba3a45d39c7a3a873a22f7f746d86258c50ead6e7f501de043e201c095d7ba628a1c440f - languageName: node - linkType: hard - -"jest-runner@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-runner@npm:27.5.1" - dependencies: - "@jest/console": ^27.5.1 - "@jest/environment": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - chalk: ^4.0.0 - emittery: ^0.8.1 - graceful-fs: ^4.2.9 - jest-docblock: ^27.5.1 - jest-environment-jsdom: ^27.5.1 - jest-environment-node: ^27.5.1 - jest-haste-map: ^27.5.1 - jest-leak-detector: ^27.5.1 - jest-message-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-runtime: ^27.5.1 - jest-util: ^27.5.1 - jest-worker: ^27.5.1 - source-map-support: ^0.5.6 - throat: ^6.0.1 - checksum: 5bbe6cf847dd322b3332ec9d6977b54f91bd5f72ff620bc1a0192f0f129deda8aa7ca74c98922187a7aa87d8e0ce4f6c50e99a7ccb2a310bf4d94be2e0c3ce8e - languageName: node - linkType: hard - -"jest-runtime@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-runtime@npm:27.5.1" - dependencies: - "@jest/environment": ^27.5.1 - "@jest/fake-timers": ^27.5.1 - "@jest/globals": ^27.5.1 - "@jest/source-map": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 - chalk: ^4.0.0 - cjs-module-lexer: ^1.0.0 - collect-v8-coverage: ^1.0.0 - execa: ^5.0.0 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 - jest-message-util: ^27.5.1 - jest-mock: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 - slash: ^3.0.0 - strip-bom: ^4.0.0 - checksum: 929e3df0c53dab43f831f2af4e2996b22aa8cb2d6d483919d6b0426cbc100098fd5b777b998c6568b77f8c4d860b2e83127514292ff61416064f5ef926492386 - languageName: node - linkType: hard - -"jest-serializer@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-serializer@npm:27.5.1" - dependencies: - "@types/node": "*" - graceful-fs: ^4.2.9 - checksum: 803e03a552278610edc6753c0dd9fa5bb5cd3ca47414a7b2918106efb62b79fd5e9ae785d0a21f12a299fa599fea8acc1fa6dd41283328cee43962cf7df9bb44 - languageName: node - linkType: hard - -"jest-snapshot@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-snapshot@npm:27.5.1" - dependencies: - "@babel/core": ^7.7.2 - "@babel/generator": ^7.7.2 - "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/traverse": ^7.7.2 - "@babel/types": ^7.0.0 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/babel__traverse": ^7.0.4 - "@types/prettier": ^2.1.5 - babel-preset-current-node-syntax: ^1.0.0 - chalk: ^4.0.0 - expect: ^27.5.1 - graceful-fs: ^4.2.9 - jest-diff: ^27.5.1 - jest-get-type: ^27.5.1 - jest-haste-map: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - jest-util: ^27.5.1 - natural-compare: ^1.4.0 - pretty-format: ^27.5.1 - semver: ^7.3.2 - checksum: a5cfadf0d21cd76063925d1434bc076443ed6d87847d0e248f0b245f11db3d98ff13e45cc03b15404027dabecd712d925f47b6eae4f64986f688640a7d362514 - languageName: node - linkType: hard - -"jest-util@npm:^27.0.0": - version: 27.4.2 - resolution: "jest-util@npm:27.4.2" - dependencies: - "@jest/types": ^27.4.2 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.4 - picomatch: ^2.2.3 - checksum: bcf16881aff1421c5f7c2df2ef9492cf8cd92fcd0a2a99bec5ab16f7185ee19aea48eda41d9dfa7b5bf4354bdc21628f5931cd2e7281741e6d2983965efb631e - languageName: node - linkType: hard - -"jest-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-util@npm:27.5.1" - dependencies: - "@jest/types": ^27.5.1 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: ac8d122f6daf7a035dcea156641fd3701aeba245417c40836a77e35b3341b9c02ddc5d904cfcd4ddbaa00ab854da76d3b911870cafdcdbaff90ea471de26c7d7 - languageName: node - linkType: hard - -"jest-validate@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-validate@npm:27.5.1" - dependencies: - "@jest/types": ^27.5.1 - camelcase: ^6.2.0 - chalk: ^4.0.0 - jest-get-type: ^27.5.1 - leven: ^3.1.0 - pretty-format: ^27.5.1 - checksum: 82e870f8ee7e4fb949652711b1567f05ae31c54be346b0899e8353e5c20fad7692b511905b37966945e90af8dc0383eb41a74f3ffefb16140ea4f9164d841412 - languageName: node - linkType: hard - -"jest-watcher@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-watcher@npm:27.5.1" - dependencies: - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - jest-util: ^27.5.1 - string-length: ^4.0.1 - checksum: 191c4e9c278c0902ade1a8a80883ac244963ba3e6e78607a3d5f729ccca9c6e71fb3b316f87883658132641c5d818aa84202585c76752e03c539e6cbecb820bd - languageName: node - linkType: hard - -"jest-worker@npm:^26.2.1": - version: 26.6.2 - resolution: "jest-worker@npm:26.6.2" - dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^7.0.0 - checksum: f9afa3b88e3f12027901e4964ba3ff048285b5783b5225cab28fac25b4058cea8ad54001e9a1577ee2bed125fac3ccf5c80dc507b120300cc1bbcb368796533e - languageName: node - linkType: hard - -"jest-worker@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-worker@npm:27.5.1" - dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 - languageName: node - linkType: hard - -"jest@npm:27.5.1": - version: 27.5.1 - resolution: "jest@npm:27.5.1" - dependencies: - "@jest/core": ^27.5.1 - import-local: ^3.0.2 - jest-cli: ^27.5.1 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 96f1d69042b3c6dfc695f2a4e4b0db38af6fb78582ad1a02beaa57cfcd77cbd31567d7d865c1c85709b7c3e176eefa3b2035ffecd646005f15d8ef528eccf205 - languageName: node - linkType: hard - -"js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 - languageName: node - linkType: hard - -"js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" - dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 - bin: - js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c - languageName: node - linkType: hard - -"js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" - dependencies: - argparse: ^2.0.1 - bin: - js-yaml: bin/js-yaml.js - checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a - languageName: node - linkType: hard - -"jsdom@npm:^16.6.0": - version: 16.7.0 - resolution: "jsdom@npm:16.7.0" - dependencies: - abab: ^2.0.5 - acorn: ^8.2.4 - acorn-globals: ^6.0.0 - cssom: ^0.4.4 - cssstyle: ^2.3.0 - data-urls: ^2.0.0 - decimal.js: ^10.2.1 - domexception: ^2.0.1 - escodegen: ^2.0.0 - form-data: ^3.0.0 - html-encoding-sniffer: ^2.0.1 - http-proxy-agent: ^4.0.1 - https-proxy-agent: ^5.0.0 - is-potential-custom-element-name: ^1.0.1 - nwsapi: ^2.2.0 - parse5: 6.0.1 - saxes: ^5.0.1 - symbol-tree: ^3.2.4 - tough-cookie: ^4.0.0 - w3c-hr-time: ^1.0.2 - w3c-xmlserializer: ^2.0.0 - webidl-conversions: ^6.1.0 - whatwg-encoding: ^1.0.5 - whatwg-mimetype: ^2.3.0 - whatwg-url: ^8.5.0 - ws: ^7.4.6 - xml-name-validator: ^3.0.0 - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 454b83371857000763ed31130a049acd1b113e3b927e6dcd75c67ddc30cdd242d7ebcac5c2294b7a1a6428155cb1398709c573b3c6d809218692ea68edd93370 - languageName: node - linkType: hard - -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d - languageName: node - linkType: hard - -"json-parse-better-errors@npm:^1.0.1": - version: 1.0.2 - resolution: "json-parse-better-errors@npm:1.0.2" - checksum: ff2b5ba2a70e88fd97a3cb28c1840144c5ce8fae9cbeeddba15afa333a5c407cf0e42300cd0a2885dbb055227fe68d405070faad941beeffbfde9cf3b2c78c5d - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^2.3.0": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b - languageName: node - linkType: hard - -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215 - languageName: node - linkType: hard - -"json-stringify-safe@npm:^5.0.1": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee - languageName: node - linkType: hard - -"json5@npm:2.x, json5@npm:^2.1.2": - version: 2.2.0 - resolution: "json5@npm:2.2.0" - dependencies: - minimist: ^1.2.5 - bin: - json5: lib/cli.js - checksum: e88fc5274bb58fc99547baa777886b069d2dd96d9cfc4490b305fd16d711dabd5979e35a4f90873cefbeb552e216b041a304fe56702bedba76e19bc7845f208d - languageName: node - linkType: hard - -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" - dependencies: - graceful-fs: ^4.1.6 - universalify: ^2.0.0 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 - languageName: node - linkType: hard - -"jsonparse@npm:^1.2.0": - version: 1.3.1 - resolution: "jsonparse@npm:1.3.1" - checksum: 6514a7be4674ebf407afca0eda3ba284b69b07f9958a8d3113ef1005f7ec610860c312be067e450c569aab8b89635e332cee3696789c750692bb60daba627f4d - languageName: node - linkType: hard - -"kind-of@npm:^6.0.3": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b - languageName: node - linkType: hard - -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 - languageName: node - linkType: hard - -"leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 - languageName: node - linkType: hard - -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: ^1.2.1 - type-check: ~0.4.0 - checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4 - languageName: node - linkType: hard - -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e - languageName: node - linkType: hard - -"lie@npm:3.1.1": - version: 3.1.1 - resolution: "lie@npm:3.1.1" - dependencies: - immediate: ~3.0.5 - checksum: 6da9f2121d2dbd15f1eca44c0c7e211e66a99c7b326ec8312645f3648935bc3a658cf0e9fa7b5f10144d9e2641500b4f55bd32754607c3de945b5f443e50ddd1 - languageName: node - linkType: hard - -"lilconfig@npm:2.0.4, lilconfig@npm:^2.0.3": - version: 2.0.4 - resolution: "lilconfig@npm:2.0.4" - checksum: 02ae530aa49218d782eb79e92c600ea5220828987f85aa3403fa512cadc7efe38c0ac7d0cd2edf600ad3fae1f6c1752f5b4bb78c0d9950435b044d53d507c9e1 - languageName: node - linkType: hard - -"lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 - languageName: node - linkType: hard - -"lint-staged@npm:12.3.3": - version: 12.3.3 - resolution: "lint-staged@npm:12.3.3" - dependencies: - cli-truncate: ^3.1.0 - colorette: ^2.0.16 - commander: ^8.3.0 - debug: ^4.3.3 - execa: ^5.1.1 - lilconfig: 2.0.4 - listr2: ^4.0.1 - micromatch: ^4.0.4 - normalize-path: ^3.0.0 - object-inspect: ^1.12.0 - string-argv: ^0.3.1 - supports-color: ^9.2.1 - yaml: ^1.10.2 - bin: - lint-staged: bin/lint-staged.js - checksum: a9147eb5def6345622d1b772d5920b1282808738abf53e6034d8da2d21d6baf80135ea22f799bf4092867a3dba13cd875493b8e32e47f3b4574e4e8871a0aa8e - languageName: node - linkType: hard - -"listr2@npm:^4.0.1": - version: 4.0.1 - resolution: "listr2@npm:4.0.1" - dependencies: - cli-truncate: ^2.1.0 - colorette: ^2.0.16 - log-update: ^4.0.0 - p-map: ^4.0.0 - rfdc: ^1.3.0 - rxjs: ^7.5.2 - through: ^2.3.8 - wrap-ansi: ^7.0.0 - peerDependencies: - enquirer: ">= 2.3.0 < 3" - peerDependenciesMeta: - enquirer: - optional: true - checksum: 38f7c8b779122039f07aee16b29788b04e8766d62244fc747d15e224eeeccefc375c05e0eb3d7e69bf20b0080f69dc003415cdb0b3933f766a29ba6b77dfdd65 - languageName: node - linkType: hard - -"load-json-file@npm:^4.0.0": - version: 4.0.0 - resolution: "load-json-file@npm:4.0.0" - dependencies: - graceful-fs: ^4.1.2 - parse-json: ^4.0.0 - pify: ^3.0.0 - strip-bom: ^3.0.0 - checksum: 8f5d6d93ba64a9620445ee9bde4d98b1eac32cf6c8c2d20d44abfa41a6945e7969456ab5f1ca2fb06ee32e206c9769a20eec7002fe290de462e8c884b6b8b356 - languageName: node - linkType: hard - -"localforage@npm:^1.9.0": - version: 1.10.0 - resolution: "localforage@npm:1.10.0" - dependencies: - lie: 3.1.1 - checksum: f2978b434dafff9bcb0d9498de57d97eba165402419939c944412e179cab1854782830b5ec196212560b22712d1dd03918939f59cf1d4fc1d756fca7950086cf - languageName: node - linkType: hard - -"locate-path@npm:^2.0.0": - version: 2.0.0 - resolution: "locate-path@npm:2.0.0" - dependencies: - p-locate: ^2.0.0 - path-exists: ^3.0.0 - checksum: 02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: ^4.1.0 - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: ^5.0.0 - checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a - languageName: node - linkType: hard - -"lodash.ismatch@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.ismatch@npm:4.4.0" - checksum: a393917578842705c7fc1a30fb80613d1ac42d20b67eb26a2a6004d6d61ee90b419f9eb320508ddcd608e328d91eeaa2651411727eaa9a12534ed6ccb02fc705 - languageName: node - linkType: hard - -"lodash.memoize@npm:4.x, lodash.memoize@npm:^4.1.2": - version: 4.1.2 - resolution: "lodash.memoize@npm:4.1.2" - checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 - languageName: node - linkType: hard - -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 - languageName: node - linkType: hard - -"lodash.uniq@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.uniq@npm:4.5.0" - checksum: a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d - languageName: node - linkType: hard - -"lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.7.0": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 - languageName: node - linkType: hard - -"log-update@npm:^4.0.0": - version: 4.0.0 - resolution: "log-update@npm:4.0.0" - dependencies: - ansi-escapes: ^4.3.0 - cli-cursor: ^3.1.0 - slice-ansi: ^4.0.0 - wrap-ansi: ^6.2.0 - checksum: ae2f85bbabc1906034154fb7d4c4477c79b3e703d22d78adee8b3862fa913942772e7fa11713e3d96fb46de4e3cabefbf5d0a544344f03b58d3c4bff52aa9eb2 - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"make-dir@npm:^3.0.0": - version: 3.1.0 - resolution: "make-dir@npm:3.1.0" - dependencies: - semver: ^6.0.0 - checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 - languageName: node - linkType: hard - -"make-error@npm:1.x, make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^9.1.0": - version: 9.1.0 - resolution: "make-fetch-happen@npm:9.1.0" - 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 - checksum: 0eb371c85fdd0b1584fcfdf3dc3c62395761b3c14658be02620c310305a9a7ecf1617a5e6fb30c1d081c5c8aaf177fa133ee225024313afabb7aa6a10f1e3d04 - languageName: node - linkType: hard - -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: 1.0.5 - checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 - languageName: node - linkType: hard - -"map-obj@npm:^1.0.0": - version: 1.0.1 - resolution: "map-obj@npm:1.0.1" - checksum: 9949e7baec2a336e63b8d4dc71018c117c3ce6e39d2451ccbfd3b8350c547c4f6af331a4cbe1c83193d7c6b786082b6256bde843db90cb7da2a21e8fcc28afed - languageName: node - linkType: hard - -"map-obj@npm:^4.0.0": - version: 4.3.0 - resolution: "map-obj@npm:4.3.0" - checksum: fbc554934d1a27a1910e842bc87b177b1a556609dd803747c85ece420692380827c6ae94a95cce4407c054fa0964be3bf8226f7f2cb2e9eeee432c7c1985684e - languageName: node - linkType: hard - -"mdn-data@npm:2.0.14": - version: 2.0.14 - resolution: "mdn-data@npm:2.0.14" - checksum: 9d0128ed425a89f4cba8f787dca27ad9408b5cb1b220af2d938e2a0629d17d879a34d2cb19318bdb26c3f14c77dd5dfbae67211f5caaf07b61b1f2c5c8c7dc16 - languageName: node - linkType: hard - -"memorystream@npm:^0.3.1": - version: 0.3.1 - resolution: "memorystream@npm:0.3.1" - checksum: f18b42440d24d09516d01466c06adf797df7873f0d40aa7db02e5fb9ed83074e5e65412d0720901d7069363465f82dc4f8bcb44f0cde271567a61426ce6ca2e9 - languageName: node - linkType: hard - -"meow@npm:^8.0.0": - version: 8.1.2 - resolution: "meow@npm:8.1.2" - dependencies: - "@types/minimist": ^1.2.0 - camelcase-keys: ^6.2.2 - decamelize-keys: ^1.1.0 - hard-rejection: ^2.1.0 - minimist-options: 4.1.0 - normalize-package-data: ^3.0.0 - read-pkg-up: ^7.0.1 - redent: ^3.0.0 - trim-newlines: ^3.0.0 - type-fest: ^0.18.0 - yargs-parser: ^20.2.3 - checksum: bc23bf1b4423ef6a821dff9734406bce4b91ea257e7f10a8b7f896f45b59649f07adc0926e2917eacd8cf1df9e4cd89c77623cf63dfd0f8bf54de07a32ee5a85 - languageName: node - linkType: hard - -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 - languageName: node - linkType: hard - -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 - languageName: node - linkType: hard - -"micromatch@npm:^4.0.4": - version: 4.0.4 - resolution: "micromatch@npm:4.0.4" - dependencies: - braces: ^3.0.1 - picomatch: ^2.2.3 - checksum: ef3d1c88e79e0a68b0e94a03137676f3324ac18a908c245a9e5936f838079fcc108ac7170a5fadc265a9c2596963462e402841406bda1a4bb7b68805601d631c - languageName: node - linkType: hard - -"mime-db@npm:1.51.0": - version: 1.51.0 - resolution: "mime-db@npm:1.51.0" - checksum: 613b1ac9d6e725cc24444600b124a7f1ce6c60b1baa654f39a3e260d0995a6dffc5693190217e271af7e2a5612dae19f2a73f3e316707d797a7391165f7ef423 - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.34": - version: 2.1.34 - resolution: "mime-types@npm:2.1.34" - dependencies: - mime-db: 1.51.0 - checksum: 67013de9e9d6799bde6d669d18785b7e18bcd212e710d3e04a4727f92f67a8ad4e74aee24be28b685adb794944814bde649119b58ee3282ffdbee58f9278d9f3 - languageName: node - linkType: hard - -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a - languageName: node - linkType: hard - -"min-indent@npm:^1.0.0": - version: 1.0.1 - resolution: "min-indent@npm:1.0.1" - checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 - languageName: node - linkType: hard - -"mini-signals@npm:^1.2.0": - version: 1.2.0 - resolution: "mini-signals@npm:1.2.0" - checksum: fe28285d6ecc6c8035339fb909748e110ebf31cbaa4e8d849261017327d9a47ad43815f013ac1fc9b8b16c4d302dfd19b6dd952c9657293b70f8d1e95926545c - languageName: node - linkType: hard - -"minimatch@npm:^3.0.4": - version: 3.0.4 - resolution: "minimatch@npm:3.0.4" - dependencies: - brace-expansion: ^1.1.7 - checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 - languageName: node - linkType: hard - -"minimist-options@npm:4.1.0": - version: 4.1.0 - resolution: "minimist-options@npm:4.1.0" - dependencies: - arrify: ^1.0.1 - is-plain-obj: ^1.1.0 - kind-of: ^6.0.3 - checksum: 8c040b3068811e79de1140ca2b708d3e203c8003eb9a414c1ab3cd467fc5f17c9ca02a5aef23bedc51a7f8bfbe77f87e9a7e31ec81fba304cda675b019496f4e - languageName: node - linkType: hard - -"minimist@npm:^1.2.5": - version: 1.2.5 - resolution: "minimist@npm:1.2.5" - checksum: 86706ce5b36c16bfc35c5fe3dbb01d5acdc9a22f2b6cc810b6680656a1d2c0e44a0159c9a3ba51fb072bb5c203e49e10b51dcd0eec39c481f4c42086719bae52 - languageName: node - linkType: hard - -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 - languageName: node - linkType: hard - -"minipass-fetch@npm:^1.3.2": - version: 1.4.1 - resolution: "minipass-fetch@npm:1.4.1" - dependencies: - encoding: ^0.1.12 - minipass: ^3.1.0 - minipass-sized: ^1.0.3 - minizlib: ^2.0.0 - dependenciesMeta: - encoding: - optional: true - checksum: ec93697bdb62129c4e6c0104138e681e30efef8c15d9429dd172f776f83898471bc76521b539ff913248cc2aa6d2b37b652c993504a51cc53282563640f29216 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 - languageName: node - linkType: hard - -"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3": - version: 3.1.6 - resolution: "minipass@npm:3.1.6" - dependencies: - yallist: ^4.0.0 - checksum: 57a04041413a3531a65062452cb5175f93383ef245d6f4a2961d34386eb9aa8ac11ac7f16f791f5e8bbaf1dfb1ef01596870c88e8822215db57aa591a5bb0a77 - languageName: node - linkType: hard - -"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f - languageName: node - linkType: hard - -"modify-values@npm:^1.0.0": - version: 1.0.1 - resolution: "modify-values@npm:1.0.1" - checksum: 8296610c608bc97b03c2cf889c6cdf4517e32fa2d836440096374c2209f6b7b3e256c209493a0b32584b9cb32d528e99d0dd19dcd9a14d2d915a312d391cc7e9 - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:^2.0.0": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"nanoid@npm:^3.1.30": - version: 3.2.0 - resolution: "nanoid@npm:3.2.0" - bin: - nanoid: bin/nanoid.cjs - checksum: 3d1d5a69fea84e538057cf64106e713931c4ef32af344068ecff153ff91252f39b0f2b472e09b0dfff43ac3cf520c92938d90e6455121fe93976e23660f4fccc - languageName: node - linkType: hard - -"natural-compare@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d - languageName: node - linkType: hard - -"negotiator@npm:^0.6.2": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 - languageName: node - linkType: hard - -"neo-async@npm:^2.6.0": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 - languageName: node - linkType: hard - -"nice-try@npm:^1.0.4": - version: 1.0.5 - resolution: "nice-try@npm:1.0.5" - checksum: 0b4af3b5bb5d86c289f7a026303d192a7eb4417231fe47245c460baeabae7277bcd8fd9c728fb6bd62c30b3e15cd6620373e2cf33353b095d8b403d3e8a15aff - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 8.4.1 - resolution: "node-gyp@npm:8.4.1" - 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 - checksum: 341710b5da39d3660e6a886b37e210d33f8282047405c2e62c277bcc744c7552c5b8b972ebc3a7d5c2813794e60cc48c3ebd142c46d6e0321db4db6c92dd0355 - languageName: node - linkType: hard - -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e - languageName: node - linkType: hard - -"node-releases@npm:^2.0.1": - version: 2.0.1 - resolution: "node-releases@npm:2.0.1" - checksum: b20dd8d4bced11f75060f0387e05e76b9dc4a0451f7bb3516eade6f50499ea7768ba95d8a60d520c193402df1e58cb3fe301510cc1c1ad68949c3d57b5149866 - languageName: node - linkType: hard - -"nopt@npm:^5.0.0": - version: 5.0.0 - resolution: "nopt@npm:5.0.0" - dependencies: - abbrev: 1 - bin: - nopt: bin/nopt.js - checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f - languageName: node - linkType: hard - -"normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.5.0": - version: 2.5.0 - resolution: "normalize-package-data@npm:2.5.0" - dependencies: - hosted-git-info: ^2.1.4 - resolve: ^1.10.0 - semver: 2 || 3 || 4 || 5 - validate-npm-package-license: ^3.0.1 - checksum: 7999112efc35a6259bc22db460540cae06564aa65d0271e3bdfa86876d08b0e578b7b5b0028ee61b23f1cae9fc0e7847e4edc0948d3068a39a2a82853efc8499 - languageName: node - linkType: hard - -"normalize-package-data@npm:^3.0.0": - version: 3.0.3 - resolution: "normalize-package-data@npm:3.0.3" - dependencies: - hosted-git-info: ^4.0.1 - is-core-module: ^2.5.0 - semver: ^7.3.4 - validate-npm-package-license: ^3.0.1 - checksum: bbcee00339e7c26fdbc760f9b66d429258e2ceca41a5df41f5df06cc7652de8d82e8679ff188ca095cad8eff2b6118d7d866af2b68400f74602fbcbce39c160a - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - -"normalize-url@npm:^6.0.1": - version: 6.1.0 - resolution: "normalize-url@npm:6.1.0" - checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50 - languageName: node - linkType: hard - -"npm-run-all@npm:4.1.5": - version: 4.1.5 - resolution: "npm-run-all@npm:4.1.5" - dependencies: - ansi-styles: ^3.2.1 - chalk: ^2.4.1 - cross-spawn: ^6.0.5 - memorystream: ^0.3.1 - minimatch: ^3.0.4 - pidtree: ^0.3.0 - read-pkg: ^3.0.0 - shell-quote: ^1.6.1 - string.prototype.padend: ^3.0.0 - bin: - npm-run-all: bin/npm-run-all/index.js - run-p: bin/run-p/index.js - run-s: bin/run-s/index.js - checksum: 373b72c6a36564da13c1642c1fd9bb4dcc756bce7a3648f883772f02661095319820834ff813762d2fee403e9b40c1cd27c8685807c107440f10eb19c006d4a0 - languageName: node - linkType: hard - -"npm-run-path@npm:^4.0.1": - version: 4.0.1 - resolution: "npm-run-path@npm:4.0.1" - dependencies: - path-key: ^3.0.0 - checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 - languageName: node - linkType: hard - -"npmlog@npm:^6.0.0": - version: 6.0.0 - resolution: "npmlog@npm:6.0.0" - dependencies: - are-we-there-yet: ^2.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.0 - set-blocking: ^2.0.0 - checksum: 33d8a7fe3d63bf83b16655b6588ae7ba10b5f37b067a661e7cab6508660d7c3204ae716ee2c5ce4eb9626fd1489cf2fa7645d789bc3b704f8c3ccb04a532a50b - languageName: node - linkType: hard - -"nth-check@npm:^2.0.1": - version: 2.0.1 - resolution: "nth-check@npm:2.0.1" - dependencies: - boolbase: ^1.0.0 - checksum: 5386d035c48438ff304fe687704d93886397349d1bed136de97aeae464caba10e8ffac55a04b215b86b3bc8897f33e0a5aa1045a9d8b2f251ae61b2a3ad3e450 - languageName: node - linkType: hard - -"nwsapi@npm:^2.2.0": - version: 2.2.0 - resolution: "nwsapi@npm:2.2.0" - checksum: 5ef4a9bc0c1a5b7f2e014aa6a4b359a257503b796618ed1ef0eb852098f77e772305bb0e92856e4bbfa3e6c75da48c0113505c76f144555ff38867229c2400a7 - languageName: node - linkType: hard - -"object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f - languageName: node - linkType: hard - -"object-inspect@npm:^1.11.0, object-inspect@npm:^1.12.0, object-inspect@npm:^1.9.0": - version: 1.12.0 - resolution: "object-inspect@npm:1.12.0" - checksum: 2b36d4001a9c921c6b342e2965734519c9c58c355822243c3207fbf0aac271f8d44d30d2d570d450b2cc6f0f00b72bcdba515c37827d2560e5f22b1899a31cf4 - languageName: node - linkType: hard - -"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object.assign@npm:^4.1.2": - version: 4.1.2 - resolution: "object.assign@npm:4.1.2" - dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 - has-symbols: ^1.0.1 - object-keys: ^1.1.1 - checksum: d621d832ed7b16ac74027adb87196804a500d80d9aca536fccb7ba48d33a7e9306a75f94c1d29cbfa324bc091bfc530bc24789568efdaee6a47fcfa298993814 - languageName: node - linkType: hard - -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - -"onetime@npm:^5.1.0, onetime@npm:^5.1.2": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: ^2.1.0 - checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 - languageName: node - linkType: hard - -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 - languageName: node - linkType: hard - -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" - 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.3 - checksum: dbc6fa065604b24ea57d734261914e697bd73b69eff7f18e967e8912aa2a40a19a9f599a507fa805be6c13c24c4eae8c71306c239d517d42d4c041c942f508a0 - languageName: node - linkType: hard - -"p-finally@npm:^1.0.0": - version: 1.0.0 - resolution: "p-finally@npm:1.0.0" - checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 - languageName: node - linkType: hard - -"p-limit@npm:^1.1.0": - version: 1.3.0 - resolution: "p-limit@npm:1.3.0" - dependencies: - p-try: ^1.0.0 - checksum: 281c1c0b8c82e1ac9f81acd72a2e35d402bf572e09721ce5520164e9de07d8274451378a3470707179ad13240535558f4b277f02405ad752e08c7d5b0d54fbfd - languageName: node - linkType: hard - -"p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: ^2.0.0 - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: ^0.1.0 - checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 - languageName: node - linkType: hard - -"p-locate@npm:^2.0.0": - version: 2.0.0 - resolution: "p-locate@npm:2.0.0" - dependencies: - p-limit: ^1.1.0 - checksum: e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 - languageName: node - linkType: hard - -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: ^2.2.0 - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: ^3.0.2 - checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c - languageName: node - linkType: hard - -"p-queue@npm:^6.6.2": - version: 6.6.2 - resolution: "p-queue@npm:6.6.2" - dependencies: - eventemitter3: ^4.0.4 - p-timeout: ^3.2.0 - checksum: 832642fcc4ab6477b43e6d7c30209ab10952969ed211c6d6f2931be8a4f9935e3578c72e8cce053dc34f2eb6941a408a2c516a54904e989851a1a209cf19761c - languageName: node - linkType: hard - -"p-timeout@npm:^3.2.0": - version: 3.2.0 - resolution: "p-timeout@npm:3.2.0" - dependencies: - p-finally: ^1.0.0 - checksum: 3dd0eaa048780a6f23e5855df3dd45c7beacff1f820476c1d0d1bcd6648e3298752ba2c877aa1c92f6453c7dd23faaf13d9f5149fc14c0598a142e2c5e8d649c - languageName: node - linkType: hard - -"p-try@npm:^1.0.0": - version: 1.0.0 - resolution: "p-try@npm:1.0.0" - checksum: 3b5303f77eb7722144154288bfd96f799f8ff3e2b2b39330efe38db5dd359e4fb27012464cd85cb0a76e9b7edd1b443568cb3192c22e7cffc34989df0bafd605 - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: ^3.0.0 - checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff - languageName: node - linkType: hard - -"parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "parse-json@npm:4.0.0" - dependencies: - error-ex: ^1.3.1 - json-parse-better-errors: ^1.0.1 - checksum: 0fe227d410a61090c247e34fa210552b834613c006c2c64d9a05cfe9e89cf8b4246d1246b1a99524b53b313e9ac024438d0680f67e33eaed7e6f38db64cfe7b5 - languageName: node - linkType: hard - -"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" - 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 - checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 - languageName: node - linkType: hard - -"parse-uri@npm:^1.0.0": - version: 1.0.3 - resolution: "parse-uri@npm:1.0.3" - checksum: 842cabbde29ed047e7b2cb95eaca595e3e22b8ac712d973915a198a718199407e800d4bb71a6603d7169913eed84c3cd830666367048ef3d6eecbc0b2559d665 - languageName: node - linkType: hard - -"parse5@npm:6.0.1": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd - languageName: node - linkType: hard - -"parseqs@npm:0.0.6": - version: 0.0.6 - resolution: "parseqs@npm:0.0.6" - checksum: 7fc4ff4ba59764060bb8529875f6d4313056ea6939ff579b22dd7bd6f6033035e1fd2d6a559ab48ef0a7fa29a9d7731c982bfd1594e9115141fe1c328485ce9e - languageName: node - linkType: hard - -"parseuri@npm:0.0.6": - version: 0.0.6 - resolution: "parseuri@npm:0.0.6" - checksum: fa430e40f0c75293a28e5f1023da5f51a5038d5e34c48c517b0d5187143f6bcc67d3091a062b68765db4a22757e488c7d15854f9d1921f2c2b9afa5ca0629a84 - languageName: node - linkType: hard - -"path-exists@npm:^3.0.0": - version: 3.0.0 - resolution: "path-exists@npm:3.0.0" - checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-key@npm:^2.0.1": - version: 2.0.1 - resolution: "path-key@npm:2.0.1" - checksum: f7ab0ad42fe3fb8c7f11d0c4f849871e28fbd8e1add65c370e422512fc5887097b9cf34d09c1747d45c942a8c1e26468d6356e2df3f740bf177ab8ca7301ebfd - languageName: node - linkType: hard - -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 - languageName: node - linkType: hard - -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a - languageName: node - linkType: hard - -"path-type@npm:^3.0.0": - version: 3.0.0 - resolution: "path-type@npm:3.0.0" - dependencies: - pify: ^3.0.0 - checksum: 735b35e256bad181f38fa021033b1c33cfbe62ead42bb2222b56c210e42938eecb272ae1949f3b6db4ac39597a61b44edd8384623ec4d79bfdc9a9c0f12537a6 - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf - languageName: node - linkType: hard - -"pidtree@npm:^0.3.0": - version: 0.3.1 - resolution: "pidtree@npm:0.3.1" - bin: - pidtree: bin/pidtree.js - checksum: eb49025099f1af89a4696f7673351421f13420f3397b963c901fe23a1c9c2ff50f4750321970d4472c0ffbb065e4a6c3c27f75e226cc62284b19e21d32ce7012 - languageName: node - linkType: hard - -"pify@npm:^2.3.0": - version: 2.3.0 - resolution: "pify@npm:2.3.0" - checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba - languageName: node - linkType: hard - -"pify@npm:^3.0.0": - version: 3.0.0 - resolution: "pify@npm:3.0.0" - checksum: 6cdcbc3567d5c412450c53261a3f10991665d660961e06605decf4544a61a97a54fefe70a68d5c37080ff9d6f4cf51444c90198d1ba9f9309a6c0d6e9f5c4fde - languageName: node - linkType: hard - -"pirates@npm:^4.0.4": - version: 4.0.4 - resolution: "pirates@npm:4.0.4" - checksum: 6b7187d526fd025a2b91e8fd289c78d88c4adc3ea947b9facbe9cb300a896b0ec00f3e77b36a043001695312a8debbf714453495283bd8a4eaad3bc0c38df425 - languageName: node - linkType: hard - -"pixi-particles@npm:4.3.1": - version: 4.3.1 - resolution: "pixi-particles@npm:4.3.1" - peerDependencies: - pixi.js: ">=4.0.0" - checksum: c7e6314921e6a5a935fe9874d5e1389b8a234f1a9d4774aec181faecd211aa26c7442b58435517212a737c9db24ff83383b9cf83efb5143cc078fa211259ab9a - languageName: node - linkType: hard - -"pixi.js@npm:5.3.11": - version: 5.3.11 - resolution: "pixi.js@npm:5.3.11" - dependencies: - "@pixi/accessibility": 5.3.11 - "@pixi/app": 5.3.11 - "@pixi/constants": 5.3.11 - "@pixi/core": 5.3.11 - "@pixi/display": 5.3.11 - "@pixi/extract": 5.3.11 - "@pixi/filter-alpha": 5.3.11 - "@pixi/filter-blur": 5.3.11 - "@pixi/filter-color-matrix": 5.3.11 - "@pixi/filter-displacement": 5.3.11 - "@pixi/filter-fxaa": 5.3.11 - "@pixi/filter-noise": 5.3.11 - "@pixi/graphics": 5.3.11 - "@pixi/interaction": 5.3.11 - "@pixi/loaders": 5.3.11 - "@pixi/math": 5.3.11 - "@pixi/mesh": 5.3.11 - "@pixi/mesh-extras": 5.3.11 - "@pixi/mixin-cache-as-bitmap": 5.3.11 - "@pixi/mixin-get-child-by-name": 5.3.11 - "@pixi/mixin-get-global-position": 5.3.11 - "@pixi/particles": 5.3.11 - "@pixi/polyfill": 5.3.11 - "@pixi/prepare": 5.3.11 - "@pixi/runner": 5.3.11 - "@pixi/settings": 5.3.11 - "@pixi/sprite": 5.3.11 - "@pixi/sprite-animated": 5.3.11 - "@pixi/sprite-tiling": 5.3.11 - "@pixi/spritesheet": 5.3.11 - "@pixi/text": 5.3.11 - "@pixi/text-bitmap": 5.3.11 - "@pixi/ticker": 5.3.11 - "@pixi/utils": 5.3.11 - checksum: ff33b02d78ef2266b8e3e1159142d2cc71605b846935760dcef36c8774dd87d8f804003f375ece259cbce1e9f64487ed5b2f1fca620677fc08a374a1203c60ce - languageName: node - linkType: hard - -"pkg-dir@npm:^4.2.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: ^4.0.0 - checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 - languageName: node - linkType: hard - -"postcss-calc@npm:^8.2.0": - version: 8.2.2 - resolution: "postcss-calc@npm:8.2.2" - dependencies: - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.0.2 - peerDependencies: - postcss: ^8.2.2 - checksum: aa60cbb01ae48ae8b708bc8c056e8ad6ddcc9f56af88c8e898c0b5d5d7c24f3448ec61698628d6c2e70893a657e99917ad77f18214c3d3bcab32477e855bccb4 - languageName: node - linkType: hard - -"postcss-colormin@npm:^5.2.3": - version: 5.2.3 - resolution: "postcss-colormin@npm:5.2.3" - dependencies: - browserslist: ^4.16.6 - caniuse-api: ^3.0.0 - colord: ^2.9.1 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 5eae961d9e4801808c1cd0a7491bef49ffbb683d5c93f9009cbd3d6a168749ddace57db42bc3a1e54b8a534cd64513061724483bfefac0fed991319e7efc2ec6 - languageName: node - linkType: hard - -"postcss-convert-values@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-convert-values@npm:5.0.2" - dependencies: - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 02a31f72b3365345db8aa1d83b084c96975d99a6494359378069431fd810e78ebf3bd96d03a598255daa8f6e2cd63722f119ddec9d24f66b6974b57819feb034 - languageName: node - linkType: hard - -"postcss-discard-comments@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-discard-comments@npm:5.0.1" - peerDependencies: - postcss: ^8.2.15 - checksum: c561952bbffa799cfc96216098d7ccc14b1dc776f0a8038c52eafe89fbec02701a234f35f7244aa06d58127103e7dd5f0bfd1db18a53c1438fef5c0a9b2dbddf - languageName: node - linkType: hard - -"postcss-discard-duplicates@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-discard-duplicates@npm:5.0.1" - peerDependencies: - postcss: ^8.2.15 - checksum: becb68fd5ccd632fe51413a6ab4fd5c8aa3aae9d12947238014c2fb7816a2e0eb9a5454ee7207cac19f4a093c799be6053f13bf4048e97e20d88d5af4a0656bc - languageName: node - linkType: hard - -"postcss-discard-empty@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-discard-empty@npm:5.0.1" - peerDependencies: - postcss: ^8.2.15 - checksum: 2465ddabb18774c4996c18b8370498cf71597a23c45518ea75e7b73cd8f003b0be52ea9f27f28e24bba408d08ec5152e019cc595611bb097748993c1788d9f4f - languageName: node - linkType: hard - -"postcss-discard-overridden@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-discard-overridden@npm:5.0.2" - peerDependencies: - postcss: ^8.2.15 - checksum: 3ac5b3382606bb7fc4c6fcd867e9f7b134be712bdbbfce378bcc7db72e86308db766f77af500ed5ac6b7c075dd29293e951b02438fdbd89d3943f70b581c8d02 - languageName: node - linkType: hard - -"postcss-merge-longhand@npm:^5.0.4": - version: 5.0.4 - resolution: "postcss-merge-longhand@npm:5.0.4" - dependencies: - postcss-value-parser: ^4.1.0 - stylehacks: ^5.0.1 - peerDependencies: - postcss: ^8.2.15 - checksum: 6c5ff2ae0e9def05a59cbb432b5cbbdb968816b83c4e38fdf14fa596ef21e36442f61b53984d56dca6165d91e74eadc720270b2887a4a1ef5e25ee171b7d7ea0 - languageName: node - linkType: hard - -"postcss-merge-rules@npm:^5.0.4": - version: 5.0.4 - resolution: "postcss-merge-rules@npm:5.0.4" - dependencies: - browserslist: ^4.16.6 - caniuse-api: ^3.0.0 - cssnano-utils: ^3.0.0 - postcss-selector-parser: ^6.0.5 - peerDependencies: - postcss: ^8.2.15 - checksum: 80189d794f2f1153f4191aacaf622b5f399a17dc6bb5baf4c80ed09ae14baf2285fbcfb686b16a0ca702fe6c2d443903260e753e86fb67dc01b66f4f13ce4ba8 - languageName: node - linkType: hard - -"postcss-minify-font-values@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-minify-font-values@npm:5.0.2" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: de54146819e838d6e813c685e1bce741caf1376033be229f91caac6a8b139936e8f795ea78fbfe9a29d5e108e437da47b3db690a370589518373d454d9c1c638 - languageName: node - linkType: hard - -"postcss-minify-gradients@npm:^5.0.4": - version: 5.0.4 - resolution: "postcss-minify-gradients@npm:5.0.4" - dependencies: - colord: ^2.9.1 - cssnano-utils: ^3.0.0 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: b102af3b435ff4280f2d256ba59a024dacbefc21e8d97ac1037a95bb18f29882f77a12381fd509efa339eacb2bfa3505e75bfa5e21a185841bd046044f032007 - languageName: node - linkType: hard - -"postcss-minify-params@npm:^5.0.3": - version: 5.0.3 - resolution: "postcss-minify-params@npm:5.0.3" - dependencies: - alphanum-sort: ^1.0.2 - browserslist: ^4.16.6 - cssnano-utils: ^3.0.0 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: e633067f02db428ef0300ad21b329ef04423843a69d24d69f3d253a7c6cd635f29e28158166936973d16d99d0da7204897224a345d102c2450da9690f09b024b - languageName: node - linkType: hard - -"postcss-minify-selectors@npm:^5.1.1": - version: 5.1.1 - resolution: "postcss-minify-selectors@npm:5.1.1" - dependencies: - alphanum-sort: ^1.0.2 - postcss-selector-parser: ^6.0.5 - peerDependencies: - postcss: ^8.2.15 - checksum: a6073ae995bf989e9c1c4e79adcf443a1c70db04cb817bbe58025522bfb2d5765effa6047c445a028efc38d06885835fbf486fbd69332bd2823299a34a1dadaf - languageName: node - linkType: hard - -"postcss-modules-extract-imports@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-extract-imports@npm:3.0.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 - languageName: node - linkType: hard - -"postcss-modules-local-by-default@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-local-by-default@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.1.0 - checksum: 6cf570badc7bc26c265e073f3ff9596b69bb954bc6ac9c5c1b8cba2995b80834226b60e0a3cbb87d5f399dbb52e6466bba8aa1d244f6218f99d834aec431a69d - languageName: node - linkType: hard - -"postcss-modules-scope@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-scope@npm:3.0.0" - dependencies: - postcss-selector-parser: ^6.0.4 - peerDependencies: - postcss: ^8.1.0 - checksum: 330b9398dbd44c992c92b0dc612c0626135e2cc840fee41841eb61247a6cfed95af2bd6f67ead9dd9d0bb41f5b0367129d93c6e434fa3e9c58ade391d9a5a138 - languageName: node - linkType: hard - -"postcss-modules-values@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-values@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - peerDependencies: - postcss: ^8.1.0 - checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 - languageName: node - linkType: hard - -"postcss-normalize-charset@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-normalize-charset@npm:5.0.1" - peerDependencies: - postcss: ^8.2.15 - checksum: b74720bf0487809143a30e1965ff756698650abdd072f4fe81f0a32ce41e84c140f107b39ad0babf4d319aa620d1d4e01d1f89dc7c7b3f55fd3b27f243ee26e1 - languageName: node - linkType: hard - -"postcss-normalize-display-values@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-normalize-display-values@npm:5.0.2" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 45d1975b98ca67bef1b27b247dff129fb3f2573471e416bcc528ee883a9425d51ba971dfc82c1e8e35389f047d4debe09be3a989aa250b1203c4e58158dcddc1 - languageName: node - linkType: hard - -"postcss-normalize-positions@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-normalize-positions@npm:5.0.2" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 29c1c48ac88c64ed34abdb86cb0d954860c4e4d0f971ec8e7ab26df28a6304ab6d5d1e974580b8cde97c800eef23ab4b03be4056563f8a6a01019608af0b2335 - languageName: node - linkType: hard - -"postcss-normalize-repeat-style@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-normalize-repeat-style@npm:5.0.2" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: d609d7b6b2ba7b42d72c1ffdbfc80af19f3864654f9f61d51a64b33f9a3428d84fccc85b53b9aa494ec404eb8de61b0288e4e9f820a008f4e00afea57c80fc98 - languageName: node - linkType: hard - -"postcss-normalize-string@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-normalize-string@npm:5.0.2" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 79661e576ec058231f7415638a4c210c6716f7aed53ef6a4719883771ef6171ddc7a3720d838005d0b587f839ec54d18faeb08774b4014571e946f16574deef8 - languageName: node - linkType: hard - -"postcss-normalize-timing-functions@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-normalize-timing-functions@npm:5.0.2" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: be6cd1ba6d1382669420ccf03f57302246585e7880e060045da528220f729543f89aedb8c2a31dddb2267f7afe8b3f8fbae4d9377b5a86cf6d723db1d64385dd - languageName: node - linkType: hard - -"postcss-normalize-unicode@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-normalize-unicode@npm:5.0.2" - dependencies: - browserslist: ^4.16.6 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 452a1f2e559e4392cbf911d00d9ecae251233cf37bc81aa586be7ae93da3d1c14bd34bd89713777746845e5f4b2fbff0e0cc62ab24570041b29c62e8ece96b6c - languageName: node - linkType: hard - -"postcss-normalize-url@npm:^5.0.4": - version: 5.0.4 - resolution: "postcss-normalize-url@npm:5.0.4" - dependencies: - normalize-url: ^6.0.1 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 3c5a1d1723ab48811f1b888d065f8d9694d37f93fe3378a7672ec9c356a3ee96c84f1f7021c8c4a65f7caaa403f45df12b9b88de1fe66b0d1091d0f4fddf8233 - languageName: node - linkType: hard - -"postcss-normalize-whitespace@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-normalize-whitespace@npm:5.0.2" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: a8b602744dd0896928e1cec6b52230d5b652cb1dbf1e9b6e449529bd903b64879768b25ff2088c3bec2b67e96e13706bfec8e3d32a2f8700795f4a56f19e6f80 - languageName: node - linkType: hard - -"postcss-ordered-values@npm:^5.0.3": - version: 5.0.3 - resolution: "postcss-ordered-values@npm:5.0.3" - dependencies: - cssnano-utils: ^3.0.0 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: d441ecfbb09b5a298f8143e7a3d17b57e0278367245effe8213faba898b5126b34d1da8af57cbde859894df22e593beac943f64eaa13d377136b32622d90c30d - languageName: node - linkType: hard - -"postcss-reduce-initial@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-reduce-initial@npm:5.0.2" - dependencies: - browserslist: ^4.16.6 - caniuse-api: ^3.0.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 324bdb897435a867f54e22d97fa3ea9f8aa71af68a1cbf8a3b918a41af83f7c810ea0726d7e59c93de0c997b0965fcb6c52e5a36755c34e558ccf7277f5bb8df - languageName: node - linkType: hard - -"postcss-reduce-transforms@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-reduce-transforms@npm:5.0.2" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: eb7c758a108810d24c5ca55f2de2f9ccdaf8f76dbc39c363f124b2f8afffc5f93dae43eef2770c8704e71b34891ea69f67b9060abafc8ba3ca7cd10d01f63b06 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5": - version: 6.0.9 - resolution: "postcss-selector-parser@npm:6.0.9" - dependencies: - cssesc: ^3.0.0 - util-deprecate: ^1.0.2 - checksum: f8161ab4d3e5c76b8467189c6d164ba0f6b6e74677435f29e34caa1df01e052b582b4ae4f7468b2243c4befdd8bdcdb7685542d1b2fca8deae21b3e849c78802 - languageName: node - linkType: hard - -"postcss-svgo@npm:^5.0.3": - version: 5.0.3 - resolution: "postcss-svgo@npm:5.0.3" - dependencies: - postcss-value-parser: ^4.1.0 - svgo: ^2.7.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 7da0bfd6ecae300f1d82432d987ed3a4034a1502c4c458a0cf7284e172e8e86aa5098a89d9c23ee6b1360695c969f0f61ed776dd8098e26ee2a0b132ff1a7a5d - languageName: node - linkType: hard - -"postcss-unique-selectors@npm:^5.0.2": - version: 5.0.2 - resolution: "postcss-unique-selectors@npm:5.0.2" - dependencies: - alphanum-sort: ^1.0.2 - postcss-selector-parser: ^6.0.5 - peerDependencies: - postcss: ^8.2.15 - checksum: ad0f7a8a4f1ed958544c1ede62a1c4b0978e01627a6ef0642f7b044d0f9fdb331318a91f8312f418a773b0f2df06c50896cfaf7e5dd3d0142bd1e5ba75dc9eb7 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.0.2, postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": - version: 4.2.0 - resolution: "postcss-value-parser@npm:4.2.0" - checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f - languageName: node - linkType: hard - -"postcss@npm:^8, postcss@npm:^8.4.5": - version: 8.4.5 - resolution: "postcss@npm:8.4.5" - dependencies: - nanoid: ^3.1.30 - picocolors: ^1.0.0 - source-map-js: ^1.0.1 - checksum: b78abdd89c10f7b48f4bdcd376104a19d6e9c7495ab521729bdb3df315af6c211360e9f06887ad3bc0ab0f61a04b91d68ea11462997c79cced58b9ccd66fac07 - languageName: node - linkType: hard - -"prelude-ls@npm:^1.2.1": - version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a - languageName: node - linkType: hard - -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 - languageName: node - linkType: hard - -"prettier-linter-helpers@npm:^1.0.0": - version: 1.0.0 - resolution: "prettier-linter-helpers@npm:1.0.0" - dependencies: - fast-diff: ^1.1.2 - checksum: 00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392 - languageName: node - linkType: hard - -"prettier@npm:2.5.1": - version: 2.5.1 - resolution: "prettier@npm:2.5.1" - bin: - prettier: bin-prettier.js - checksum: 21b9408476ea1c544b0e45d51ceb94a84789ff92095abb710942d780c862d0daebdb29972d47f6b4d0f7ebbfb0ffbf56cc2cfa3e3e9d1cca54864af185b15b66 - languageName: node - linkType: hard - -"pretty-format@npm:^27.0.0, pretty-format@npm:^27.4.6": - version: 27.4.6 - resolution: "pretty-format@npm:27.4.6" - dependencies: - ansi-regex: ^5.0.1 - ansi-styles: ^5.0.0 - react-is: ^17.0.1 - checksum: 5eda32e4e47ddd1a9e8fe9ebef519b217ba403eb8bcb804ba551dfb37f87e674472013fcf78480ab535844fdddcc706fac94511eba349bfb94a138a02d1a7a59 - languageName: node - linkType: hard - -"pretty-format@npm:^27.5.1": - version: 27.5.1 - resolution: "pretty-format@npm:27.5.1" - dependencies: - ansi-regex: ^5.0.1 - ansi-styles: ^5.0.0 - react-is: ^17.0.1 - checksum: cf610cffcb793885d16f184a62162f2dd0df31642d9a18edf4ca298e909a8fe80bdbf556d5c9573992c102ce8bf948691da91bf9739bee0ffb6e79c8a8a6e088 - languageName: node - linkType: hard - -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf - languageName: node - linkType: hard - -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 - languageName: node - linkType: hard - -"prompts@npm:^2.0.1": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" - dependencies: - kleur: ^3.0.3 - sisteransi: ^1.0.5 - checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d - languageName: node - linkType: hard - -"psl@npm:^1.1.33": - version: 1.8.0 - resolution: "psl@npm:1.8.0" - checksum: 6150048ed2da3f919478bee8a82f3828303bc0fc730fb015a48f83c9977682c7b28c60ab01425a72d82a2891a1681627aa530a991d50c086b48a3be27744bde7 - languageName: node - linkType: hard - -"punycode@npm:1.3.2": - version: 1.3.2 - resolution: "punycode@npm:1.3.2" - checksum: b8807fd594b1db33335692d1f03e8beeddde6fda7fbb4a2e32925d88d20a3aa4cd8dcc0c109ccaccbd2ba761c208dfaaada83007087ea8bfb0129c9ef1b99ed6 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 - languageName: node - linkType: hard - -"q@npm:^1.5.1": - version: 1.5.1 - resolution: "q@npm:1.5.1" - checksum: 147baa93c805bc1200ed698bdf9c72e9e42c05f96d007e33a558b5fdfd63e5ea130e99313f28efc1783e90e6bdb4e48b67a36fcc026b7b09202437ae88a1fb12 - languageName: node - linkType: hard - -"query-string@npm:^7.1.0": - version: 7.1.0 - resolution: "query-string@npm:7.1.0" - dependencies: - decode-uri-component: ^0.2.0 - filter-obj: ^1.1.0 - split-on-first: ^1.0.0 - strict-uri-encode: ^2.0.0 - checksum: 4594a0a092772eb6854310feea85e34f8dcf70df494776a45b9e5be53621ffbcf930ae669974e4e171ce5e0f29a837e9821d48db843106dd94ee390f6f5ac857 - languageName: node - linkType: hard - -"querystring@npm:0.2.0": - version: 0.2.0 - resolution: "querystring@npm:0.2.0" - checksum: 8258d6734f19be27e93f601758858c299bdebe71147909e367101ba459b95446fbe5b975bf9beb76390156a592b6f4ac3a68b6087cea165c259705b8b4e56a69 - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 - languageName: node - linkType: hard - -"quick-lru@npm:^4.0.1": - version: 4.0.1 - resolution: "quick-lru@npm:4.0.1" - checksum: bea46e1abfaa07023e047d3cf1716a06172c4947886c053ede5c50321893711577cb6119360f810cc3ffcd70c4d7db4069c3cee876b358ceff8596e062bd1154 - languageName: node - linkType: hard - -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: ^5.1.0 - checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 - languageName: node - linkType: hard - -"react-is@npm:^17.0.1": - version: 17.0.2 - resolution: "react-is@npm:17.0.2" - checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 - languageName: node - linkType: hard - -"read-pkg-up@npm:^3.0.0": - version: 3.0.0 - resolution: "read-pkg-up@npm:3.0.0" - dependencies: - find-up: ^2.0.0 - read-pkg: ^3.0.0 - checksum: 16175573f2914ab9788897bcbe2a62b5728d0075e62285b3680cebe97059e2911e0134a062cf6e51ebe3e3775312bc788ac2039ed6af38ec68d2c10c6f2b30fb - languageName: node - linkType: hard - -"read-pkg-up@npm:^7.0.1": - version: 7.0.1 - resolution: "read-pkg-up@npm:7.0.1" - dependencies: - find-up: ^4.1.0 - read-pkg: ^5.2.0 - type-fest: ^0.8.1 - checksum: e4e93ce70e5905b490ca8f883eb9e48b5d3cebc6cd4527c25a0d8f3ae2903bd4121c5ab9c5a3e217ada0141098eeb661313c86fa008524b089b8ed0b7f165e44 - languageName: node - linkType: hard - -"read-pkg@npm:^3.0.0": - version: 3.0.0 - resolution: "read-pkg@npm:3.0.0" - dependencies: - load-json-file: ^4.0.0 - normalize-package-data: ^2.3.2 - path-type: ^3.0.0 - checksum: 398903ebae6c7e9965419a1062924436cc0b6f516c42c4679a90290d2f87448ed8f977e7aa2dbba4aa1ac09248628c43e493ac25b2bc76640e946035200e34c6 - languageName: node - linkType: hard - -"read-pkg@npm:^5.2.0": - version: 5.2.0 - resolution: "read-pkg@npm:5.2.0" - dependencies: - "@types/normalize-package-data": ^2.4.0 - normalize-package-data: ^2.5.0 - parse-json: ^5.0.0 - type-fest: ^0.6.0 - checksum: eb696e60528b29aebe10e499ba93f44991908c57d70f2d26f369e46b8b9afc208ef11b4ba64f67630f31df8b6872129e0a8933c8c53b7b4daf0eace536901222 - languageName: node - linkType: hard - -"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 - languageName: node - linkType: hard - -"readable-stream@npm:~2.3.6": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" - 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 - checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: ^2.2.1 - checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 - languageName: node - linkType: hard - -"redent@npm:^3.0.0": - version: 3.0.0 - resolution: "redent@npm:3.0.0" - dependencies: - indent-string: ^4.0.0 - strip-indent: ^3.0.0 - checksum: fa1ef20404a2d399235e83cc80bd55a956642e37dd197b4b612ba7327bf87fa32745aeb4a1634b2bab25467164ab4ed9c15be2c307923dd08b0fe7c52431ae6b - languageName: node - linkType: hard - -"regexpp@npm:^3.2.0": - version: 3.2.0 - resolution: "regexpp@npm:3.2.0" - checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 - languageName: node - linkType: hard - -"resolve-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-cwd@npm:3.0.0" - dependencies: - resolve-from: ^5.0.0 - checksum: 546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 - languageName: node - linkType: hard - -"resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f - languageName: node - linkType: hard - -"resolve-global@npm:1.0.0, resolve-global@npm:^1.0.0": - version: 1.0.0 - resolution: "resolve-global@npm:1.0.0" - dependencies: - global-dirs: ^0.1.1 - checksum: c4e11d33e84bde7516b824503ffbe4b6cce863d5ce485680fd3db997b7c64da1df98321b1fd0703b58be8bc9bc83bc96bd83043f96194386b45eb47229efb6b6 - languageName: node - linkType: hard - -"resolve.exports@npm:^1.1.0": - version: 1.1.0 - resolution: "resolve.exports@npm:1.1.0" - checksum: 52865af8edb088f6c7759a328584a5de6b226754f004b742523adcfe398cfbc4559515104bc2ae87b8e78b1e4de46c9baec400b3fb1f7d517b86d2d48a098a2d - languageName: node - linkType: hard - -"resolve@npm:^1.10.0, resolve@npm:^1.17.0, resolve@npm:^1.20.0, resolve@npm:^1.21.0": - version: 1.22.0 - resolution: "resolve@npm:1.22.0" - dependencies: - is-core-module: ^2.8.1 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: a2d14cc437b3a23996f8c7367eee5c7cf8149c586b07ca2ae00e96581ce59455555a1190be9aa92154785cf9f2042646c200d0e00e0bbd2b8a995a93a0ed3e4e - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.21.0#~builtin": - version: 1.22.0 - resolution: "resolve@patch:resolve@npm%3A1.22.0#~builtin::version=1.22.0&hash=07638b" - dependencies: - is-core-module: ^2.8.1 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: c79ecaea36c872ee4a79e3db0d3d4160b593f2ca16e031d8283735acd01715a203607e9ded3f91f68899c2937fa0d49390cddbe0fb2852629212f3cda283f4a7 - languageName: node - linkType: hard - -"resource-loader@npm:^3.0.1": - version: 3.0.1 - resolution: "resource-loader@npm:3.0.1" - dependencies: - mini-signals: ^1.2.0 - parse-uri: ^1.0.0 - checksum: f7d35f589db48d0bde92a66a6dc8b884ddcadec3ae43df07c3e0cd99b215cf3002347633e7516baebef868f1edd5a433fe2260fbbc5f16f84d4e37d8923de451 - languageName: node - linkType: hard - -"restore-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "restore-cursor@npm:3.1.0" - dependencies: - onetime: ^5.1.0 - signal-exit: ^3.0.2 - checksum: f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc - languageName: node - linkType: hard - -"rfdc@npm:^1.3.0": - version: 1.3.0 - resolution: "rfdc@npm:1.3.0" - checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 - languageName: node - linkType: hard - -"rimraf@npm:3.0.2, rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: ^7.1.3 - bin: - rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 - languageName: node - linkType: hard - -"rollup-plugin-styles@npm:4.0.0": - version: 4.0.0 - resolution: "rollup-plugin-styles@npm:4.0.0" - dependencies: - "@rollup/pluginutils": ^4.1.2 - "@types/cssnano": ^5.0.0 - cosmiconfig: ^7.0.1 - cssnano: ^5.0.15 - fs-extra: ^10.0.0 - icss-utils: ^5.1.0 - mime-types: ^2.1.34 - p-queue: ^6.6.2 - postcss: ^8.4.5 - postcss-modules-extract-imports: ^3.0.0 - postcss-modules-local-by-default: ^4.0.0 - postcss-modules-scope: ^3.0.0 - postcss-modules-values: ^4.0.0 - postcss-value-parser: ^4.2.0 - query-string: ^7.1.0 - resolve: ^1.21.0 - source-map-js: ^1.0.1 - tslib: ^2.3.1 - peerDependencies: - rollup: ^2.63.0 - checksum: 857e5fd6820aedf2f751878d2ef4fa40210094fb548d1baaa1dafbcdd7f7ea9775bac1c899b305bd27a23026d0694940651692a39901ac2ba2f8ce9f2bd10eb1 - languageName: node - linkType: hard - -"rollup-plugin-terser@npm:7.0.2": - version: 7.0.2 - resolution: "rollup-plugin-terser@npm:7.0.2" - dependencies: - "@babel/code-frame": ^7.10.4 - jest-worker: ^26.2.1 - serialize-javascript: ^4.0.0 - terser: ^5.0.0 - peerDependencies: - rollup: ^2.0.0 - checksum: af84bb7a7a894cd00852b6486528dfb8653cf94df4c126f95f389a346f401d054b08c46bee519a2ab6a22b33804d1d6ac6d8c90b1b2bf8fffb097eed73fc3c72 - languageName: node - linkType: hard - -"rollup@npm:2.67.2": - version: 2.67.2 - resolution: "rollup@npm:2.67.2" - dependencies: - fsevents: ~2.3.2 - dependenciesMeta: - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 9aca5251ba4b441064183cde2394b91567259002d68086bdd3906db66d55dd148ab27e57c51eb53830d7b9b813c2d4e834b7735d65e2a869780bc639d4a20c38 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: ^1.2.2 - checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d - languageName: node - linkType: hard - -"rxjs@npm:^7.5.2": - version: 7.5.2 - resolution: "rxjs@npm:7.5.2" - dependencies: - tslib: ^2.1.0 - checksum: daf1fe7289de500b25d822fd96cde3c138c7902e8bf0e6aa12a3e70847a5cabeeb4d677f10e19387e1db44b12c5b1be0ff5c79b8cd63ed6ce891d765e566cf4d - languageName: node - linkType: hard - -"safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 - languageName: node - linkType: hard - -"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 - languageName: node - linkType: hard - -"sass@npm:1.49.7": - version: 1.49.7 - resolution: "sass@npm:1.49.7" - dependencies: - chokidar: ">=3.0.0 <4.0.0" - immutable: ^4.0.0 - source-map-js: ">=0.6.2 <2.0.0" - bin: - sass: sass.js - checksum: 514d1abff594aa56afdc9eb7e40d1cbd9cf1ed6954c4e0ef494266d18965151c6f936e137cd118a138f7677a7bb98f2bbf2d1a485a3f5f66c78be0007506cc9b - languageName: node - linkType: hard - -"saxes@npm:^5.0.1": - version: 5.0.1 - resolution: "saxes@npm:5.0.1" - dependencies: - xmlchars: ^2.2.0 - checksum: 5636b55cf15f7cf0baa73f2797bf992bdcf75d1b39d82c0aa4608555c774368f6ac321cb641fd5f3d3ceb87805122cd47540da6a7b5960fe0dbdb8f8c263f000 - languageName: node - linkType: hard - -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0": - version: 5.7.1 - resolution: "semver@npm:5.7.1" - bin: - semver: ./bin/semver - checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf - languageName: node - linkType: hard - -"semver@npm:7.3.5, semver@npm:7.x, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5": - version: 7.3.5 - resolution: "semver@npm:7.3.5" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 5eafe6102bea2a7439897c1856362e31cc348ccf96efd455c8b5bc2c61e6f7e7b8250dc26b8828c1d76a56f818a7ee907a36ae9fb37a599d3d24609207001d60 - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 - languageName: node - linkType: hard - -"serialize-javascript@npm:^4.0.0": - version: 4.0.0 - resolution: "serialize-javascript@npm:4.0.0" - dependencies: - randombytes: ^2.1.0 - checksum: 3273b3394b951671fcf388726e9577021870dfbf85e742a1183fb2e91273e6101bdccea81ff230724f6659a7ee4cef924b0ff9baca32b79d9384ec37caf07302 - languageName: node - linkType: hard - -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 - languageName: node - linkType: hard - -"shebang-command@npm:^1.2.0": - version: 1.2.0 - resolution: "shebang-command@npm:1.2.0" - dependencies: - shebang-regex: ^1.0.0 - checksum: 9eed1750301e622961ba5d588af2212505e96770ec376a37ab678f965795e995ade7ed44910f5d3d3cb5e10165a1847f52d3348c64e146b8be922f7707958908 - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: ^3.0.0 - checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa - languageName: node - linkType: hard - -"shebang-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "shebang-regex@npm:1.0.0" - checksum: 404c5a752cd40f94591dfd9346da40a735a05139dac890ffc229afba610854d8799aaa52f87f7e0c94c5007f2c6af55bdcaeb584b56691926c5eaf41dc8f1372 - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 - languageName: node - linkType: hard - -"shell-quote@npm:^1.6.1": - version: 1.7.3 - resolution: "shell-quote@npm:1.7.3" - checksum: aca58e73a3a5d933d02e0bdddedc53ee14f7c2ec264f97ac915b9d4482d077a38e422aa664631d60a672cd3cdb4054eb2e6c0303f54882453dacb6483e482d34 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": - version: 3.0.6 - resolution: "signal-exit@npm:3.0.6" - checksum: b819ac81ba757af559dad0804233ae31bf6f054591cd8a671e9cbcf09f21c72ec3076fe87d1e04861f5b33b47d63f0694b568de99c99cd733ee2060515beb6d5 - languageName: node - linkType: hard - -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c - languageName: node - linkType: hard - -"slice-ansi@npm:^3.0.0": - version: 3.0.0 - resolution: "slice-ansi@npm:3.0.0" - dependencies: - ansi-styles: ^4.0.0 - astral-regex: ^2.0.0 - is-fullwidth-code-point: ^3.0.0 - checksum: 5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24 - languageName: node - linkType: hard - -"slice-ansi@npm:^4.0.0": - version: 4.0.0 - resolution: "slice-ansi@npm:4.0.0" - dependencies: - ansi-styles: ^4.0.0 - astral-regex: ^2.0.0 - is-fullwidth-code-point: ^3.0.0 - checksum: 4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756 - languageName: node - linkType: hard - -"slice-ansi@npm:^5.0.0": - version: 5.0.0 - resolution: "slice-ansi@npm:5.0.0" - dependencies: - ansi-styles: ^6.0.0 - is-fullwidth-code-point: ^4.0.0 - checksum: 7e600a2a55e333a21ef5214b987c8358fe28bfb03c2867ff2cbf919d62143d1812ac27b4297a077fdaf27a03da3678e49551c93e35f9498a3d90221908a1180e - languageName: node - linkType: hard - -"smart-buffer@npm:^4.1.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b - languageName: node - linkType: hard - -"socket.io-client@npm:4.3.2": - version: 4.3.2 - resolution: "socket.io-client@npm:4.3.2" - dependencies: - "@socket.io/component-emitter": ~3.0.0 - backo2: ~1.0.2 - debug: ~4.3.2 - engine.io-client: ~6.0.1 - parseuri: 0.0.6 - socket.io-parser: ~4.1.1 - checksum: e8c1c76848020f976958eed0a7630e1ed4a3108de75aa2cf7cb2c6babfcacff6d8fe1b70910b8b201a29e4965e238d520ac1868846c2872a948c9dd0e0761288 - languageName: node - linkType: hard - -"socket.io-parser@npm:~4.1.1": - version: 4.1.1 - resolution: "socket.io-parser@npm:4.1.1" - dependencies: - "@socket.io/component-emitter": ~3.0.0 - debug: ~4.3.1 - checksum: d762d01f372df393ef08fa409c62dffbc69bb9820eb78ee1d646e7679fff60a56366778d7bc78e044ffa4c1d85537d771292133506097d164ad3b9ff7f879ef1 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^6.0.0": - version: 6.1.1 - resolution: "socks-proxy-agent@npm:6.1.1" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.1 - socks: ^2.6.1 - checksum: 9a8a4f791bba0060315cf7291ca6f9db37d6fc280fd0860d73d8887d3efe4c22e823aa25a8d5375f6079279f8dc91b50c075345179bf832bfe3c7c26d3582e3c - languageName: node - linkType: hard - -"socks@npm:^2.6.1": - version: 2.6.1 - resolution: "socks@npm:2.6.1" - dependencies: - ip: ^1.1.5 - smart-buffer: ^4.1.0 - checksum: 2ca9d616e424f645838ebaabb04f85d94ea999e0f8393dc07f86c435af22ed88cb83958feeabd1bb7bc537c635ed47454255635502c6808a6df61af1f41af750 - languageName: node - linkType: hard - -"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.1": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c - languageName: node - linkType: hard - -"source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.20": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" - dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 - languageName: node - linkType: hard - -"source-map@npm:^0.5.0": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d - languageName: node - linkType: hard - -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - -"source-map@npm:^0.7.3, source-map@npm:~0.7.2": - version: 0.7.3 - resolution: "source-map@npm:0.7.3" - checksum: cd24efb3b8fa69b64bf28e3c1b1a500de77e84260c5b7f2b873f88284df17974157cc88d386ee9b6d081f08fdd8242f3fc05c953685a6ad81aad94c7393dedea - languageName: node - linkType: hard - -"spdx-correct@npm:^3.0.0": - version: 3.1.1 - resolution: "spdx-correct@npm:3.1.1" - dependencies: - spdx-expression-parse: ^3.0.0 - spdx-license-ids: ^3.0.0 - checksum: 77ce438344a34f9930feffa61be0eddcda5b55fc592906ef75621d4b52c07400a97084d8701557b13f7d2aae0cb64f808431f469e566ef3fe0a3a131dcb775a6 - languageName: node - linkType: hard - -"spdx-exceptions@npm:^2.1.0": - version: 2.3.0 - resolution: "spdx-exceptions@npm:2.3.0" - checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 - languageName: node - linkType: hard - -"spdx-expression-parse@npm:^3.0.0": - version: 3.0.1 - resolution: "spdx-expression-parse@npm:3.0.1" - dependencies: - spdx-exceptions: ^2.1.0 - spdx-license-ids: ^3.0.0 - checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde - languageName: node - linkType: hard - -"spdx-license-ids@npm:^3.0.0": - version: 3.0.11 - resolution: "spdx-license-ids@npm:3.0.11" - checksum: 1da1acb090257773e60b022094050e810ae9fec874dc1461f65dc0400cd42dd830ab2df6e64fb49c2db3dce386dd0362110780e1b154db7c0bb413488836aaeb - languageName: node - linkType: hard - -"split-on-first@npm:^1.0.0": - version: 1.1.0 - resolution: "split-on-first@npm:1.1.0" - checksum: 16ff85b54ddcf17f9147210a4022529b343edbcbea4ce977c8f30e38408b8d6e0f25f92cd35b86a524d4797f455e29ab89eb8db787f3c10708e0b47ebf528d30 - languageName: node - linkType: hard - -"split2@npm:^3.0.0": - version: 3.2.2 - resolution: "split2@npm:3.2.2" - dependencies: - readable-stream: ^3.0.0 - checksum: 8127ddbedd0faf31f232c0e9192fede469913aa8982aa380752e0463b2e31c2359ef6962eb2d24c125bac59eeec76873678d723b1c7ff696216a1cd071e3994a - languageName: node - linkType: hard - -"split@npm:^1.0.0": - version: 1.0.1 - resolution: "split@npm:1.0.1" - dependencies: - through: 2 - checksum: 12f4554a5792c7e98bb3e22b53c63bfa5ef89aa704353e1db608a55b51f5b12afaad6e4a8ecf7843c15f273f43cdadd67b3705cc43d48a75c2cf4641d51f7e7a - languageName: node - linkType: hard - -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 - languageName: node - linkType: hard - -"ssri@npm:^8.0.0, ssri@npm:^8.0.1": - version: 8.0.1 - resolution: "ssri@npm:8.0.1" - dependencies: - minipass: ^3.1.1 - checksum: bc447f5af814fa9713aa201ec2522208ae0f4d8f3bda7a1f445a797c7b929a02720436ff7c478fb5edc4045adb02b1b88d2341b436a80798734e2494f1067b36 - languageName: node - linkType: hard - -"stable@npm:^0.1.8": - version: 0.1.8 - resolution: "stable@npm:0.1.8" - checksum: 2ff482bb100285d16dd75cd8f7c60ab652570e8952c0bfa91828a2b5f646a0ff533f14596ea4eabd48bb7f4aeea408dce8f8515812b975d958a4cc4fa6b9dfeb - languageName: node - linkType: hard - -"stack-utils@npm:^2.0.3": - version: 2.0.5 - resolution: "stack-utils@npm:2.0.5" - dependencies: - escape-string-regexp: ^2.0.0 - checksum: 76b69da0f5b48a34a0f93c98ee2a96544d2c4ca2557f7eef5ddb961d3bdc33870b46f498a84a7c4f4ffb781df639840e7ebf6639164ed4da5e1aeb659615b9c7 - languageName: node - linkType: hard - -"strict-uri-encode@npm:^2.0.0": - version: 2.0.0 - resolution: "strict-uri-encode@npm:2.0.0" - checksum: eaac4cf978b6fbd480f1092cab8b233c9b949bcabfc9b598dd79a758f7243c28765ef7639c876fa72940dac687181b35486ea01ff7df3e65ce3848c64822c581 - languageName: node - linkType: hard - -"string-argv@npm:^0.3.1": - version: 0.3.1 - resolution: "string-argv@npm:0.3.1" - checksum: efbd0289b599bee808ce80820dfe49c9635610715429c6b7cc50750f0437e3c2f697c81e5c390208c13b5d5d12d904a1546172a88579f6ee5cbaaaa4dc9ec5cf - languageName: node - linkType: hard - -"string-length@npm:^4.0.1": - version: 4.0.2 - resolution: "string-length@npm:4.0.2" - dependencies: - char-regex: ^1.0.2 - strip-ansi: ^6.0.0 - checksum: ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 - languageName: node - linkType: hard - -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"string-width@npm:^5.0.0": - version: 5.1.0 - resolution: "string-width@npm:5.1.0" - dependencies: - eastasianwidth: ^0.2.0 - emoji-regex: ^9.2.2 - strip-ansi: ^7.0.1 - checksum: f9f84226bade99b044ece0f143ba0979bbd0b4bbb867ce2e785debf8abe99e9491382d584e51c32272ec2dc82f2fa93b212ef4fdd21c739dac8e78f7815b7dfb - languageName: node - linkType: hard - -"string.prototype.padend@npm:^3.0.0": - version: 3.1.3 - resolution: "string.prototype.padend@npm:3.1.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.1 - checksum: ef9ee0542c17975629bc6d21497e8faaa142d873e9f07fb65de2a955df402a1eac45cbed375045a759501e9d4ef80e589e11f0e12103c20df0770e47f6b59bc7 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimend@npm:1.0.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 17e5aa45c3983f582693161f972c1c1fa4bbbdf22e70e582b00c91b6575f01680dc34e83005b98e31abe4d5d29e0b21fcc24690239c106c7b2315aade6a898ac - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimstart@npm:1.0.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 3fb06818d3cccac5fa3f5f9873d984794ca0e9f6616fae6fcc745885d9efed4e17fe15f832515d9af5e16c279857fdbffdfc489ca4ed577811b017721b30302f - languageName: node - linkType: hard - -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: ~5.1.0 - checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b - languageName: node - linkType: hard - -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1": - version: 7.0.1 - resolution: "strip-ansi@npm:7.0.1" - dependencies: - ansi-regex: ^6.0.1 - checksum: 257f78fa433520e7f9897722731d78599cb3fce29ff26a20a5e12ba4957463b50a01136f37c43707f4951817a75e90820174853d6ccc240997adc5df8f966039 - languageName: node - linkType: hard - -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b - languageName: node - linkType: hard - -"strip-bom@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-bom@npm:4.0.0" - checksum: 9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 - languageName: node - linkType: hard - -"strip-final-newline@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-final-newline@npm:2.0.0" - checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 - languageName: node - linkType: hard - -"strip-indent@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-indent@npm:3.0.0" - dependencies: - min-indent: ^1.0.0 - checksum: 18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 - languageName: node - linkType: hard - -"stylehacks@npm:^5.0.1": - version: 5.0.1 - resolution: "stylehacks@npm:5.0.1" - dependencies: - browserslist: ^4.16.0 - postcss-selector-parser: ^6.0.4 - peerDependencies: - postcss: ^8.2.15 - checksum: 777dbed3987e04f713b9d74e08f66ab4c23c76cabb07c666c0ae9a06e58e8961063e17b5c7b9c23421b75e9caa9fb78084688e509624e57b19c92c174fbd964d - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac - languageName: node - linkType: hard - -"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: ^4.0.0 - checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a - languageName: node - linkType: hard - -"supports-color@npm:^8.0.0": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - -"supports-color@npm:^9.2.1": - version: 9.2.1 - resolution: "supports-color@npm:9.2.1" - checksum: 8a2bfeb64c1512d21a1a998c1f64acdaa85cf1f6a101627286548f19785524b329d7b28d567a28fc2d708fc7aba32f4c82a9b224f76b30a337a39d3e53418ff7 - languageName: node - linkType: hard - -"supports-hyperlinks@npm:^2.0.0": - version: 2.2.0 - resolution: "supports-hyperlinks@npm:2.2.0" - dependencies: - has-flag: ^4.0.0 - supports-color: ^7.0.0 - checksum: aef04fb41f4a67f1bc128f7c3e88a81b6cf2794c800fccf137006efe5bafde281da3e42e72bf9206c2fcf42e6438f37e3a820a389214d0a88613ca1f2d36076a - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae - languageName: node - linkType: hard - -"svgo@npm:^2.7.0": - version: 2.8.0 - resolution: "svgo@npm:2.8.0" - dependencies: - "@trysound/sax": 0.2.0 - commander: ^7.2.0 - css-select: ^4.1.3 - css-tree: ^1.1.3 - csso: ^4.2.0 - picocolors: ^1.0.0 - stable: ^0.1.8 - bin: - svgo: bin/svgo - checksum: b92f71a8541468ffd0b81b8cdb36b1e242eea320bf3c1a9b2c8809945853e9d8c80c19744267eb91cabf06ae9d5fff3592d677df85a31be4ed59ff78534fa420 - languageName: node - linkType: hard - -"symbol-tree@npm:^3.2.4": - version: 3.2.4 - resolution: "symbol-tree@npm:3.2.4" - checksum: 6e8fc7e1486b8b54bea91199d9535bb72f10842e40c79e882fc94fb7b14b89866adf2fd79efa5ebb5b658bc07fb459ccce5ac0e99ef3d72f474e74aaf284029d - languageName: node - linkType: hard - -"tar@npm:^6.0.2, tar@npm:^6.1.2": - version: 6.1.11 - resolution: "tar@npm:6.1.11" - dependencies: - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - minipass: ^3.0.0 - minizlib: ^2.1.1 - mkdirp: ^1.0.3 - yallist: ^4.0.0 - checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f - languageName: node - linkType: hard - -"temp-dir@npm:^2.0.0": - version: 2.0.0 - resolution: "temp-dir@npm:2.0.0" - checksum: cc4f0404bf8d6ae1a166e0e64f3f409b423f4d1274d8c02814a59a5529f07db6cd070a749664141b992b2c1af337fa9bb451a460a43bb9bcddc49f235d3115aa - languageName: node - linkType: hard - -"tempfile@npm:^3.0.0": - version: 3.0.0 - resolution: "tempfile@npm:3.0.0" - dependencies: - temp-dir: ^2.0.0 - uuid: ^3.3.2 - checksum: ebf07b7e580ab0a0673093d84007783f3d3bef9f82108e463c353974382296ba2d3309c8ac9574efba0dec8c99c27c5392f11b3de85d3f3a88a22850e9f782ef - languageName: node - linkType: hard - -"terminal-link@npm:^2.0.0": - version: 2.1.1 - resolution: "terminal-link@npm:2.1.1" - dependencies: - ansi-escapes: ^4.2.1 - supports-hyperlinks: ^2.0.0 - checksum: ce3d2cd3a438c4a9453947aa664581519173ea40e77e2534d08c088ee6dda449eabdbe0a76d2a516b8b73c33262fedd10d5270ccf7576ae316e3db170ce6562f - languageName: node - linkType: hard - -"terser@npm:^5.0.0": - version: 5.10.0 - resolution: "terser@npm:5.10.0" - dependencies: - commander: ^2.20.0 - source-map: ~0.7.2 - source-map-support: ~0.5.20 - peerDependencies: - acorn: ^8.5.0 - peerDependenciesMeta: - acorn: - optional: true - bin: - terser: bin/terser - checksum: 1080faeb6d5cd155bb39d9cc41d20a590eafc9869560d5285f255f6858604dcd135311e344188a106f87fedb12d096ad3799cfc2e65acd470b85d468b1c7bd4c - languageName: node - linkType: hard - -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" - dependencies: - "@istanbuljs/schema": ^0.1.2 - glob: ^7.1.4 - minimatch: ^3.0.4 - checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 - languageName: node - linkType: hard - -"text-extensions@npm:^1.0.0": - version: 1.9.0 - resolution: "text-extensions@npm:1.9.0" - checksum: 56a9962c1b62d39b2bcb369b7558ca85c1b55e554b38dfd725edcc0a1babe5815782a60c17ff6b839093b163dfebb92b804208aaaea616ec7571c8059ae0cf44 - languageName: node - linkType: hard - -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a - languageName: node - linkType: hard - -"throat@npm:^6.0.1": - version: 6.0.1 - resolution: "throat@npm:6.0.1" - checksum: 782d4171ee4e3cf947483ed2ff1af3e17cc4354c693b9d339284f61f99fbc401d171e0b0d2db3295bb7d447630333e9319c174ebd7ef315c6fb791db9675369c - languageName: node - linkType: hard - -"through2@npm:^2.0.0": - version: 2.0.5 - resolution: "through2@npm:2.0.5" - dependencies: - readable-stream: ~2.3.6 - xtend: ~4.0.1 - checksum: beb0f338aa2931e5660ec7bf3ad949e6d2e068c31f4737b9525e5201b824ac40cac6a337224856b56bd1ddd866334bbfb92a9f57cd6f66bc3f18d3d86fc0fe50 - languageName: node - linkType: hard - -"through2@npm:^4.0.0": - version: 4.0.2 - resolution: "through2@npm:4.0.2" - dependencies: - readable-stream: 3 - checksum: ac7430bd54ccb7920fd094b1c7ff3e1ad6edd94202e5528331253e5fde0cc56ceaa690e8df9895de2e073148c52dfbe6c4db74cacae812477a35660090960cc0 - languageName: node - linkType: hard - -"through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.8": - version: 2.3.8 - resolution: "through@npm:2.3.8" - checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd - languageName: node - linkType: hard - -"timsort@npm:^0.3.0": - version: 0.3.0 - resolution: "timsort@npm:0.3.0" - checksum: 1a66cb897dacabd7dd7c91b7e2301498ca9e224de2edb9e42d19f5b17c4b6dc62a8d4cbc64f28be82aaf1541cb5a78ab49aa818f42a2989ebe049a64af731e2a - languageName: node - linkType: hard - -"tinymce@npm:5.10.1": - version: 5.10.1 - resolution: "tinymce@npm:5.10.1" - checksum: 6a518c0e9c8f7d9ca22deb73d777dece4aeabe9361b409c5ca7dbb62607a284550c9d0bf77dffa5d4b21a831b56c2f08c365f8c35d958e374d5beacc1a717753 - languageName: node - linkType: hard - -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 - languageName: node - linkType: hard - -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed - languageName: node - linkType: hard - -"tough-cookie@npm:^4.0.0": - version: 4.0.0 - resolution: "tough-cookie@npm:4.0.0" - dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.1.2 - checksum: 0891b37eb7d17faa3479d47f0dce2e3007f2583094ad272f2670d120fbcc3df3b0b0a631ba96ecad49f9e2297d93ff8995ce0d3292d08dd7eabe162f5b224d69 - languageName: node - linkType: hard - -"tr46@npm:^2.1.0": - version: 2.1.0 - resolution: "tr46@npm:2.1.0" - dependencies: - punycode: ^2.1.1 - checksum: ffe6049b9dca3ae329b059aada7f515b0f0064c611b39b51ff6b53897e954650f6f63d9319c6c008d36ead477c7b55e5f64c9dc60588ddc91ff720d64eb710b3 - languageName: node - linkType: hard - -"trim-newlines@npm:^3.0.0": - version: 3.0.1 - resolution: "trim-newlines@npm:3.0.1" - checksum: b530f3fadf78e570cf3c761fb74fef655beff6b0f84b29209bac6c9622db75ad1417f4a7b5d54c96605dcd72734ad44526fef9f396807b90839449eb543c6206 - languageName: node - linkType: hard - -"ts-jest@npm:27.1.3": - version: 27.1.3 - resolution: "ts-jest@npm:27.1.3" - dependencies: - bs-logger: 0.x - fast-json-stable-stringify: 2.x - jest-util: ^27.0.0 - json5: 2.x - lodash.memoize: 4.x - make-error: 1.x - semver: 7.x - yargs-parser: 20.x - peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@types/jest": ^27.0.0 - babel-jest: ">=27.0.0 <28" - esbuild: ~0.14.0 - jest: ^27.0.0 - typescript: ">=3.8 <5.0" - peerDependenciesMeta: - "@babel/core": - optional: true - "@types/jest": - optional: true - babel-jest: - optional: true - esbuild: - optional: true - bin: - ts-jest: cli.js - checksum: eb54e5b8fc5f06e4cc20ecec7891201ddc78a3537d5eb3775e29ffbc7e83fd2a68f91db801b6a8c820c872060b24dc41fb6decac800b76256d3cdda6520b5c4f - languageName: node - linkType: hard - -"ts-node@npm:^10.4.0": - version: 10.4.0 - resolution: "ts-node@npm:10.4.0" - dependencies: - "@cspotcode/source-map-support": 0.7.0 - "@tsconfig/node10": ^1.0.7 - "@tsconfig/node12": ^1.0.7 - "@tsconfig/node14": ^1.0.0 - "@tsconfig/node16": ^1.0.2 - acorn: ^8.4.1 - acorn-walk: ^8.1.1 - arg: ^4.1.0 - create-require: ^1.1.0 - diff: ^4.0.1 - make-error: ^1.1.1 - yn: 3.1.1 - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - bin: - ts-node: dist/bin.js - ts-node-cwd: dist/bin-cwd.js - ts-node-script: dist/bin-script.js - ts-node-transpile-only: dist/bin-transpile.js - ts-script: dist/bin-script-deprecated.js - checksum: 3933ac0a937d33c45e04a6750fcdd3e765eb2897d1da1307cd97ac52af093bcfb632ec0453a75000a65c8b5b7bdb32b1077050a186dcc556e62657cb592e6d49 - languageName: node - linkType: hard - -"tslib@npm:2.3.1, tslib@npm:^2.1.0, tslib@npm:^2.3.1": - version: 2.3.1 - resolution: "tslib@npm:2.3.1" - checksum: de17a98d4614481f7fcb5cd53ffc1aaf8654313be0291e1bfaee4b4bb31a20494b7d218ff2e15017883e8ea9626599b3b0e0229c18383ba9dce89da2adf15cb9 - languageName: node - linkType: hard - -"tslib@npm:^1.8.1": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd - languageName: node - linkType: hard - -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: ^1.8.1 - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 1843f4c1b2e0f975e08c4c21caa4af4f7f65a12ac1b81b3b8489366826259323feb3fc7a243123453d2d1a02314205a7634e048d4a8009921da19f99755cdc48 - languageName: node - linkType: hard - -"type-check@npm:^0.4.0, type-check@npm:~0.4.0": - version: 0.4.0 - resolution: "type-check@npm:0.4.0" - dependencies: - prelude-ls: ^1.2.1 - checksum: ec688ebfc9c45d0c30412e41ca9c0cdbd704580eb3a9ccf07b9b576094d7b86a012baebc95681999dd38f4f444afd28504cb3a89f2ef16b31d4ab61a0739025a - languageName: node - linkType: hard - -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: dd3b1495642731bc0e1fc40abe5e977e0263005551ac83342ecb6f4f89551d106b368ec32ad3fb2da19b3bd7b2d1f64330da2ea9176d8ddbfe389fb286eb5124 - languageName: node - linkType: hard - -"type-detect@npm:4.0.8": - version: 4.0.8 - resolution: "type-detect@npm:4.0.8" - checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 - languageName: node - linkType: hard - -"type-fest@npm:^0.18.0": - version: 0.18.1 - resolution: "type-fest@npm:0.18.1" - checksum: e96dcee18abe50ec82dab6cbc4751b3a82046da54c52e3b2d035b3c519732c0b3dd7a2fa9df24efd1a38d953d8d4813c50985f215f1957ee5e4f26b0fe0da395 - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 - languageName: node - linkType: hard - -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 - languageName: node - linkType: hard - -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f - languageName: node - linkType: hard - -"type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 - languageName: node - linkType: hard - -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: ^1.0.0 - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 - languageName: node - linkType: hard - -"typescript@npm:4.4.4": - version: 4.4.4 - resolution: "typescript@npm:4.4.4" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 89ecb8436bb48ef5594d49289f5f89103071716b6e4844278f4fb3362856e31203e187a9c76d205c3f0b674d221a058fd28310dbcbcf5d95e9a57229bb5203f1 - languageName: node - linkType: hard - -"typescript@npm:^4.4.3": - version: 4.5.5 - resolution: "typescript@npm:4.5.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 506f4c919dc8aeaafa92068c997f1d213b9df4d9756d0fae1a1e7ab66b585ab3498050e236113a1c9e57ee08c21ec6814ca7a7f61378c058d79af50a4b1f5a5e - languageName: node - linkType: hard - -"typescript@patch:typescript@4.4.4#~builtin": - version: 4.4.4 - resolution: "typescript@patch:typescript@npm%3A4.4.4#~builtin::version=4.4.4&hash=493e53" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: bd629ad0da4a15d79aaad56baf3ee7d96f6a181760d430ae77f8c5325df7bffd9edee57544a3970e3651e8b796fe03a5838a7eb39c6d46cc3866c0b23d36a0dd - languageName: node - linkType: hard - -"typescript@patch:typescript@^4.4.3#~builtin": - version: 4.5.5 - resolution: "typescript@patch:typescript@npm%3A4.5.5#~builtin::version=4.5.5&hash=493e53" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: c05c318d79c690f101d7ffb34cd6c7d6bbd884d3af9cefe7749ad0cd6be43c7082f098280982ca945dcba23fde34a08fed9602bb26540936baf8c0520727d3ba - languageName: node - linkType: hard - -"uglify-js@npm:^3.1.4": - version: 3.14.5 - resolution: "uglify-js@npm:3.14.5" - bin: - uglifyjs: bin/uglifyjs - checksum: 0330eb11a36f4181b6d9a00336355989bfad9dd2203049fc63a59454b0d12337612272ad011bc571b9a382bf74d829ca20409ebfe089e38edb26cfc06bfa2cc9 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.1": - version: 1.0.1 - resolution: "unbox-primitive@npm:1.0.1" - dependencies: - function-bind: ^1.1.1 - has-bigints: ^1.0.1 - has-symbols: ^1.0.2 - which-boxed-primitive: ^1.0.2 - checksum: 89d950e18fb45672bc6b3c961f1e72c07beb9640c7ceed847b571ba6f7d2af570ae1a2584cfee268b9d9ea1e3293f7e33e0bc29eaeb9f8e8a0bab057ff9e6bba - languageName: node - linkType: hard - -"unique-filename@npm:^1.1.1": - version: 1.1.1 - resolution: "unique-filename@npm:1.1.1" - dependencies: - unique-slug: ^2.0.0 - checksum: cf4998c9228cc7647ba7814e255dec51be43673903897b1786eff2ac2d670f54d4d733357eb08dea969aa5e6875d0e1bd391d668fbdb5a179744e7c7551a6f80 - languageName: node - linkType: hard - -"unique-slug@npm:^2.0.0": - version: 2.0.2 - resolution: "unique-slug@npm:2.0.2" - dependencies: - imurmurhash: ^0.1.4 - checksum: 5b6876a645da08d505dedb970d1571f6cebdf87044cb6b740c8dbb24f0d6e1dc8bdbf46825fd09f994d7cf50760e6f6e063cfa197d51c5902c00a861702eb75a - languageName: node - linkType: hard - -"universalify@npm:^0.1.2": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff - languageName: node - linkType: hard - -"universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: ^2.1.0 - checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 - languageName: node - linkType: hard - -"url@npm:^0.11.0": - version: 0.11.0 - resolution: "url@npm:0.11.0" - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - checksum: 50d100d3dd2d98b9fe3ada48cadb0b08aa6be6d3ac64112b867b56b19be4bfcba03c2a9a0d7922bfd7ac17d4834e88537749fe182430dfd9b68e520175900d90 - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 - languageName: node - linkType: hard - -"uuid@npm:^3.3.2": - version: 3.4.0 - resolution: "uuid@npm:3.4.0" - bin: - uuid: ./bin/uuid - checksum: 58de2feed61c59060b40f8203c0e4ed7fd6f99d42534a499f1741218a1dd0c129f4aa1de797bcf822c8ea5da7e4137aa3673431a96dae729047f7aca7b27866f - languageName: node - linkType: hard - -"uuid@npm:^8.3.2": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df - languageName: node - linkType: hard - -"v8-compile-cache@npm:^2.0.3": - version: 2.3.0 - resolution: "v8-compile-cache@npm:2.3.0" - checksum: adb0a271eaa2297f2f4c536acbfee872d0dd26ec2d76f66921aa7fc437319132773483344207bdbeee169225f4739016d8d2dbf0553913a52bb34da6d0334f8e - languageName: node - linkType: hard - -"v8-to-istanbul@npm:^8.1.0": - version: 8.1.1 - resolution: "v8-to-istanbul@npm:8.1.1" - dependencies: - "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^1.6.0 - source-map: ^0.7.3 - checksum: 54ce92bec2727879626f623d02c8d193f0c7e919941fa373ec135189a8382265117f5316ea317a1e12a5f9c13d84d8449052a731fe3306fa4beaafbfa4cab229 - languageName: node - linkType: hard - -"validate-npm-package-license@npm:^3.0.1": - version: 3.0.4 - resolution: "validate-npm-package-license@npm:3.0.4" - dependencies: - spdx-correct: ^3.0.0 - spdx-expression-parse: ^3.0.0 - checksum: 35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad - languageName: node - linkType: hard - -"w3c-hr-time@npm:^1.0.2": - version: 1.0.2 - resolution: "w3c-hr-time@npm:1.0.2" - dependencies: - browser-process-hrtime: ^1.0.0 - checksum: ec3c2dacbf8050d917bbf89537a101a08c2e333b4c19155f7d3bedde43529d4339db6b3d049d9610789cb915f9515f8be037e0c54c079e9d4735c50b37ed52b9 - languageName: node - linkType: hard - -"w3c-xmlserializer@npm:^2.0.0": - version: 2.0.0 - resolution: "w3c-xmlserializer@npm:2.0.0" - dependencies: - xml-name-validator: ^3.0.0 - checksum: ae25c51cf71f1fb2516df1ab33a481f83461a117565b95e3d0927432522323f93b1b2846cbb60196d337970c421adb604fc2d0d180c6a47a839da01db5b9973b - languageName: node - linkType: hard - -"walker@npm:^1.0.7": - version: 1.0.8 - resolution: "walker@npm:1.0.8" - dependencies: - makeerror: 1.0.12 - checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c - languageName: node - linkType: hard - -"webidl-conversions@npm:^5.0.0": - version: 5.0.0 - resolution: "webidl-conversions@npm:5.0.0" - checksum: ccf1ec2ca7c0b5671e5440ace4a66806ae09c49016ab821481bec0c05b1b82695082dc0a27d1fe9d804d475a408ba0c691e6803fd21be608e710955d4589cd69 - languageName: node - linkType: hard - -"webidl-conversions@npm:^6.1.0": - version: 6.1.0 - resolution: "webidl-conversions@npm:6.1.0" - checksum: 1f526507aa491f972a0c1409d07f8444e1d28778dfa269a9971f2e157182f3d496dc33296e4ed45b157fdb3bf535bb90c90bf10c50dcf1dd6caacb2a34cc84fb - languageName: node - linkType: hard - -"whatwg-encoding@npm:^1.0.5": - version: 1.0.5 - resolution: "whatwg-encoding@npm:1.0.5" - dependencies: - iconv-lite: 0.4.24 - checksum: 5be4efe111dce29ddee3448d3915477fcc3b28f991d9cf1300b4e50d6d189010d47bca2f51140a844cf9b726e8f066f4aee72a04d687bfe4f2ee2767b2f5b1e6 - languageName: node - linkType: hard - -"whatwg-mimetype@npm:^2.3.0": - version: 2.3.0 - resolution: "whatwg-mimetype@npm:2.3.0" - checksum: 23eb885940bcbcca4ff841c40a78e9cbb893ec42743993a42bf7aed16085b048b44b06f3402018931687153550f9a32d259dfa524e4f03577ab898b6965e5383 - languageName: node - linkType: hard - -"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": - version: 8.7.0 - resolution: "whatwg-url@npm:8.7.0" - dependencies: - lodash: ^4.7.0 - tr46: ^2.1.0 - webidl-conversions: ^6.1.0 - checksum: a87abcc6cefcece5311eb642858c8fdb234e51ec74196bfacf8def2edae1bfbffdf6acb251646ed6301f8cee44262642d8769c707256125a91387e33f405dd1e - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - 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 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - -"which@npm:^1.2.9": - version: 1.3.1 - resolution: "which@npm:1.3.1" - dependencies: - isexe: ^2.0.0 - bin: - which: ./bin/which - checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 - languageName: node - linkType: hard - -"which@npm:^2.0.1, which@npm:^2.0.2": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: ^2.0.0 - bin: - node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 - languageName: node - linkType: hard - -"wide-align@npm:^1.1.2": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: ^1.0.2 || 2 || 3 || 4 - checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 - languageName: node - linkType: hard - -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f - languageName: node - linkType: hard - -"wordwrap@npm:^1.0.0": - version: 1.0.0 - resolution: "wordwrap@npm:1.0.0" - checksum: 2a44b2788165d0a3de71fd517d4880a8e20ea3a82c080ce46e294f0b68b69a2e49cff5f99c600e275c698a90d12c5ea32aff06c311f0db2eb3f1201f3e7b2a04 - languageName: node - linkType: hard - -"wrap-ansi@npm:^6.2.0": - version: 6.2.0 - resolution: "wrap-ansi@npm:6.2.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a - languageName: node - linkType: hard - -"wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"write-file-atomic@npm:^3.0.0": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" - dependencies: - imurmurhash: ^0.1.4 - is-typedarray: ^1.0.0 - signal-exit: ^3.0.2 - typedarray-to-buffer: ^3.1.5 - checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 - languageName: node - linkType: hard - -"ws@npm:^7.4.6": - version: 7.5.6 - resolution: "ws@npm:7.5.6" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 0c2ffc9a539dd61dd2b00ff6cc5c98a3371e2521011fe23da4b3578bb7ac26cbdf7ca8a68e8e08023c122ae247013216dde2a20c908de415a6bcc87bdef68c87 - languageName: node - linkType: hard - -"ws@npm:~8.2.3": - version: 8.2.3 - resolution: "ws@npm:8.2.3" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: c869296ccb45f218ac6d32f8f614cd85b50a21fd434caf11646008eef92173be53490810c5c23aea31bc527902261fbfd7b062197eea341b26128d4be56a85e4 - languageName: node - linkType: hard - -"xml-name-validator@npm:^3.0.0": - version: 3.0.0 - resolution: "xml-name-validator@npm:3.0.0" - checksum: b3ac459afed783c285bb98e4960bd1f3ba12754fd4f2320efa0f9181ca28928c53cc75ca660d15d205e81f92304419afe94c531c7cfb3e0649aa6d140d53ecb0 - languageName: node - linkType: hard - -"xml@npm:^1.0.1": - version: 1.0.1 - resolution: "xml@npm:1.0.1" - checksum: 11b5545ef3f8fec3fa29ce251f50ad7b6c97c103ed4d851306ec23366f5fa4699dd6a942262df52313a0cd1840ab26256da253c023bad3309d8ce46fe6020ca0 - languageName: node - linkType: hard - -"xmlchars@npm:^2.2.0": - version: 2.2.0 - resolution: "xmlchars@npm:2.2.0" - checksum: 8c70ac94070ccca03f47a81fcce3b271bd1f37a591bf5424e787ae313fcb9c212f5f6786e1fa82076a2c632c0141552babcd85698c437506dfa6ae2d58723062 - languageName: node - linkType: hard - -"xmlhttprequest-ssl@npm:~2.0.0": - version: 2.0.0 - resolution: "xmlhttprequest-ssl@npm:2.0.0" - checksum: 1e98df67f004fec15754392a131343ea92e6ab5ac4d77e842378c5c4e4fd5b6a9134b169d96842cc19422d77b1606b8df84a5685562b3b698cb68441636f827e - languageName: node - linkType: hard - -"xtend@npm:~4.0.1": - version: 4.0.2 - resolution: "xtend@npm:4.0.2" - checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a - languageName: node - linkType: hard - -"y18n@npm:^5.0.5": - version: 5.0.8 - resolution: "y18n@npm:5.0.8" - checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 - languageName: node - linkType: hard - -"yaml@npm:^1.10.0, yaml@npm:^1.10.2": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f - languageName: node - linkType: hard - -"yargs-parser@npm:20.x, yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": - version: 20.2.9 - resolution: "yargs-parser@npm:20.2.9" - checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 - languageName: node - linkType: hard - -"yargs-parser@npm:^21.0.0": - version: 21.0.0 - resolution: "yargs-parser@npm:21.0.0" - checksum: 1e205fca1cb7a36a1585e2b94a64e641c12741b53627d338e12747f4dca3c3610cdd9bb235040621120548dd74c3ef03a8168d52a1eabfedccbe4a62462b6731 - languageName: node - linkType: hard - -"yargs@npm:17.3.1, yargs@npm:^17.0.0": - version: 17.3.1 - resolution: "yargs@npm:17.3.1" - dependencies: - cliui: ^7.0.2 - 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.0.0 - checksum: 64fc2e32c56739f1d14d2d24acd17a6944c3c8e3e3558f09fc1953ac112e868cc16013d282886b9d5be22187f8b9ed4f60741a6b1011f595ce2718805a656852 - languageName: node - linkType: hard - -"yargs@npm:^16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" - dependencies: - cliui: ^7.0.2 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.0 - y18n: ^5.0.5 - yargs-parser: ^20.2.2 - checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 - languageName: node - linkType: hard - -"yeast@npm:0.1.2": - version: 0.1.2 - resolution: "yeast@npm:0.1.2" - checksum: 81a250b69f601fed541e9518eb2972e75631dd81231689503d7f288612d4eec793b29c208d6807fd6bfc4c2a43614d0c6db233739a4ae6223e244aaed6a885c0 - languageName: node - linkType: hard - -"yn@npm:3.1.1": - version: 3.1.1 - resolution: "yn@npm:3.1.1" - checksum: 2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6 - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 - languageName: node - linkType: hard diff --git a/yarn.lock.license b/yarn.lock.license deleted file mode 100644 index 31803f36..00000000 --- a/yarn.lock.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT \ No newline at end of file
  • Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.